Als Datensatz wurde der COCO Datensatz von Microsoft verwendet. Hier liegen zu den Bildern 5 verschiedene Beschreibungen vor, mit denen ein Modell lernen soll, eine Szene zu verstehen. Um diese Daten zum Training zu verwenden, wurde zunächst ein Dataloader implementiert. Durch diesen werden Bilder zufällig vorverarbeitet. Dazu zählt ein horizontales Spiegeln, ein Zuschneiden, das Skalieren auf die richtige Größe, Normalisieren und das Umwandeln in einen Tensor.
Neben den Bildern müssen auch die zugehörigen Bildunterschriften vorverarbeitet werden. Dazu wird zunächst ein Tokenizer implementiert, der einen Satz in einzelne Worte unterteilt und sie einer Liste anhängt. Danach werden diese Worte der Liste ersetzt durch Integer Zahlen, die die Wörter in der Dictionary repräsentieren. In dem aus den Beschriftungen erstellten Dictionary existieren insgesamt 8855 verschiedene Worte.
Das neuronale Netz besteht aus einem Encoder und einem Decoder. Der Encoder ist dafür zuständig, Features aus dem Bild zu extrahieren und als Featurevektor auszugeben. Da er für die Analyse von Bildern zuständig ist, wurde ein CNN als Featureextraktor gewählt. Der Decoder nutzt diesen erstellten Featurevektor und erstellt eine Beschreibung. Hier wurde ein rekurrentes neuronales Netz genutzt. Im Trainingsprozess konnte eindeutig ein Lernfortschritt erkannt werden.