SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
YOLO V3で
独自データセットを学習させて物体検出
八王子AI 2019/7/27
moto2g
内容
 YOLO V3で独自データを学習させたときの流れを紹介します
 「独自データでのモデル作りができそう」な状態になってもらえたら嬉しい
※理論の説明はありません。できません
実行したときの環境
 Windows 10 Home
 Webカメラ (Logicool C270m)
 Python 3.7.0
 Tensorflow 1.14.0
 keras
 Open CV 3.4.5.20 ※Ver.3系を指定
 matplotlib
 pillow
 VOTT 2.1.0
Python 環境構築
 Pythonの仮想環境に必要なライブラリをインストール
ex) c:¥projects¥yolo_v3をプロジェクトフォルダとします。
python -m venv 仮想環境名
仮想環境名¥scripts¥activate
pip install tensorflow
pip install keras
pip install opencv-python==3.4.5.20
pip install matplotlib
pip install pillow
YOLO 環境構築
 Yolo V3の一式をダウンロード(111KB)し、任意のフォルダに配置
https://github.com/qqwweee/keras-yolo3
ex) c:¥projects¥yolo_v3¥ にソース、フォルダ類を配置
 学習済みモデルをダウンロード(237MB)し、任意のフォルダに配置
https://pjreddie.com/media/files/yolov3.weights
ex) c:¥projects¥yolo_v3¥yolov3.weights として配置
 モデルをkeras用にコンバート
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
YOLO 動作確認
静止画
 python yolo_video.py --image
 "Input image filename:"と聞かれたらファイル名を入力する
動画
 python yolo_video.py --input hoge.mp4
YOLOの動作確認
https://github.com/AlexeyAB/darknet
YOLOの動作確認
https://www.thedodo.com/close-to-home/shih-poo-dog-yogi-looks-human
データ収集&アノテーション付与
 学習用の素材を収集してアノテーションを付ける。
 アノテーションの付与にVoTTを使用。
下記からダウンロード(96MB)してインストールする。
https://github.com/Microsoft/VoTT/releases
 iPhoneで撮影した動画(mov形式)を使用したが、VoTTではそのままでは読め
なかった。
 FullHDサイズの画像だと学習中にメモリ不足でエラーが発生した。
 ffmpegでmp4形式に変換しつつ、解像度を下げた
ffmpeg -i hoge.mov -s 416x234 hoge.mp4
アノテーションの変換
 VoTTからエクスポートした構成
 出力先フォルダ
 VOTTプロジェクト名-PascalVOC-export
 Annotations
 ImageSets
 Main
 JPEGImages
 xxx.jpg
ex) c:¥projects¥yolo_v3
 VOCDevkit
 VOC2007
 Annotations
 ImageSets
 Main
 train.txt
 test.txt
 val.txt
 JPEGImages
 xxx.jpg
②train.txt、test.txt、val.txtを作成し、
JPEGImages内のjpgファイルを列挙する。
※拡張子"jpg"は記載しない
①VOCDevkitフォルダを作成し、
VoTTから出力したファイルを配置する
 YOLO V3のソースに付属している"voc_annotation.py"で、PascalVOC形式を
YOLO V3形式に変換するが、事前にソース修正が必要。
 修正したら変換実行
python voc_annotation.py
・classesのリストを自分で学習させる内容に合わせる。
・VoTTでアノテーション位置がfloatで書かれているものを読み込めるようにする。
アノテーションの変換
voc_annotation.py:6行目あたり
classes = ["gu"]
voc_annotation.py:21行目あたり
b = (int(float(xmlbox.find('xmin').text)),
int(float(xmlbox.find('ymin').text)),
int(float(xmlbox.find('xmax').text)),
int(float(xmlbox.find('ymax').text)))
独自データ学習の準備
 ex) c:¥projects¥yolo_v3¥model_data¥my_classes.txt に独自クラスを列挙する。
改行コードはLFにしておく。
 学習用プログラムが独自クラスを使うように修正する。
 必要に応じてバッチサイズを変更(train.py:57行目、76行目あたり)
 学習用にweightsをコンバート
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
train.py:17行目、19行目あたり
"annotation_path"に"2007_train.txt"を指定する
"classes_path"に"model_data/my_classes.txt"を指定する
学習
 学習する
python train.py
 学習済みモデルは logs¥000¥trained_weights_final.h5 として生成されている
独自で学習したモデルでYOLOを実行
が、クラスとモデルの指定がうまくいかないので固定で読み込むよう修正。
tyolo.py:23行目、25行目あたり
"model_path": 'logs/000/trained_weights_final.h5',
"classes_path": 'model_data/my_classes.txt',
独自で学習したモデルでYOLOを実行
静止画
 python yolo_video.py --model logs/000/trained_weights_final.h5 --classes
model_data/my_classes.txt --image
動画
 python yolo_video.py --model logs/000/trained_weights_final.h5 --classes
model_data/my_classes.txt --input hoge.mp4
Webカメラの画像で試してみる
https://github.com/moto2g/image_recognition/tree/master/yolo3
python yolo_video_with_cam.py --image
おつかれさまでした

Mais conteúdo relacionado

Mais procurados

Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
 

Mais procurados (20)

Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 
ResNetの仕組み
ResNetの仕組みResNetの仕組み
ResNetの仕組み
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)Transformer 動向調査 in 画像認識(修正版)
Transformer 動向調査 in 画像認識(修正版)
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
BERT分類ワークショップ.pptx
BERT分類ワークショップ.pptxBERT分類ワークショップ.pptx
BERT分類ワークショップ.pptx
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用失敗から学ぶ機械学習応用
失敗から学ぶ機械学習応用
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection model
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
論文に関する基礎知識2016
 論文に関する基礎知識2016 論文に関する基礎知識2016
論文に関する基礎知識2016
 
[DL輪読会]医用画像解析におけるセグメンテーション
[DL輪読会]医用画像解析におけるセグメンテーション[DL輪読会]医用画像解析におけるセグメンテーション
[DL輪読会]医用画像解析におけるセグメンテーション
 
エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得エンジニアから飛んでくるマサカリを受け止める心得
エンジニアから飛んでくるマサカリを受け止める心得
 
【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル【DL輪読会】マルチモーダル 基盤モデル
【DL輪読会】マルチモーダル 基盤モデル
 
[DL輪読会]YOLO9000: Better, Faster, Stronger
[DL輪読会]YOLO9000: Better, Faster, Stronger[DL輪読会]YOLO9000: Better, Faster, Stronger
[DL輪読会]YOLO9000: Better, Faster, Stronger
 
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
オープンワールド認識 (第34回全脳アーキテクチャ若手の会 勉強会)
 

Semelhante a YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset

Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
2bo 2bo
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
Naoya Inada
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
charsbar
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
Yukitaka Uchikoshi
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
debug-ito
 

Semelhante a YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset (20)

レゴブロックとC#を使ったIoT体験
レゴブロックとC#を使ったIoT体験レゴブロックとC#を使ったIoT体験
レゴブロックとC#を使ったIoT体験
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
 
FlexUnit4とMockitoFlex
FlexUnit4とMockitoFlexFlexUnit4とMockitoFlex
FlexUnit4とMockitoFlex
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
20090124shibuya Trac
20090124shibuya Trac20090124shibuya Trac
20090124shibuya Trac
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみよう
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書く
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
Vue.jsスロットの近代史
Vue.jsスロットの近代史Vue.jsスロットの近代史
Vue.jsスロットの近代史
 
190925 python-windows
190925 python-windows190925 python-windows
190925 python-windows
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
 

Último

Último (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

YOLO V3で独自データセットを学習させて物体検出 / Yolo V3 with your own dataset