Ich habe die Erzeugung von Bildunterschriften mit Chainer implementiert. Wenn Sie ein Bild eingeben, wird dessen Beschreibung generiert. Der Quellcode ist unten. https://github.com/dsanno/chainer-image-caption
Ich habe den Algorithmus im folgenden Artikel verwendet. Show and tell: A neural image caption generator
Einige Leute haben die Untertitelgenerierung bereits in Chainer implementiert, daher habe ich auch darauf hingewiesen. Image caption generation by CNN and LSTM ~ Satoshi's Blog from Bloomington
Das in diesem Artikel verwendete Modell zur Erzeugung von Untertiteln ist grob in drei Netzwerke unterteilt.
--Konvertieren Sie das Bild in den Vektor $ {\ rm CNN} $ $ {\ rm CNN} $ enthält GoogleNet und VGG_ILSVRC_19_layers Verwenden Sie ein vorhandenes Modell für die Bildklassifizierung (z. B. / 3785162f95cd2d5fee77 # file-readme-md). --Wort, das $ W_e $ einbettet --Geben Sie einen Vektor ein und geben Sie die Wahrscheinlichkeit des Auftretens des nächsten Wortes $ {\ rm LSTM} $ aus
Da der GPU-Speicher nicht ausreichte, wenn die Implementierung so war, wie sie in der Veröffentlichung beschrieben wurde, habe ich sie geändert und implementiert.
Ich werde anhand des Modells in den folgenden Abhandlungen erklären, aber ich denke, es ist nicht schwierig, es durch das tatsächlich verwendete Modell zu ersetzen.
Die Lernziele sind $ W_e $ und $ {\ rm LSTM} $. $ {\ rm CNN} $ verwendet die trainierten Parameter so wie sie sind.
Die Trainingsdaten sind das Bild $ I $ und die Wortfolge $ \ {S_t \} (t = 0 ... N) $. $ S_0 $ ist jedoch das Startsymbol der Anweisung \ <S > und $ S_N $ ist das Endsymbol \ </ S >. Lerne wie folgt.
Negative Log-Wahrscheinlichkeit als Kostenfunktion im Papier
L(I,S)=-\sum_{t=1}^{N}\log p_t(S_t)
Ich habe verwendet, aber in meiner Implementierung habe ich Softmax-Kreuzentropie verwendet. In dem Artikel wurde die Parameteraktualisierung mit SGD ohne Momentum durchgeführt, aber in meiner Implementierung habe ich Adam verwendet (Parameter ist der empfohlene Wert von Adam-Papier). .. Ich habe auch versucht, es mit logarithmischer Wahrscheinlichkeit und SGD zu implementieren, aber es scheint, dass es keinen Wert gibt, nur weil die Konvergenz des Lernens verlangsamt wird, aber ich verstehe nicht, warum es in das Papier übernommen wird. Ich habe auch Aussetzer wie in der Zeitung verwendet. In dem Artikel erwähnte ich, dass "Ensembling-Modelle" verwendet wurden, aber ich habe es nicht implementiert, weil ich die spezifische Implementierungsmethode nicht kannte.
Bei der Erzeugung einer Beschriftung unter Verwendung eines trainierten Modells wird die Wahrscheinlichkeit des Auftretens von Wörtern wie unten gezeigt in der Reihenfolge von Anfang an berechnet, und die Wortfolge mit dem höchsten Produkt der Wahrscheinlichkeit des Auftretens von Wörtern wird als Beschriftung verwendet.
In dieser Implementierung setzen wir $ M = 20 $
Für die Trainingsdaten haben wir den Bilddatensatz mit Annotation of MSCOCO verwendet. Anstelle der von MSCOCO verteilten Daten habe ich jedoch die auf den folgenden Websites verteilten Daten verwendet. Die mit VGG_ILSVRC_19_layers aus dem Bild extrahierten Merkmalsvektordaten und die Anmerkungswortzeichenfolgendaten werden auf dieser Site verteilt. Durch die Verwendung dieser Daten konnten wir die Mühe des Extrahierens des Merkmalsvektors aus dem Bild und die Mühe des Vorverarbeitens von Anmerkungen (Teilen des Satzes in Wörter) sparen.
Deep Visual-Semantic Alignments for Generating Image Descriptions
Laut der folgenden Website scheinen die Annotation-Daten von MSCOCO aufgrund starker Notationsschwankungen schwierig zu verarbeiten zu sein (Sätze beginnen mit Groß- oder Kleinschreibung, mit oder ohne Punkte).
Von den in den Trainingsdaten enthaltenen Wörtern wurden nur die Wörter verwendet, die fünfmal oder öfter vorkommen, und die anderen wurden als unbekannte Wörter gelernt.
Es scheint, dass es Indikatoren wie BLEU, METEOR und CIDER gibt, um die generierten Untertitel zu bewerten, aber diesmal habe ich die Indikatoren nicht berechnet.
Bildunterschriften wurden mit gemeinfreien Bildern erstellt, die von PublicDomainPictures.net heruntergeladen wurden. Platzieren Sie die Top 5 der generierten Zeichenfolgen.
Einige wurden korrekt generiert, während andere eindeutig falsch waren.
Recommended Posts