Implementieren Sie neuronale Bildunterschriftenmodelle mit PyTorch basierend auf der Encoder-Decoder-Architektur.
Der Datensatz ist Flikr8k, der klein genug ist, um das Budget zu berechnen und schnell Ergebnisse zu erhalten. Der Datensatz enthält 8091 Bilder mit 5 Bildunterschriften für jedes Bild. Daher besteht die Gefahr einer Überanpassung, wenn das Modell zu komplex ist. Die offizielle Quelle ist defekt, weitere Links zum Datensatz könnten hier und hier sein
Die Modellarchitektur wird wie folgt beschrieben. Das Encoder-Netzwerk für das Bild ist Resnet-101 (kann von Torchvision geladen werden). Der Decoder ist im Grunde ein LSTM-basiertes Sprachmodell, mit dem Kontextvektor (codiertes Bildmerkmal) als anfänglichem verborgenen/Zellenzustand des LSTM [1]. Das aufmerksame Modell ist ebenfalls implementiert [2].
Das Modell wird von SGD mit Schwung trainiert. Die Lernrate beginnt bei 0,01 und wird durch 10 geteilt, da sie auf einem Plateau feststeckt. Es werden der Impuls von 0,9 und der Gewichtsabfall von 0,001 verwendet.
Das Modell [1] kann mit einem BLEU-1-Testergebnis von 35,7 relativ vernünftige Beschreibungen erhalten.
Bilder | Bildunterschriften |
---|---|
Zwei Hunde spielen im Gras. | |
Eine Person fährt im Boot Kajak. | |
Ein Junge planscht in einem Pool. | |
Zwei Personen sitzen auf einem Steg am Wasser. | |
Ein Fußballspieler in roter Uniform läuft mit einem Fußball vor einer Menschenmenge. | |
Ein Snowboarder springt von einem Hügel. | |
Ein brauner Hund spielt mit einem Ball im Sand. | |
Ein Junge in einem blauen Hemd rennt durch eine Wiese. | |
Eine Gruppe von Menschen in bunten Kostümen. |
Pytorch 0.4.1
[1] Show and Tell: Ein Generator für neuronale Bildunterschriften (https://arxiv.org/abs/1411.4555)
[2] Zeigen, teilnehmen und erzählen: Generierung neuronaler Bildunterschriften mit visueller Aufmerksamkeit (https://arxiv.org/abs/1502.03044)