Help us understand the problem. What is going on with this article?

Neural Network Console Challenge(NNCC) 参加レポート ~構築経験0から10日でTRYし力尽きるまで

Introduction

企業データを用いてディープラーニングに挑むSonyとレッジが企画するAI開発コンテスト、
Neural Network Console Challengeに参加しました。

私はソフトウェアテスト(第三者検証)の会社に属するテストエンジニアなのですが、
QA/テストエンジニア業界でも2018年くらいからAIに関する話題がトレンドで、
「AIプロダクトの品質保証」や「AIとテスト」といったテーマがシンポジウムで講演されたり、
社内外問わず勉強会・研究会が行われています。

AIの意識は高いものの、普段の業務ではAIに触れる機会どころかプログラミングすらあまりしない状況の中、理解への壁を感じていました。
そんな中、GUIでニューラルネットワークを設計できるNeural Network Consoleを知り、
ディープラーニングを学ぶ一歩を踏み出すことができました。

このコンテストを企画してくれたレッジ様、協賛のソニーネットワークコミュニケーションズ様、
データ提供のピクスタ様に御礼申し上げます。

期間

  • 公式チャレンジ期間 2020/3/4(水)~31(火)
  • 実作業期間 3/22(日)~31(火) 帰宅後の1~2時間程度

 3/22(日) 環境構築、チュートリアル(You tube)
 3/23(月)~26(木) アノテーション、チュートリアル確認、関連本で学習
 3/27(金)~28(土) 体調不良で作業できず
 3/29(日) 学習モデル作成
 3/30(月) 学習モデル作成、アノテーションやり直し
 3/31(火) 学習モデル作成、まとめ

選択テーマ

「画像内人物をNNCで学習させ画角/焦点距離による画像分類を作り出す」
上記テーマを選択したものの、
画角/焦点距離となる分類をカメラ/レンズの情報以外でどう捉えれば良いものかなかなか思いつかず。

分類のコンセプト

アプローチタイトル「被写体の入り具合による分類~1人画像からの学習」

画像データのプロパティにあるカメラの設定値は一旦スルー。
「人物がどう写っているか」と「カメラのアングルの向き」この2つにて分類
 ⇒ 精度上がらず、カメラのアングル案を排除。人物の写り具合のみで判断する

環境

・メイン Neural Network Console Cloud (Sony様) GPU(NVIDIA® Tesla® V100 GPU*4)使用
・サブ local版 PCスペック OS:Windows10 CPU:AMD Ryzen 3 メモリ:8GB
・画像データ 人物画像データ 10000枚 (ピクスタ様提供)

※GPUとCPUの比較について
 モデルが複雑になるとCPU < GPUのパフォーマンス差が出てくると思います。
 NNCはクラウド版が便利ですね。出先で思い立ったらトライできます。

画像データ分類

以下の分類で、1人が写るものと複数人が写っているものに分け、アノテーション作業を行いました。
まず1人が写っている特徴を認識させる必要があると考えたためです。

TagNo 分類 説明 枚数
0 full 全身が写るもの 79
1 ghost 膝下が写っていないもの 92
2 dullahan 首がない、または頭部(目の有無で判断する)が欠けているもの 48
3 mediumshot 腰・胸から上が写っているもの 125
4 faceup 顔を強調した写真 132
ボツ hand 手だけ写っているもの -
ボツ angle カメラのアングル(high,low,horizon) -
ボツ cam_position カメラレンズの位置 -
ボツ direction 被写体の顔の向き(上下左右) -

当初はボツ案含めた組み合わせを多く分類していましたが精度が上がらなかったことから、
徐々にシンプルに変更していくことで結構なタイムロスとなってしまいました。
手作業のアノテーションし使用した画像データは、計476枚。
やり直しや手作業ゆえのミスもあり、心が折れる作業でした。

学習モデル

サンプルは使わず勉強のため、一からトライしてみました。
畳み込み層(C)の並列を試すも、効果のほどはわからず、
テストデータの精度も思うようには上がりませんでした。

◇ 結果:NNCクラウド版 ※NNCチャレンジに提出

■ 学習モデル
NNCC_学習モデル.PNG
■ 学習曲線
 Validation errが途中から上がっている⇒これは過学習と言えるのか
 原因はデータ量不足か。(まだこの学習曲線はまともな方だったが…)
NNCC_学習曲線.PNG
■ 検証結果
 使い物にならないレベル
NNCC_検証結果.PNG

※参考:NNC local版

■ 学習モデル
CNN.PNG
■ 検証結果
 これも使い物にならないレベル
検証結果.PNG

結果まとめ

まず、データ量不足だったと思います。
Accuracyが上がらないまま、時間切れとなりました。
ただ、NNCツールを用いたことで、
視覚的に活性化関数や損失関数の組み合わせを手軽に色々試せるようになり、
AI開発を理解する良い一歩を踏み出せたと思います。
勉強不足な点も多々あるので、この投稿もスキルアップに応じて更新していく予定です。

ご覧いただきありがとうございました。

HOLLY69
大阪の二流テストエンジニア/QAエンジニア。ヘヴィメタルと柴犬と大相撲が好きな大人です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした