ピクシブのインターンに参加したお話

 

1年ぶりの投稿です.shryics(@shryics2)です.

圧 倒 的 猛 者 に な る 。

ために,ピクシブさんのインターン(機械学習コース)に参加してきました!
その詳細についてゆるゆる書きましたので,ゆるゆる読んでいただければと!

recruit.pixiv.net

 

 この記事では,

3つについて書いています.

 

 

 

インターン応募までの経緯

なぜピクシブさんのインターンに応募しようと思った経緯なんですが,趣味でイラストの画像分類器を作っていて(そのうち記事にします).似たことを企業でさせてもらえたらと友人に話していたら,薦めてもらって応募した,という感じです.

 

インターンでの取り組み

課題テーマ

僕が配属された機械学習コースでは"イラストの属性推定"という課題に取り組みました.ここでいう属性は髪色や体型,服装などを指しています.

できると何が嬉しいのか

レコメンド周りの幅が広がります.例えば,アズールレーン大鳳ちゃんをみているときの関連作品は大鳳を中心にアズールレーンのイラストが出てきます.

イラストの属性が推定できるようになると,ブクマ(非属性)ベースだけではなく,属性ベースのレコメンドもできるようになります.

属性ベースのレコメンドのイメージとしては,大鳳のイラストの関連作品に黒髪,ロング,ツインテ,着物,巨乳の属性をもつキャラクターが出てくるような感じ.「黒髪ロング 巨乳 着物」って検索窓に入れる必要がなくなるのはとても有難いですよね.

 

課題へのアプローチ

時間の関係から髪の属性に限定して推定を行いました.このアプローチについて簡単に説明します.

 

今回はillustration2vecというニューラルネットワークのモデルの1種を使っています.illustration2vecとはVGG11モデルの3つのFC(Fully Connect)層を3つの畳み込み層に置き換え,かつ,GAP(Global Average Pooling)層を加えたモデルを言います.

学習時間を短縮したかったので,最後の畳み込み層とGAP層以外は既存の重み(過去に学習したもの)を使い,最後の畳み込み層とGAP層のみを学習させています.アプローチのイメージは下の図のようになります.

  

f:id:shryics:20181005170138p:plain

学習

学習データの概要です.

  • データ: 髪の属性(髪色 + 髪型)を持つキャラクターのイラスト
  • データ数: およそ25万件

上のデータを用いて学習を行いました.学習に関するパラメータは以下の通りです.

f:id:shryics:20180926235758p:plain

 

上の図からわかるように,時間の関係で、十分に学習を回せなかった(誤差が収束していない)ので予測結果の確度が低いです.次の結果で,モデルの評価をしていますが参考程度に御覧ください.

結果

モデルを定性的に評価するために,適当なイラスト3点を選び,出力を確認しました.
(イラストについては掲載できないため,イメージしにくいとは思いますがご了承ください...)

属性名, 確率という並びで降順にソートしており,正しいように見える属性は橙色,そうでない上位のものは青色の下線が引かれています.

 

 

f:id:shryics:20181005171121p:plain

 

 

f:id:shryics:20181005171131p:plain

 

f:id:shryics:20181005171136p:plain

 

 

  

 学習途中の結果でも直感的にそこまで反していない結果が得られました.2枚目のピクシブたんの緑に関しては初音ミクツインテール,ロングと共起していそうです.

 

インターンを終えての感想

本当にあっという間な5日間でした.step1が髪に関する属性推定,step2が属性推定を予定していましたが,step1で5日間が終わりました....嬉しいことも,辛いこともあったのでその辺りを書き留めています.

学習から実装までのスピード感

5日間という短期間で,転移学習やVGG16といった,知らなかった技術を学び,それを使って課題へアプローチをかける興奮は堪りませんでした.

vim

実行環境がAWSインスタンス上にあり,コードをローカルで編集するのが非常に億劫でしたので,食わず嫌いしていたvimを使うことにしました.複数行消してしまったり,コピペに時間掛かったりと操作を覚えるのにかなりの時間を要しました.インターン中盤あたりである程度使えるようになってからは手に馴染む使いやすさに感動していました."vimは良いぞ"という人たちの気持ちが少しだけわかったような気がします. 

悪循環

正規化していなかったり,重みの読み込みを忘れていたりしたミスを焦って直して,また新しいミスを生んでの悪循環にハマったのが悔しいというか悲しかったです.変に焦る必要はないんですけどね...

 

職場について

アットホームな雰囲気で,初日から気張らずに作業できるし,席の周りには技術的に強い人が沢山いて気軽に質問できるし,右見ても左見ても後ろ見ても前見てもかわいいイラストだしで,オタクとしても,学生エンジニアとしても本当に幸せでした.

終業後,アニメ鑑賞会やっていたり,談笑していたりとオンもオフも楽しめる環境があって魅力的でした.

 

最後に

酸いも甘いも噛めた最高なインターンでした!

メンターさんをはじめとして,社員の方々に大変お世話になりました!

本当にありがとうございました!!

 

自分なんかが少人数インターンに参加できるのかな...って興味はあるけど自信がない方,とりあえず応募してみるのをオススメします!!!

 

f:id:shryics:20180927021336j:plain