イラストからのコメント生成チュートリアル

 イラストからのコメント生成チュートリアル

nico-illustデータセット( https://dmv.nico/ja/nico-opendata/ )を用いて、イラストを入力すると適切なコメントを生成するモデルを学習する。

niconico超コメント生成ハッカソン
( https://chokaigi2016-dmv.connpass.com/event/28524/ )のチュートリアル資料です。

A82e268e52c06ad69b83f1a251c682d4?s=128

Keisuke OGAKI

March 21, 2016
Tweet

Transcript

  1. イラストからのコメント生成チュートリアル コメント生成ハッカソン גࣜձࣾυϫϯΰ େ֞ܚհ

  2. Ipython ϋϯζΦϯ https://github.com/ nico-opendata/ illust_comment_search 2

  3. લฤը૾ಛ௃ྔͷ࿩

  4. Nico-illustλάೝࣝ 4

  5. Nico-illustλάೝࣝ •  ࢖ͬͯΔϞσϧ͸ɺVGGͷ Ұ൪খ͍͞Ϟσϧ •  λά͸ෳ਺͚ͭΒΕΔ΋ͷ Ͱ͋ΓɺϚϧνϥϕϧ໰୊ •  ग़ݱස౓্Ґͷ͏ͪɺΩϟ ϥΫλ໊ɾ࡞඼໊Λද͢΋

    ͷΛ400λά༻ҙ •  (ద੾ͳύϥϝλΛબ΂ ͹)GPUΛར༻ͯ͠1िؒ͘ Β͍Ͱऩଋ͢ΔɻτϨʔχ ϯάσʔλͰ༧ଌਫ਼౓5ׂ ͘Β͍ 5 ΞϦγΞɾιϦου χίχཱମͪΌΜ イラスト CNN タグ マルチラベル Sigmoid cross entropy
  6. Nico-illustಛ௃ྔநग़ •  ΩϟϥΫλ໊ͷࣝผث͸ Կ͕خ͍͠ͷ͔ʁ –  Πϥετʹ͓͚Δ ”ΩϟϥΫλੑͷྨࣅ౓” ͕ܭࢉͰ͖ΔΑ͏ʹ •  λάͷग़ྗϨΠϠͰ͸ͳ

    ͘ɺͦͷલͷϨΠϠΛϕ Ϋτϧͱͯ͠ѻ͍ɺۙ๣ ୳ࡧ͢Δɻ 6 今回用いる特徴量
  7. ྨࣅը૾ݕࡧ •  ྨࣅը૾ΛͲΜͲΜ ୧ͬͯɺٻΊΔը૾ʹ ͨͲΓண͚ΔUI •  ൅ܕɾ෰૷ͳͲͷΩϟ ϥΫλੑ͕ྨࣅ͍ͯ͠ Δը૾͕ީิʹग़ͯ͘ Δ

    –  ͜͜Ͱ͸ΩϟϥΫλͷྫ ͸ग़͞ͳ͍ͷͰɺͥͻ webσϞͰࢼͯ͠Έͯ͘ ͍ͩ͞ –  https://nico-opendata.jp/ ja/demo/similar/ 7
  8. ϞʔϑΟϯά 8 •  ಛ௃ΛϕΫτϧͱ͠ ͯѻ͍ͬͯΔͷͰɺ2 ͭɺ3ͭͷϕΫτϧͷ ฏۉΛऔΔ͜ͱ΋Ͱ ͖Δɻ •  ˠനࠇೣࣖը૾͔Β

    Χϥʔೣࣖը૾Λܦ ͯࠇ൅ϩϯάը૾ʹ ભҠ͢Δྫ
  9. ίϝϯτಛ௃

  10. ྨࣅίϝϯτݕࡧ 10

  11. ίϝϯτಛ௃ͷநग़ •  ৄ͍͠࿩͸લճͷChainer meetup vol.1Ͱ঺հࡁ ΈͳͷͰɺ͜͜Ͱ͸ඞཁ࠷௿ݶ͚ͩ࿩͠·͢ɻ •  લճొஃऀͷ @ixixi ͷҎԼͷهࣄΛࢀরͯ͘͠

    ͍ͩ͞ɻ 11
  12. ίϝϯτಛ௃ͷநग़ \n ͖ ΌΘ ͨ Μ ͖ Ό Θ ͨ

    Μ 12 LSTM LSTM Linear •  ίϝϯτղੳͷϙΠϯ τ͸ɺܗଶૉղੳ্͕ ख͘ߦ͔ͳ͍ͱ͍͏͜ ͱɻ –  ৽ޠ͕ଟͯࣙ͘ॻ͕ରԠ Ͱ͖ͳ͍ –  ࣙॻΛڧԽͯ͠΋ɺݴ͍ ׵͑΍่͕͠ଟ͍ •  ࠓͷͱ͜Ζɺจࣈ୯Ґ LSTM͕΋ͬͱ΋্ख͘ ͍͘ɻ
  13. ྨࣅίϝϯτݕࡧ •  ΧςΰϦೝࣝͷ໰ ୊Λ༻͍ͯLSTMΛ τϨʔχϯά 13 \n ͔ Θ ͑

    ͑ LSTM LSTM Linear 動物 シングルラベル Softmax cross entropy
  14. ྨࣅίϝϯτݕࡧ •  ΧςΰϦೝࣝͷ໰ ୊Λ༻͍ͯLSTMΛ τϨʔχϯά 14 \n ͔ Θ ͑

    ͑ LSTM LSTM Linear 類似検索用特徴量
  15. コメント生成

  16. એ఻: niconico௒ίϝϯτੜ੒ Πϥετը૾(+λά)͔ΒίϝϯτΛੜ੒͢Δϓϩ άϥϜΛڝ͏ίϯςετΛχίχί௒ձٞ2016Ͱ ։࠵!! ࢀՃํ๏͸2ͭɻੋඇࢀՃ͍ͯͩ͘͠͞ •  3/21(໌ޙ೔)ʹߦΘΕΔϋοΧιϯʹࢀՃ͠ɺ γʔυݖΛউͪऔΔ • 

    4݄ʹ࣮ࢪ͢ΔެืʹԠืͯ͠ɺॻྨ৹ࠪΛ௨Δ
  17. ը૾ಛ௃ͱίϝϯτಛ௃ͷରԠͷֶश •  Πϥετɾίϝϯτͷ̎ छྨͷղੳʹ͍ͭͯड़΂ ͨͷͰɺ͜ͷ̎ͭΛ݁ͼ ͚ͭΔ࿩Λ͢Δɻ •  ໨ඪ͸ɺΠϥετʹద੾ ͳίϝϯτΛ͚ͭΔ͜ͱ • 

    ·ͣ͸ɺੜ੒Ͱ͸ͳ͘ݕ ࡧʹ͍ͭͯड़΂Δ 17 イラスト コメント Πϥετ CNN ίϝϯτ LSTM イラスト特徴 コメント特徴
  18. 18 \n ͔ Θ ͑ ͑ LSTM LSTM Linear ベクトル同士の比較

    Mean Squared Error 画像と、そこについているコメントのペアデータ
  19. 19 \n ͔ Θ ͑ ͑ LSTM LSTM Linear ベクトル同士の比較

    Mean Squared Error 画像と、そこについているコメントのペアデータ ロスの伝搬 画像とコメントの特徴空間をマージする
  20. ը૾ಛ௃ͷ෼෍ 20

  21. ίϝϯτಛ௃ͷ෼෍ 21

  22. ྨࣅίϝϯτ܈ •  ؋͜Είϝϯτ 22

  23. ྨࣅίϝϯτ܈ 23 幼女 うーにゃー かわいい

  24. ը૾ -> ίϝϯτͷ࠷ۙ๣୳ࡧ ˞͔͜͜Βઌ͸ඇৗʹϋΠίϯςΫετͳ࿩Λ͠ ·͢ɻχίਥͳχϡʔϥϧωοτϫʔΫͷؾ࣋ͪ ʹͳ͍ͬͯͩ͘͞ɻ 24

  25. ౦ํͷνϧϊ͞Μʹ͍ͭͯ 25 •  数値は、画像ベクトルとコメントベクトルの距離 •  画像ベクトルの近傍からコメントを幾つか拾う

  26. ౦ํͷϨϛϦΞ͞Μʹ͍ͭͯ 26

  27. ؋͜Εͷۚ߶ܕ࢞ຓͷը૾ʹ͍ͭͯ 27

  28. ৺ͷ؟Ͱݟଓ͚Δͷ΋ͭΒ͍ͷͰɺը૾༗ΓͰ࿩ Λ͠·͢ ˞΍ͬͺΓϋΠίϯςΫετͰ͢ɻ 28

  29. ༮ஓԂੜͷঁͷࢠͷΠϥετʢਫ৭ͷ੍෰ʣ 29

  30. ༮ஓԂੜͷঁͷࢠͷΠϥετʢਫ৭ͷ੍෰ʣ 30

  31. ༮ஓԂੜͷঁͷࢠͷΠϥετʢਫ৭ͷ੍෰ʣ 31 έϩϩ܉૤ͱ͍͏࡞඼ʹɺԫ৭͍ɺϔϧϝο τΛඃͬͨɺΧΤϧͷ૤௕͕͍ΔͷͰ͢ɻɻɻ

  32. ೖֶࣜͷΠϥετʮ΢αΪʯ 32

  33. ೖֶࣜͷΠϥετʮ΢αΪʯ 33

  34. ೖֶࣜͷΠϥετʮ΢αΪʯ 34 ౦ํProjectʹɺ͏ͲΜ͛ͪΌΜͱ͍͏ɺ͏͞ ΈΈͷঁͷࢠ͕͍ΔͷͰ͢

  35. ΤΞΨϯͰԐͱઓ͏ओ්ͷΠϥετ 35

  36. ΤΞΨϯͰԐͱઓ͏ओ්ͷΠϥετ 36

  37. ΤΞΨϯͰԐͱઓ͏ओ්ͷΠϥετ 37 連邦の主婦は化け物か

  38. ఆྔධՁ •  1000ݸͷΠϥετ-ίϝϯτϖΞΛ༻ҙ •  ը૾ಛ௃͔Βۙ๣ίϝϯτ୳ࡧΛߦ͍ɺରʹͳΔίϝϯτ͕ԿҐ͔ Λௐ΂Δ •  ্Ґ5%ج४Ͱ23%͕ਖ਼ղ 38

  39. TODO1: Contrastive Loss 39 \n ͔ Θ ͑ ͑ LSTM

    LSTM Linear ベクトル同士の比較 Mean Squared Error 画像と、そこについているコメントのペアデータ ロスの伝搬 画像とコメントの特徴空間をマージする
  40. TODO1: Contrastive Loss 40 \n ͔ Θ ͑ ͑ LSTM

    LSTM Linear 正例なら近づける、負例なら離す Contrastive Loss 画像とコメントのペアデータ 負例として他の画像に付いているコメントも ロスの伝搬 画像とコメントの特徴空間をマージする ロスの伝搬
  41. TODO1: Contrastive Loss •  ϩεΛ্ख͘Լ͛ΒΕͳ͔ͬͨ •  ϚʔδϯΛͲΕ͘Β͍ʹऔΔ͔ɺਖ਼ྫͱෛྫΛ Ͳ͏͍͏ׂ߹Ͱֶशͤ͞Δ͔ɺ͕γϏΞͳΑ͏ ʹײͨ͡ɻ • 

    ͦ΋ͦ΋SiameseωοτϫʔΫ(ೖྗ1ͱ2͕ωοτ ϫʔΫ͔Βग़ྗ͞ΕΔ΋ͷ)Ͱͷద༻͕ओ? 41
  42. TODO2: Encoder-decoder •  ࠓճ࿩ͨ͠ͷ͸ɺը૾ͷ encoderͱίϝϯτͷ encoderΛಉ࣌ʹτϨʔχ ϯά͢Δ࿩ͱ͍͑Δ •  Ұൠʹɺը૾->ίϝϯτͷ (ͱ͍͏͔ࣗવݴޠॲཧͷ)

    ࠓͷτϨϯυ͸encoder- decoder •  ը૾ΛCNNͰΤϯίʔυ ͯ͠ɺͦΕΛLSTMͷ0จ ࣈ໨ͷೖྗͱͯ͠ɺ1จࣈ ໨ʙΛ༧ଌ͍ͯ͘͠Ϟσϧ 42 LS T M LS T M Linear \n ͖ Ό Θ ͨ Μ ͖ Ό Θ ͨ Μ Encoder-CNN Decoder-LSTM
  43. TODO2: Encoder-decoder ੜ੒ྫ λά༧ଌ: ϥϒϥΠϒʂ, ໼ᖒʹ͜ >͡Ό͋Latͷ͠खͱฦ౴ͯ͠΋Β͓͏ λά༧ଌ: Steins;Gate >ത࢜!!!!!!!!!!!!!!!!

    λά༧ଌ: ౦ํ, খ໺௩খொ, ෩ݟ༓߳ >ਆʑ͍͠ͳ͊ λά༧ଌ: ਐܸͷڊਓ >ද৘Ά͍ͳ͊ •  ౰ͨΓোΓͷແ͍ίϝϯτ͔ɺΠϚΠν೔ຊޠͱͯ͠ඍົͳίϝϯτ͕ੜ੒͞Εͯ͠·͏ •  ೔ຊޠΛจࣈ୯ҐͰѻ͍ͬͯΔͱ͍͏ͷ͕ɺdecoderͱ͸૬ੑ͕ѱ͍ͷ͔ͳɺͱ΋ߟ͑ΒΕΔɻࢀߟʹͯ͠Δ࿦จ ͸ӳޠ΍ϑϥϯεޠͳͲͰɺ୯ޠ୯ҐͰग़ྗ͢ΔϞσϧͳͷͰɻ  43
  44. niconico௒ίϝϯτੜ੒ Πϥετը૾(+λά)͔ΒίϝϯτΛੜ੒͢Δϓϩ άϥϜΛڝ͏ίϯςετΛχίχί௒ձٞ2016Ͱ ։࠵!! ࢀՃํ๏͸2ͭɻੋඇࢀՃ͍ͯͩ͘͠͞ •  3/21(໌ޙ೔)ʹߦΘΕΔϋοΧιϯʹࢀՃ͠ɺ γʔυݖΛউͪऔΔ –  “௒ίϝϯτੜ੒ϋοΧιϯ”Ͱݕࡧ

    –  http://chokaigi2016-dmv.connpass.com/event/28524/ •  4݄ʹ࣮ࢪ͢ΔެืʹԠืͯ͠ɺॻྨ৹ࠪΛ௨Δ
  45. ίϝϯτੜ੒ϋοΧιϯ

  46. Ipython ϋϯζΦϯ https://github.com/ nico-opendata/ illust_comment_search 46

  47. ͦͷଞͷํ๏1: ྨࣅը૾ݕࡧ •  ྨࣅը૾ݕࡧͷipython΋༻ҙ͓͖ͯ͠·ͨ͠ɻ 47

  48. ͦͷଞͷํ๏1: ྨࣅը૾ݕࡧ 1.  ྨࣅը૾ݕࡧͰը૾͔ Βྨࣅը૾ͷIDΛͻ͘ 2.  ίϝϯτσʔληοτ ͔Βɺྨࣅը૾IDͷί ϝϯτΛऔͬͯ͘Δ 48

    •  ࣮ࡍɺίϝϯτΛ௚઀ݕࡧ͢Δͷͱɺ΍͍ͬͯΔ͜ͱ͸ͦΜ ͳʹมΘΒͳ͍͔΋͠Εͳ͍
  49. ͦͷଞͷํ๏2: タグݕࡧ 1.  ίϯςετͰ͸λά ͕ิॿ৘ใͱͯ͠༩ ͑ΒΕΔͷͰɺ͜Ε Ͱίϝϯτͷଟ͍ॱ ݕࡧΛ͢Δɻ 2.  ίϝϯτσʔληο

    τ͔Βɺը૾IDʹ ରԠ͢ΔίϝϯτΛ ͱͬͯ͘Δ 49
  50. ͦͷଞͷํ๏2: タグݕࡧ •  ͨͩ͠ɺλά͕े෼ʹ෇͍͍ͯΔը૾͕ଟ͍Θ ͚Ͱ͸ͳ͍ •  λά͕͍͍ͭͯͯ΋ɺ”ঁͷࢠ””ΦϦδφϧ”ͷΑ ͏ͳɺҰൠతͳλά͕ඇৗʹଟ͍ –  ͲͷλάͰݕࡧ͢Δ͔ͷ໰୊

    50
  51. ͦͷଞ: χίχί֎ͷࢿݯΛར༻ •  ಛʹݴޠͷํ͸ɺχίχίͷ֎ʹ΋ͨ͘͞Μ σʔλ͕༗Δɻ –  ୹ՎʹಛԽֶͨ͠शΛ͢Δ –  খઆʹಛԽֶͨ͠शΛ͢Δ • 

    ը૾ͱݴޠͷϖΞσʔλ΋ɺ೔ຊޠͰͳ͚Ε͹ ͍͔ͭ͋͘Δ –  MS COCOσʔληοτͳͲ 51