Qual é a diferença entre Protocol Buffers e Flatbuffers?

Ambos são bibliotecas de serialização e são desenvolvidos por desenvolvedores do Google. Existe alguma grande diferença entre eles? É muito trabalhoso converter código usando Buffers de protocolo para usar FlatBuffers