SlideShare a Scribd company logo
1 of 22
新入社員の俺がDeepLearningのコード
を書いてみたら神検出率だった件
サイエンスパーク株式会社 原 英明
・2020年4月入社
・職業技術校で2年間、主にC言語、javaを中心に勉
強。
自己紹介
0. DeepLearningについて
1. YOLO・ Mask-RCNNを使った学習
2. YOLO・ Mask-RCNNを使った検出
3. 所感
概要
人工知能(AI)
機械学習(ML)
DeepLearning
・教師あり学習(正解データを与える)
・教師なし学習(正解データなし、分類が主)
・強化学習(最終的に最も報酬が得られる選択をする)
CNNというニューラルネットワークを画像認識に応用した
RCNNという手法
→・YOLO
・Mask-RCNN
0. DeepLearning(深層学習)について
学習 推論これは犬です
よ。
犬の特徴を学習
どこに犬がいますか。
これらの物体は99%の確率で犬です。
なるほど。こんな特徴
がある物体を犬と呼ぶ
のか。
機械学習(教師あり)の主なプロセス
・YOLO
・物体の画像と位置情報(矩形)が必要
・Mask-RCNN
・物体の画像と位置情報(マスク画像)が必要
1. YOLO・ Mask-RCNNを使った学習
YOLO(矩形)
Mask(マスク画像)
釘の位置情報(矩形)
釘の位置情報(マスク画像)
釘のオリジナル画像
・矩形の幅
・矩形の高さ
・矩形中心のX座標
・矩形中心のY座標
期待する検出結果(YOLO)
期待する検出結果(Mask-RCNN)
・YOLO
・物体の画像と位置情報(矩形)が必要
・Mask-RCNN
・物体の画像と位置情報(マスク画像)が必要
0からデータセットを作るのは時間がかかる。
1. YOLO・ Mask-RCNNを使った学習
Open Image Dataset V6
Open Image Dataset V6(アノテーション)
Open Image Dataset V6(セグメンテーション)
Open Image Dataset V6からデータセットをそれぞれ取得した。
・YOLO
・117個のデータセット
・Mask-RCNN
・40個のデータセット
これらのデータセットを使って学習を行い、推論時に必要となる
モデルを生成する。
1. YOLO・ Mask-RCNNを使った学習
オリジナル画像 検出結果画像
推論
・YOLOで生成されたモデル(9000回)での検出
2. YOLO・ Mask-RCNNを使った検出
オリジナル画像 検出結果画像
推論
・Mask-RCNNで生成されたモデル(2400回)での検出
2. YOLO・ Mask-RCNNを使った検出
しかし、実用的な検出は学習に使った画像だ
けではわからない。
つまり、学習に使っていない画像で検出して
みなければならない。
未知の画像で検出してみる。
高い精度で検出することができた!!!
2. 未知の画像を使った検出1(YOLO)
2. 未知の画像を使った検出2(YOLO)
2. 未知の画像を使った検出3(YOLO)
2. 未知の画像を使った検出1(Mask-RCNN)
2. 未知の画像を使った検出2(Mask-RCNN)
2. 未知の画像を使った検出3(Mask-RCNN)
・YOLO
・神検出率で未知の画像に対してもある程度対応できた。
・Mask-RCNN
・学習データに対しては神検出率で検出できたものの、
未知のデータに関しては全く検出できなかった。
→考えられる原因は、
・学習データ(量・種類ともに)が少ないこと。
YOLOが117個に対してMask-RCNNは40個。
・モデルの学習回数が少ない。
YOLOが9000回に対してMask-RCNNは2400回。
3. 所感
EOF
ご清聴ありがとうございました。
SP2006-E02

More Related Content

What's hot

What's hot (11)

Learning to forget continual prediction with lstm
Learning to forget continual prediction with lstmLearning to forget continual prediction with lstm
Learning to forget continual prediction with lstm
 
Convolutional Neural Netwoks で自然言語処理をする
Convolutional Neural Netwoks で自然言語処理をするConvolutional Neural Netwoks で自然言語処理をする
Convolutional Neural Netwoks で自然言語処理をする
 
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
Deep learning を用いた画像から説明文の自動生成に関する研究の紹介
 
深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向深層学習による自然言語処理の研究動向
深層学習による自然言語処理の研究動向
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 
人間とのインタラクションにより言葉と行動を学習するロボット, 岩橋直人
人間とのインタラクションにより言葉と行動を学習するロボット, 岩橋直人人間とのインタラクションにより言葉と行動を学習するロボット, 岩橋直人
人間とのインタラクションにより言葉と行動を学習するロボット, 岩橋直人
 
SIGGRAPH 2019 Report
SIGGRAPH 2019 ReportSIGGRAPH 2019 Report
SIGGRAPH 2019 Report
 
[DL輪読会]Dense Captioning分野のまとめ
[DL輪読会]Dense Captioning分野のまとめ[DL輪読会]Dense Captioning分野のまとめ
[DL輪読会]Dense Captioning分野のまとめ
 
データ解析の効果的学修を目指した取り組みと課題
データ解析の効果的学修を目指した取り組みと課題データ解析の効果的学修を目指した取り組みと課題
データ解析の効果的学修を目指した取り組みと課題
 
DL on Azure ML with Python where type DL = Deep Learning | Deep LOVE
DL on Azure ML with Python where type DL = Deep Learning | Deep LOVEDL on Azure ML with Python where type DL = Deep Learning | Deep LOVE
DL on Azure ML with Python where type DL = Deep Learning | Deep LOVE
 
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
音源分離 ~DNN音源分離の基礎から最新技術まで~ Tokyo bishbash #3
 

Similar to 新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件

Similar to 新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件 (10)

深層学習入門
深層学習入門深層学習入門
深層学習入門
 
Realmについて
RealmについてRealmについて
Realmについて
 
画像認識と深層学習
画像認識と深層学習画像認識と深層学習
画像認識と深層学習
 
ae-3. ディープラーニングの基礎
ae-3. ディープラーニングの基礎ae-3. ディープラーニングの基礎
ae-3. ディープラーニングの基礎
 
Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷Deep learningの概要とドメインモデルの変遷
Deep learningの概要とドメインモデルの変遷
 
Deep learningの軽い紹介
Deep learningの軽い紹介Deep learningの軽い紹介
Deep learningの軽い紹介
 
実装ディープラーニング
実装ディープラーニング実装ディープラーニング
実装ディープラーニング
 
リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介
 
MIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearningMIRU2014 tutorial deeplearning
MIRU2014 tutorial deeplearning
 
CVPR2017 参加報告 速報版 本会議 2日目
CVPR2017 参加報告 速報版 本会議 2日目CVPR2017 参加報告 速報版 本会議 2日目
CVPR2017 参加報告 速報版 本会議 2日目
 

More from Study Group by SciencePark Corp.

More from Study Group by SciencePark Corp. (20)

WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
 
YOLOとご一緒にPandasはいかがですか
YOLOとご一緒にPandasはいかがですかYOLOとご一緒にPandasはいかがですか
YOLOとご一緒にPandasはいかがですか
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
 
ドライバへのETWの埋め込み
ドライバへのETWの埋め込みドライバへのETWの埋め込み
ドライバへのETWの埋め込み
 
JTAGを使ってみよう
JTAGを使ってみようJTAGを使ってみよう
JTAGを使ってみよう
 
JTAG入門
JTAG入門JTAG入門
JTAG入門
 
初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(6)初心者向けデバイスドライバ講座(6)
初心者向けデバイスドライバ講座(6)
 
ローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみたローカルストレージでの永続化キューの方式を本気で比較してみた
ローカルストレージでの永続化キューの方式を本気で比較してみた
 
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
Azure VMを検証に使う - 便利なHyper-Vスナップショットを使う方法
 
02.超初心者向けセキュリティ入門(IoT)
02.超初心者向けセキュリティ入門(IoT)02.超初心者向けセキュリティ入門(IoT)
02.超初心者向けセキュリティ入門(IoT)
 
06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)06.超初心者向けセキュリティ入門(.netの解析と対策)
06.超初心者向けセキュリティ入門(.netの解析と対策)
 
Visual StudioでWixをビルドしてみた
Visual StudioでWixをビルドしてみたVisual StudioでWixをビルドしてみた
Visual StudioでWixをビルドしてみた
 
MacOS10.15への対応について
MacOS10.15への対応についてMacOS10.15への対応について
MacOS10.15への対応について
 
Teamsでのリモート勉強会の開き方
Teamsでのリモート勉強会の開き方Teamsでのリモート勉強会の開き方
Teamsでのリモート勉強会の開き方
 
リモートでの勉強会参加方法
リモートでの勉強会参加方法リモートでの勉強会参加方法
リモートでの勉強会参加方法
 
初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2) 初心者向けデバイスドライバ講座 (2)
初心者向けデバイスドライバ講座 (2)
 
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
 
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでSphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
 
初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)初心者向けデバイスドライバ講座(1)
初心者向けデバイスドライバ講座(1)
 
01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門01.超初心者向けセキュリティ入門
01.超初心者向けセキュリティ入門
 

新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件

Editor's Notes

  1. 今日は、自分が入社して初めて担当したプロジェクトで学んだことを発表したいと思います。 初めてAIを使った画像認識をしてみて、自分なりに流れをまとめてみました。 AI初心者の方がDeepLearningを使った学習・推論を大まかにイメージできるようにまとめたもので、 詳しい使い方や実際のコードはネットで調べれば簡単に見つけられると思いますので、今回は紹介していません。
  2. 自分は今年の4月に入社しました。入社前の2年間、職業訓練校で主にC言語、javaを中心に勉強してきました。 AIに関しては、まったく初めての状態でした。
  3. 概要としては、まずdeepLearningとは何なのかについて話します。 そのあとに、今回のプロジェクトで扱ったYOLO,Mask-RCNNの学習・検出について話します。
  4. まずディープラーニングという言葉がどこに属している言葉なのかを説明します。 機械に人間っぽいことをさせるのが広義のAI・人工知能です。 次に、特定のタスクをこなせるように人間が機械に学習させるのが機械学習です。 ここには正解データと一緒に学習させる教師あり学習、正解データを与えずに学習させる教師なし学習、強化学習と大きく3つに分けられます。 次に、深層学習(DeepLearning)は人間の神経細胞・ニューロンのつながりを参考にして作ったモデル(ニューラルネットワーク)を多層化したもので、音声認識や画像認識において高い精度で検出できる手法のことです。 これは様々なニューラルネットワークが存在していますが、その中でも最も有名なのがCNNというもので、ほかのニューラルネットワークに比べて精度が高くもっとも使われています。 このCNNをうまく画像認識向けに応用したのがRCNNで、今回使ったYOLOやMask-RCNNに使われている手法になります。
  5. 機械学習の主なプロセスは学習と推論の二つです。学習では、認識させたい物体の特徴を学習させるためにその物体の画像を読み込ませます。 次にそれらの特徴を学習したモデルを使って、初めて見た画像に対して物体の検出を行います。 例えば、機械に犬を認識させたいという場合、まず様々な種類の犬の特徴を学習させます。 その時に、物体の画像とともにその画像内にある認識させたい物体(この例では犬)の位置情報を読み込ませます。 すると、機械は大量の犬の画像を基に、犬の特徴を自分なりに定義します。 ここでは様々なデータが大量にあればあるほどより正確な特徴をとらえやすくなります。 そのあと、その定義された特徴を基にして初めて見る画像に犬がいるか、またそれはどの位置にいるのかを推論します。
  6. 今回はYOLO,Mask-RCNNと呼ばれる2つの物体検知アルゴリズムを使って釘の画像認識に挑戦しました。 まずは学習ですが、YOLOは物体の画像とその物体1つずつの位置情報(矩形)が必要です。 Mask-RCNNでは物体の画像とその物体の位置情報を示すマスク画像が必要になります。
  7. YOLOは、釘のオリジナル画像と釘それぞれの位置情報を一緒に学習させて、最終的には右上の画像のような結果が取れれば、物体をうまく検出できていることになります。 Mask-RCNNは、釘のオリジナル画像と釘それぞれの位置情報を表すマスク画像を一緒に学習させて、最終的には右下の画像のような結果が取れれば、物体をうまく検出できていることになります。 また、これらオリジナル画像と物体の位置情報を合わせたものをデータセットと呼びます。
  8. しかし、自分で一つ一つ、画像とその物体の位置情報を表すテキストデータやマスク画像を作るのは時間がかかります。 そこで今回はGoogleが公開しているOpenImageDatasetV6というオープンソースのデータセットを使って学習することにしました。
  9. 画像と矩形の位置情報が一緒になっているデータセット
  10. 画像とマスク画像での位置情報が一緒になっているデータセット
  11. Open Imageから取得したデータセット、YOLOでは117個のデータセット、Mask-RCNNでは40個のデータセットを使ってそれぞれ学習を行っていき、 推論時に必要となるモデルを生成します。
  12. 次にYOLOで生成されたモデルを使って検出を行いました。左側のオリジナル画像を使って推論を行った結果、右の画像ような検出結果が得られました。 かなり高い精度で検出できているのがわかると思います。
  13. 次にMask-RCNNで生成されたモデルを使って検出を行いました。左側のオリジナル画像を使って推論を行った結果、右の画像ような検出結果が得られました。 これもまた、かなり高い精度で検出できているのがわかると思います。
  14. YOLO、Mask-RCNNともに高い精度で検出することができました。 しかし、いま見せたのはすべて学習に使った画像で、実際に使われる状況では、検出は学習に使った画像だけではないので、 学習に使っていない画像で検出してみなければどれだけ正確に検出できるのかは測れないと思います。 それでは未知の画像で検出してみます。ちなみに使用した画像は自宅の周りを歩いて自分のiphoneで取ったものです。
  15. まずはYOLOでの検出になります。物体自体の検出はできているようです。
  16. こちらも検出できている数は多くないものの、かろうじて検出はできています。
  17. 最後の画像です。これは比較的高い精度で検出できてます。
  18. 次はMASK-RCNNでの検出ですが、うまく検出できていません。
  19. ほかの画像と同様に物体自体をうまく検知できていません。
  20. 所感。 YOLOは学習データに対しては神検出率で、未知のデータに対してもある程度対応することができたと思います。 Mask-RCNNは学習データに対しては神検出率だったものの、未知のデータに対しては全く対応することができませんでした。 考えられる原因は、2つあります。 1つ目は学習データ自体が量、種類ともに少なかったことです。 YOLOが117個のデータセットで学習したのに対して、Mask-RCNNは40個のデータセットしかありませんでした。 2つ目はモデルの学習回数が少ないことです。 YOLOが9000回に対してMask-RCNNは3500回しか学習しませんでした。 次回は、学習データの量、質ともに気を使いながら、できるだけ多く学習できるようにして、再挑戦したいと思います。
  21. 以上です。 ご清聴ありがとうございました。質問があれば受け付けます。