Neural Network Console Challenge 人数による分類

#はじめに
今回 [Neural Network Console Challenge](https://nnc-challenge.com/)(以下、NNC Challenge)というコンテストに参加しました。

#コンテスト概要
NNC ChallengeはSonyが提供している [Neural Network Console](https://dl.sony.com/ja/)(以下、NNC)を用いて[PIXTA]の写真素材を画像分類するというものです。
※学習用データ提供：[PIXTA]

コンテストに応募すると写真素材1万枚がダウンロードできます。その中から好きな枚数を使用して学習を行います。
[PIXTA]:https://pixta.jp/

テーマは次の4テーマ
1.『人物画像をNNCで学習させ新しいオノマトペ（擬音語/擬声語/擬態語）の画像カテゴリ分類を作り出す』

2.『画像内人物をNNCで学習させ画角/焦点距離による画像分類を作り出す』

3.『NNCで画像を学習し人の感情によって分類』

4.『上記以外のチャレンジテーマを自由に設定しての応募』

#テーマ選択
今回チャレンジしたのは人数による画像分類です。4テーマのうち4番目です。

#アノテーション(ラベル付け)
画像に対してテーマに沿ったラベル付けを行います。
今回は1人なら0、2人なら1としていき、6人以上を5にすることにしました。

流れとしてはこんな感じです。
1.まずは画像を全体的に確認して、どの様な画像があるのか確認
2.画像のサイズが640×426のファイルを抽出(サイズが数パターンあったため)
3.顔がわかる、人のシルエットがわかる、などの人が判別できる画像を抽出
4.人数毎に該当するラベルのディレクトリにドラッグ&ドロップ

**画像のサンプルと各ラベルの枚数**

|label|||||枚数|
|:---:|---|---|---|---|:---:|
|**0**|![pixta_49730106_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/f74418e4-fd97-3ed7-1176-e7901c69ada9.jpeg)|![pixta_45613866_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/1c4d9be6-57c6-e012-4524-31ee744fe1ed.jpeg)|![pixta_42044199_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/0c315900-9890-e951-1e93-fd0f22f134ea.jpeg)|![pixta_28034355_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/3e55408b-31d1-0ab7-0b4c-1c910a83160a.jpeg)|2,675|
|**1**|![pixta_49730332_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/79352631-ef90-8e65-6d5f-7436ce4122ae.jpeg)|![pixta_37768975_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/54b3d659-aa1b-a506-44fd-08212b2080f6.jpeg)|![pixta_37618239_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/87c7f9e4-b112-f2e2-afca-cce91d5f5523.jpeg)|![pixta_21936400_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/30634101-7fff-d3b8-1887-c92526711b95.jpeg)|1,229|
|**2**|![pixta_47212623_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/40d84bba-00f4-267f-6001-3a77bb36ad47.jpeg)|![pixta_39311325_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/ce58e987-5bbc-9235-eb84-4399d775d0af.jpeg)|![pixta_37769224_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/fe098007-9bd3-7fc6-5cfa-d9196fd2f9e3.jpeg)|![pixta_16545052_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/898d9448-cdfb-141f-e88f-35c68a4145c2.jpeg)|553|
|**3**|![pixta_44043076_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/f91603ac-f4ed-a1e8-d074-f1b2ce140598.jpeg)|![pixta_38359608_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/b91ee655-5bf4-a1bf-f7bf-169ea24a90c3.jpeg)|![pixta_26211703_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/c6575b51-53eb-b23c-f1de-51f594d2bd95.jpeg)|![pixta_16544821_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/5458accc-3673-f613-49ca-53c743473a8f.jpeg)|247|
|**4**|![pixta_43256100_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/cb095f28-02e7-bc34-4f58-7a6da6c8b269.jpeg)|![pixta_40738543_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/e7f8a101-3845-0899-e564-08b58f83d84c.jpeg)|![pixta_22461703_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/d6f145eb-aa99-3e9c-cf6e-8b2a551bdd97.jpeg)|![pixta_27060009_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/bb7e4538-59dc-b355-e791-5b761a89c9bb.jpeg)|93|
|**5**|![pixta_60365828_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/c75b8701-a75f-601c-e772-50aa4a09111b.jpeg)|![pixta_60365663_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/a3f21fb8-4f66-9a4f-b5d4-ee4f7e40d8ff.jpeg)|![pixta_41667077_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/7eb87ba8-3942-55bd-673b-5aad7f1cfb9a.jpeg)|![pixta_21910027_S.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/a8a40353-4bc1-ba72-40cb-b0d6d7aa14af.jpeg)|266|
※学習用データ提供：[PIXTA]

#DataSet
アノテーションで分類した画像を元にNNCを使用してDataSetの作成を行います。
![DataSet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/177031fb-6402-db64-04f3-9082aea21af3.png)
画像サイズは今回640×426の画像を使用しているので、640×426を指定します。
train:testを8:2で作成しました。
trainが約4,000枚、testが約1,000枚になりました。

#モデル作成
以前作成したCNNのモデルを流用したものを使用しました。
人物を検出するようにアノテーションした方がいいと思ったのですが、アノテーションから含めての作業は初めてだったので、とりあえずCNNで行うことにしました。
![nnc_challenge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/0c843fad-da78-1dda-81fb-860c79ea3baf.png)

複数条件のCNNをConcatenateで結合して次の層に渡すというイメージです。
また、入力データの水増しのためにInput後にImageAugmentationを使用しています。

#学習
学習は主にローカルPCを使用しました。
GPUはGeForce GTX1070

NNC Challengeではクラウド環境のGPU利用枠10,000円分が使用できるということで、クラウド環境も利用しました。
※クラウドのGPUはTesla V100x4を使用

**300epochの学習時間比較**

||ローカルPC<br>GeForce GTX1070|クラウド<br>Tesla V100x4|
|---|:---:|:---:|
|CPU|-|メモリ不足で動かず|
|GPU|06:10:08|00:48:45|

Tesla V100x4だと1/7以下の学習時間になりました。

#学習結果
**トレーニング結果**
![nnc_challenge_training.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/83808b99-70af-ced0-713a-015111b88ba1.png)
training error(赤の実線)は下がっていますが、validation error(赤の破線)が0.6付近で停滞しています。
さらにvalidation errorが250epoch辺りから若干上がり気味なので、過学習とも考えられます。

**評価結果**
![nnc_challenge_result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/d4687c81-0226-4965-c73b-a88df0106e4f.png)
Accuracy(正確度)が0.845、まずまずの結果というところでしょうか。
実用レベルではなさそうです。
各ラベル別に見ると、ラベル4(5人)の精度が他のラベルと比べて低い結果となりました。
Precision(精度):0.625
Recall(再現率):0.4761

**NNCで分類した画像の一例**

|label|||||
|:-:|:-:|:-:|:-:|:-:|:-:|
|**0**|![pixta_16544787_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/b9d2f18d-0ada-496e-0362-2f6e57fb1100.png)|![pixta_21936133_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/291d508e-d131-bbbc-dd1e-492a41c12e8a.png)|![pixta_24851264_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/2d5fc491-39d1-f16e-ac76-023e16cd1182.png)|![pixta_41089359_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/fadc2011-6c37-f4dc-209b-f448200805d7.png)|
|**1**|![pixta_16544779_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/65b6fe3e-2189-cc78-ea00-75fbe2598724.png)|![pixta_20419893_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/424eb098-a5c2-f2ab-3fbc-72169fd6223c.png)|![pixta_21910207_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/434bf9bf-f804-dbf6-77ed-7a4913df66ac.png)|![pixta_28958771_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/46cbb41c-39bd-02f0-1e53-9703b5666d27.png)|
|**2**|![pixta_16544896_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/6af04593-74c5-98ef-04eb-e473c3ef02b2.png)|![pixta_21206790_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/c3a7cbd4-1d16-36aa-02a2-360bded390c2.png)|![pixta_22374404_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/530a61f2-4029-0bf2-1350-028b556cb15f.png)|![pixta_37769251_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/1104691a-0e40-8625-3238-1872d86cd65f.png)|
|**3**|![pixta_16544761_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/7b719d49-ff81-b171-c601-69cff01377d3.png)|![pixta_24243985_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/5b923325-8a96-20c6-8b89-c229c73cf906.png)|![pixta_34474268_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/4f52ecf7-8aa7-222b-4a2b-3c7c0f70d343.png)|![pixta_46865934_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/0b8b7b58-3323-141f-527b-b570f07aa224.png)|
|**4**|![pixta_22461731_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/eb6d0677-707c-6661-74a5-30ee0dea19ce.png)|![pixta_22461744_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/1c850bad-9963-831a-23ed-2c01d3f76090.png)|![pixta_29322517_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/dfda08a6-a55c-2512-bf27-237987b262f0.png)|![pixta_34474274_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/64e5c6ac-e394-1270-e31e-ecf12a4df86f.png)|
|**5**|![pixta_21910055_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/b22afb45-2c16-7f4b-c973-683a39b2420a.png)|![pixta_21936258_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/e8e49158-e391-99e3-69e4-137072924893.png)|![pixta_22461732_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/eb1badff-6aa8-92b5-a132-667a34f94256.png)|![pixta_23165756_S.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411151/5a132a0a-f58c-c18d-0efa-63ad87b09898.png)|
※学習用データ提供：[PIXTA]

#考察
モデルやパラメータを変更したり、NNCの構造自動探索機能を使用してみましたが、精度の向上がほとんど見られなかったことから、精度を向上させるためにはアノテーションのやり方やモデル全体の見直しが必要だと考えられます。

またラベル4の精度が低い原因として、ほかのラベルよりも画像枚数が少ないため(100枚以下)と考えられます。画像の枚数が多いラベル0やラベル1は他のラベルよりも正解率が高い傾向にあると言えます。
ラベル4(5人)の枚数が少ないのであれば6人以上ではなく、5人以上でまとめたDataSetだと違う結果になるかもしれません。

追記(2020/3/31)
5人以上でまとめたDataSetで試してみました。
https://qiita.com/ryo19841204/items/4e083c427eeb149bc86f

#感想
今回、初めてアノテーションから作業しましたが、かなり大変でした。

元々は3の感情による分類を行うつもりだったのですが、アノテーションの段階でこの表情は何に分類しようか？複数人写っている写真の場合はどうするか？などなど作業が止まり中々進まず。。。
気を取り直して、取り合えず人数で分類できるようになれば1人の写真を抽出できるし、その後のアノテーションも楽になるはず。今後のことを考えると一石二鳥。という感じで人数での分類に変更しました。

NNCを使用した感想ですが、NNCはネットワークの設計がGUIで出来るのでプログラムより作業がかなり楽です。更にパラメータの調整もある程度自動でやってくれるため、試行錯誤もやり易いと思います。
また、評価結果の確認もやり易いです。
今後、さらに使いやすくなっていくのではないかと期待します。