The world has changed since this ran
When GCNet was written, this was genuinely hard. The transformer paper was still seven months away. There was no CLIP, no GPT you could prompt, no foundation model that had ever been shown an image. If you wanted a machine to describe a moving picture, nobody handed you one. You assembled it yourself, layer by layer, and trained it from a pile of GIFs on a single graphics card in your room.
To place the moment: the first commit lands in late November 2016. That summer, Pokemon GO had emptied offices into the streets and the iPhone 7 had just killed the headphone jack. The most impressive artificial intelligence on the planet had beaten a human champion at Go that spring, and then it could do nothing else with itself.
That ceiling was narrow. That fall, Google had quietly moved Translate onto a neural network. DeepMind had taught a model to generate raw audio one sample at a time. The frontier of teaching a machine to describe a picture was a convolutional network handing off to a recurrent one, the lineage GCNet was born into. PyTorch did not exist yet; it would arrive a couple of months later, so the tools were Theano and a young TensorFlow, stitched together with Keras. There was no model you could simply ask. You chose a problem, gathered the few pieces that existed, and built the rest by hand.
GCNet walks that path in its own way. Take a convolutional network already fluent in photographs and use it as eyes. Take word vectors distilled from 840 billion tokens of text and use them as a vocabulary. Wire the two together with recurrent memory, expand every caption into hundreds of next-word guesses, and hope the gradients behaved. GCNet did all of that, and it captioned GIFs it had never seen well enough to make you smile.
Today a multimodal model does the same thing in a single call, with no training, and describes the GIF better than GCNet ever could. That is not a defeat. It is the whole point of what I write about now. The distance between wanting something from a machine and getting it keeps collapsing. GCNet is a fossil from the last stretch where you still had to build the bridge by hand, and building it by hand is how I came to understand the thing that would later fit inside a single line of a prompt.