観照日記

主にIT・ゲームなどの日々の役に立ちそうなことを書いていきます

論文紹介:Deepfashion

紹介論文

Z. Liu, P. Luo, S. Qiu, X. Wang, X. Tang. "Deepfashion: Powering robust clothes recognition and retrieval with richannotations". Proceedings of IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2016

 

いきさつ

ファッションドメインにおける画像認識の論文を読んでおり,紹介論文もそのうちのひとつ.

 

論文概要

論文の寄与をまとめると,以下の通り.

  • 従来のファッション画像データセットでは,アノテーションの項目数やデータ数の少なさから,現実の画像タスクに対応できるものが少ないという問題があった.そこで新たに画像データセットDeepFashionを提案した.
  • DeepFashionは,800,000枚のファッション画像のデータセットであり,アイテムのランドマーク,豊富なアノテーション,同一のアイテムを店舗や町中など異なるシナリオで撮った画像を含む.
  • DeepFashionでファッションの特徴を学習するCNNであるFashionNetを提案した.FashionNetでは,ファッションの属性推定と,ランドマーク推定を同時に行うことができる.

※ランドマーク:ここでは,ファッションアイテム(もしくは人間)の,肩,脇下,裾にあたる位置

f:id:kenmikanmi:20171119040030p:plain

 

データセット:DeepFashion

ファッションドメインのように,専門的な分野では画像データセットが少ないという問題がありました.とりわけ,パラメータの多い深層学習アーキテクチャでうまく学習を行うためには,膨大なデータが必要となります.そこで,従来よりも大規模で,アノテーションの量も豊富なファッション画像のデータセットDeepFashionを提案しています.

DeepFashionデータセットに含まれるアノテーションは以下の通りです.

  • 50のカテゴリ(セーター,パーカー,…)
  • 1000の属性(素材,柄,形状,…)
  • 座標(ランドマーク点,アイテムを囲うバウンディングボックス)
  • 同一のファッションアイテムの画像ペア

既存のファッション画像データセットとの比較が以下の表です.

f:id:kenmikanmi:20171119041149p:plain

f:id:kenmikanmi:20171119041946p:plain

DeepFashionデータセットの属性別の画像例

 

データ収集

データは,Forever21とMogujieという2つのオンラインショッピングのサイトから収集しています.後者のサービスには,ショップで撮られた画像と,その商品を買ったユーザが撮った画像が含まれており,それらを組の画像として結びつけています。

余談ですが,「ショップなど,理想的な状況で撮影されたファッション画像」と,「ユーザが撮ったノイズを含んだファッション画像」というサブドメインがあります.それらのドメインを越えた特徴表現,つまり,ファッションアイテムの背景や,アイテムの角度の違いといったノイズに対してロバストな特徴表現を学習したいというモチベーションがあり,そうしたタスクに対応できるように意識しているのだと思います.

 

上記のサイトから1,320,078枚,391,482アイテムの画像を収集したらしいです.

 

つぎに,Google検索で”animal print dress”のような,ユニークなクエリを12,654個作って検索エンジンに投げ1,273,150枚の画像を集めます.

 

データクリーニング

収集したデータのうち被った画像を消すために,画像をAlexNetにフィードさせ,fc7層で抽出した特徴量を比較しています.それ以上の技術的なことは書いていませんが,(憶測ですが)特徴ベクトルの類似度を計算し,ある閾値以上の類似度をもつものを除去しているのでしょう.

そして,低解像度だったり,適していない画像を人手で(!)選別し,最終的に800,000枚の画像にします.

 

画像へのアノテーション

  • 50のカテゴリ:”コート”,”シャツ”などを人手でアノテーション
  • 1000の属性:検索クエリやメタデータをもとに自動でアノテーション
  • ランドマーク点:襟,裾,袖の座標のアノテーション.ランドマーク点が隠れて見えない場合は,見えていないというラベルを割り振る.
  • ペア画像の結び付け:前述のとおり,同一ファッションアイテム同士をペアとして結び付ける.

FashionNet

この論文では,膨大なコストをかけて集められた画像データセットDeepFashionを学習するためのCNNアーキテクチャFashionNetも提案しています.

このFashionNetの入出力は,

  • 入力:ファッション画像
  • 出力:ファッション画像のカテゴリ推定,属性推定,ランドマーク点推定

です.ファッションアイテムのランドマーク点を推定できるのが,この論文のデータセットアーキテクチャの新規性です.

 

FashionNetは,画像認識で良い性能を出しているVGG16*1をベースにしており,VGG16の最終層を本タスクに特化した構造にしています.最終層は下図のように3つに枝分かれした構造になっています.

 

f:id:kenmikanmi:20171119051037p:plain

枝の1つは上流のCNNの出力をそのまま流す層(Figure 5. 赤部分

もう1つは,ランドマーク点の出力を行う層(Figure 5. 青部分)

最後に,ランドマーク点の周辺から特徴抽出を行う層(Figure 5. 緑部分)です.

 

FashionNetの学習

FashioinNetは次の損失関数を最適化する学習を行います.

以下の損失関数における, j, D, {\bf x}_jはそれぞれ, j番目のサンプル,訓練サンプル数, j番目の画像に対応します.

ランドマークの位置の距離の二乗誤差

 L_{landmark}=\sum_{j=1}^{|D|} ||{\bf{v}_j} \cdot (\hat{l_j}-l_j)||_{2}^{2}

  {\bf{v}_j}は, j番目のサンプルの各ランドマーク点が画像において見えているかどうかの2値ラベルを保持したベクトルで,見えていないランドマーク点に対応するベクトルの成分は 0となり, i番目のランドマーク点の誤差 ||{v_{ij}} \cdot (\hat{l_j}-l_j)||_{2}^{2} 0となります.

 

属性の分類学習のクロスエントロピー損失

  L_{attributes}=\sum_{j=1}^D (w_{pos} \cdot {\bf a}_j {\rm log} p({\bf a}_j | {\bf x}_j)  + w_{neg} \cdot (1-{\bf a}_j) {\rm log} (1-p({\bf a}_j | {\bf x}_j)))

  w_{pos},w_{neg}は,属性ラベルが割り当てられたサンプル数の割合に対応しています.すなわち

 w_{pos}:その属性が訓練サンプル全体に占める割合

 w_{neg} 1-w_{pos}

直感的には,特定の属性をもつサンプルが多く,特定の属性をもつサンプルが少ない場合に,それらの損失の割合が属性ごとのサンプル数によって偏ってしまうのを避ける,みたいな意味がありそうなのですが,なぜこのように重み付けするのかよくわかりません…

 

ランク学習の損失

 L_{triplets}=\sum_{j=1}^{|D|} {\rm max}\{ 0,m+d({\bf x}_j,{\bf x}_j^+ )-d({\bf x}_j,{\bf x}_j^-)\} 

式中の d(・,・)は,特徴量間のユークリッド距離を求める関数です.

ランク学習とは,簡単に言えば,「類似した画像同士の特徴量は特徴空間で近くなってほしいが,まったく異なる画像同士は特徴空間上で離れていてほしい.つまり,学習のコンセプトは,類似画像同士の距離が近くなるように,非類似画像同士の距離が遠くなるようにパラメータを更新する」というものです.下図に概念図を示します.

 

f:id:kenmikanmi:20171119130002p:plain

Anchor画像(基準)に対してPositiveな画像は学習後により近くなり,Negativeな画像は特徴空間上でより遠くなる学習を行う

損失関数では, ({\bf x}_j,{\bf x}_j^+)同士が離れるほど損失が増え, ({\bf x}_j,{\bf x}_j^-)同士が離れるほど損失が減る.というのを数式で表現しています.


DeepFashionデータセットには,もともとファッションアイテムのペアとなる画像がリンク付けされていますから,それらの類似画像対を ({\bf x}_j,{\bf x}_j^+)として選びます.非類似画像対 ({\bf x}_j,{\bf x}_j^-)の選び方は論文中には記載がありませんでしたが,ランダムに選んだり,属性やカテゴリの一致しない画像を選んだりしているものと思われます.

 

・カテゴリの分類学習の損失

出力をソフトマックス関数で [0,1]正規化して,一般的な分類学習と同じクロスエントロピー損失を求めます.

 

実験

データ

DeepFashion 300,000枚を学習,50,000枚でテストする.

比較手法

以下が比較手法.上2つが従来手法で,下4つはFashionNetの学習に用いるアノテーションを変更したもの.アノテーションの質が異なると,精度がどれだけ異なるかを検証している.

  • Where To Buy It(WTBI) *2
  • Dual Attribute-aware Ranking Network *3
  • FashionNet+100: L_{attribute}の学習で,分類に利用する属性数を100とした
  • FashionNet+500: L_{attribute}の学習で,分類に利用する属性数を500とした
  • FashionNet+Joints:ランドマークを,人の姿勢推定手法*4アノテーションしたもの
  • FashionNet+Poselets:ランドマークを,人の姿勢推定手法*5アノテーションしたもの

実験結果

以下の図は,学習済みのFashioNetから抽出した特徴量を使って,画像検索をしたときの出力例とtop- kの検索精度です.グラフの赤い線がFashionNetの推移を示しています.この画像検索では,ショップ画像*6をクエリとして,ショップ画像を検索しています.

f:id:kenmikanmi:20171119131217p:plain

画像検索の実験結果.図は論文より.

これも同じく画像検索ですが,アイテムの購入者が撮ったノイジーな画像をクエリにしたときの検索結果です.精度は下がりますが,背景や人物に対するロバスト性があることがわかります.

f:id:kenmikanmi:20171119131221p:plain

画像検索の実験結果.図は論文より.

==============

ほかにも書きたいことがあるのですが,数日以内に加筆します…


*1:K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556, 2014

*2:M. H. Kiapour, X. Han, S. Lazebnik, A. C. Berg, and T. L. Berg. Where to buy it: Matching street clothing photos in online shops. In ICCV, 2015

*3:J. Huang, R. S. Feris, Q. Chen, and S. Yan. Cross-domain image retrieval with a dual attribute-aware ranking network. In ICCV, 2015.

*4:Y. Yang and D. Ramanan. Articulated pose estimation with flexible mixtures-of-parts. In CVPR, pages 1385–1392, 2011

*5:L. Bourdev and J. Malik. Poselets: Body part detectors trained using 3d human pose annotations. In ICCV, pages 1365–1372, 2009

*6:ショップ画像とは,オンラインショップなどで見られる理想的な環境で撮られた画像のことです.