SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
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
おつかれさまでした

Weitere ähnliche Inhalte

Was ist angesagt?

【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
【DL輪読会】DINOv2: Learning Robust Visual Features without SupervisionDeep Learning JP
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision TransformerYusuke Uchida
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII
 
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜SSII
 
Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Yoshitaka Ushiku
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Preferred Networks
 
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までーDeep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までーnlab_utokyo
 
それでも私が研究を続ける理由
それでも私が研究を続ける理由それでも私が研究を続ける理由
それでも私が研究を続ける理由Hitomi Yanaka
 
CNNの構造最適化手法について
CNNの構造最適化手法についてCNNの構造最適化手法について
CNNの構造最適化手法についてMasanoriSuganuma
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
MLP-Mixer: An all-MLP Architecture for Vision
MLP-Mixer: An all-MLP Architecture for VisionMLP-Mixer: An all-MLP Architecture for Vision
MLP-Mixer: An all-MLP Architecture for VisionKazuyuki Miyazawa
 
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object DetectionDeep Learning JP
 
[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric
[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric
[DL Hacks]Simple Online Realtime Tracking with a Deep Association MetricDeep Learning JP
 
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual VideosDeep Learning JP
 
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向SSII
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習cvpaper. challenge
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習Preferred Networks
 

Was ist angesagt? (20)

【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
 
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
 
Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までーDeep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
Deep Learningによる画像認識革命 ー歴史・最新理論から実践応用までー
 
それでも私が研究を続ける理由
それでも私が研究を続ける理由それでも私が研究を続ける理由
それでも私が研究を続ける理由
 
CNNの構造最適化手法について
CNNの構造最適化手法についてCNNの構造最適化手法について
CNNの構造最適化手法について
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
MLP-Mixer: An all-MLP Architecture for Vision
MLP-Mixer: An all-MLP Architecture for VisionMLP-Mixer: An all-MLP Architecture for Vision
MLP-Mixer: An all-MLP Architecture for Vision
 
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
 
[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric
[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric
[DL Hacks]Simple Online Realtime Tracking with a Deep Association Metric
 
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
[DL輪読会]BANMo: Building Animatable 3D Neural Models from Many Casual Videos
 
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
SSII2021 [OS2-02] 深層学習におけるデータ拡張の原理と最新動向
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習【メタサーベイ】数式ドリブン教師あり学習
【メタサーベイ】数式ドリブン教師あり学習
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
 

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

レゴブロックとC#を使ったIoT体験
レゴブロックとC#を使ったIoT体験レゴブロックとC#を使ったIoT体験
レゴブロックとC#を使ったIoT体験Shigeharu Yamaoka
 
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking tools
【第11回 クラウドごった煮(コンテナ勉強会)】Docker networking toolsNobuyuki Matsui
 
「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 12Takanori Suzuki
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集Wataru NOGUCHI
 
20090124shibuya Trac
20090124shibuya Trac20090124shibuya Trac
20090124shibuya TracKazuya Hirobe
 
Cent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう2bo 2bo
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto studyNaoya Inada
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
Mojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようMojolicious::Liteを使ってみよう
Mojolicious::Liteを使ってみようcharsbar
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-studyNaoya Inada
 
Python開発環境三種の神器
Python開発環境三種の神器Python開発環境三種の神器
Python開発環境三種の神器Yukitaka Uchikoshi
 
Linuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くLinuxのユーザーランドをinitから全てまるごとgolangで書く
Linuxのユーザーランドをinitから全てまるごとgolangで書くTetsuyuki Kobayashi
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すAromaBlack
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
Vue.jsスロットの近代史
Vue.jsスロットの近代史Vue.jsスロットの近代史
Vue.jsスロットの近代史fuku68
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!debug-ito
 

Ähnlich wie 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つける!
 

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