読者です 読者をやめる 読者になる 読者になる

VAEとGANを活用したファッションアイテム検索システム

データサイエンティストの中村です。今回はイメージファーストなファッションアイテム検索システムを作ってみたのでそちらの紹介をしたいと思います。 本記事で紹介する技術はIBIS2016でも報告しています。

f:id:vasilyjp:20161122121917p:plain

概要

ファッションアイテムを探すとき、見た目の印象はとても大事な要素です。ファッションは感覚的なものなので、自分が欲しい服について言葉で説明することは難しいですが、そのアイテムの良し悪しは画像を見ただけで判断できるからです。

今回開発した検索システムは見た目の印象を大事にしたいので、画像をクエリとします。ただし、ただの画像検索では面白くないので、色や形状などの属性情報を付加した状態で検索を実行できるようにしました。 例えば、「シルエットは良いんだけど、これの赤いやつが欲しい」のような感覚的な注文を、以下のGIFのように画像に属性を付加する形で拾っています。

よくある検索システムではカテゴリによる絞込やフリーワードがクエリになりますが、この方式でカバーできていない部分を解決できればと考えて作りました。

f:id:vasilyjp:20161122171502g:plain

アイデア

アイテムの画像に属性を付加するわけですが、付加する属性の要素の大きさに応じてアイテムの画像が連続的に変化してくれると嬉しいです。

f:id:vasilyjp:20161122155759p:plain

このような性質を持つ空間を生成モデルで張れないかと考えました。 参考にしたのはLarsen2015*1 です。論文中のFigure 5. に属性が連続的に変化している様子が確認できます。これと同じように、例えば「Red」という属性を付与したら、元のアイテムの印象を残したまま色だけ赤く変化する状態を目指します。

モデル

Larsen2015を改良しました。論文中の手法をそのまま使って実験しても思い通りに行きませんでした。顔の画像とドレスの画像は勝手が違うようです。 モデルを変えながら試行錯誤をした結果、以下のモデルで結果がだいぶ改善しました。

f:id:vasilyjp:20161122115904p:plain

Discriminatorの出力に、属性を予測するレイヤーを追加し、予測誤差をDiscriminatorとGeneratorに返すようにしています。予測する属性はひとつとは限らないので、softmaxではなくsigmoidを使っています。 属性予測タスクを追加することで、学習が安定し、再構成がきれいにできるようになりました。

なお、GANにタスクを追加してモデルを改善する例は他にもInfoGAN*2 やACGAN*3 などが報告されています。

検索

上記のモデルを学習させた後、学習済みEncoderを使って検索対象のアイテムから特徴抽出します。アイテムの特徴量空間が完成しました。

アイテムを検索するには、構築した空間内でクエリの近傍を取得すれば良いです。この操作は検索対象アイテム数が増えると計算量が増加するため、近似を使って効率よく近傍探索できるアルゴリズムを用いました。

近似近傍探索に関してはAnnoyはとても優秀なライブラリなので、近傍探索に興味のある方はぜひ触ってみてください。

結果

属性を付加しない場合の検索結果(通常の画像検索)と属性を付加した場合の検索結果を載せます。 左は「Red」という属性を足した場合で、クエリ画像とよく似た赤いアイテムがヒットすれば成功です。右は「Long sleeve」という属性を引いた場合です。半袖やノースリーブのアイテムが出てくることを想定しています。

f:id:vasilyjp:20161122122609p:plain

現状、色や形状は比較的結果が安定しています。ただし、素材やシチュエーションのように、画像から判断し辛いものやコンテキストが必要な属性は失敗もあります。

まとめ

画像に属性を付加してファッションアイテムを検索する仕組みについて紹介しました。VAEとGANを組み合わせたモデルに予測タスクを課すことで学習が安定し、検索結果も改善することが確認できました。 とはいえ検索結果にはまだムラがあったり、複数の属性の組み合わせだと精度が低下したりと課題も多いので、精度改善の必要性を感じています。

雑談

今回は生成モデルでアプローチしましたが、この記事の執筆に着手した直後にUpchurch2016*4 の存在を知りました。 詳しくはarXivに上がっている論文を見ていただきたいのですが、ほぼ同じタスクを識別モデルを使って鮮やかに解いています。 生成モデルでは扱えないような高解像度な画像について違和感なく属性を変化させている様子が紹介されていて、その精度の高さに驚きました。

雑談2

本記事の内容はIBIS2016でも発表しています。その時の様子などをまとめたブログも公開していますので、そちらもぜひ合わせてご覧ください。

tech.vasily.jp

最後に

VASILYでは、最新の研究にアンテナを張りながら、同時にユーザーの課題解決を積極的に行うメンバーを募集しています。 興味のある方はこちらからご応募ください。

*1:A. B. L. Larsen, S. K. Sønderby, and O. Winther. Autoencoding beyond pixels using a learned similarity metric. arXiv, 2015.

*2:X. Chen, Y. Duan, R. Houthooft, J. Schulman, I. Sutskever, and P. Abbeel. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets. arXiv, 2016.

*3:A. Odena, C. Olah, and J. Shlens. Conditional image synthesis with auxiliary classifier gans. arXiv, 2016.

*4:P. Upchurch, J. Gardner, K. Bala, R. Pless, N. Snavely, and K. Weinberger. Deep Feature Interpolation for Image Content Changes. arXiv, 2016.