LoginSignup
7

More than 3 years have passed since last update.

posted at

updated at

YOLOv3で独自データの物体検知(犬と猫の検知)をしてみよう②【YOLOv3での学習と予測編】

前回(https://qiita.com/osakasho/items/e689b6e5d49272aa1a6c)
前回のつづきです。
次からは、YOLOv3とGoogleColabを使っていきます。

Google Colaboratory

高級な機械学習環境が使えるGoogle Colaboratoryで爆速でYOLOを学習させます。
Googleアカウントを作り、Gドライブを開いてください。

①右クリックして、「アプリで開く」から「その他」を選択し、「アプリの追加」をクリックしてください。
②検索欄に Colaboratoryと打つと出てきますので、追加してください。
③追加を終えたら、Gドライブ上で右クリック→その他→GooGle colaboratoryを選択。

すると、Colaboratoryが立ち上がったらOKです。

YOLOv3で作ったデータを学習させる。

眠れぬ夜のエンジニアさんのYOLOv3テンプレを利用します。

!git clone https://github.com/sleepless-se/keras-yolo3.git
%cd keras-yolo3

kerasのバージョンを下げます。

# kerasのバージョンを指定 ➜ ランタイムを再起動 ➜ バージョン2.2.2が反映する
!pip install tensorflow==1.14.0
!pip install keras==2.2.4

先ほどの「ano_data.zip」をアップロードします。

%cd /content/keras-yolo3/VOCDevkit/VOC2007
from google.colab import files
uploaded = files.upload()

解凍します。

%cd /content/keras-yolo3/VOCDevkit/VOC2007
!unzip ano_data.zip

label用のtxtファイルの作成をします。※実行するだけです。

%cd /content/keras-yolo3/
!python make_train_files.py

tag付けしたファイルの生成をします。

# dog cat の部分は自分のアノテーションしたもので書き換えて行うこと!
!python voc_annotation.py dog cat

YOLOv3の重みをダウンロード

!wget https://pjreddie.com/media/files/yolov3.weights

keras用に合わせる

!python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

とうとう学習させる。

!python train.py 224

20分もあれば終わると思います!
学習が終えたら、左のサイドバーから「ファイル」タグを選択。
keras-yolo3→logs→000→trained_weights_final.h5

image.png

右クリックしてモデルをダウンロードできます。
ローカルで使用する場合や、保存しておきたいときはダウンロードしておきましょう。

次は、ちゃんとできてるか確認するために、画像を置いてテストします。

from google.colab import files
uploaded = files.upload()

テストする画像をアップロードします。

!python yolo_video.py --image

これで、「Input image filename:」と出るので、
自分がアップロードした画像ファイル名を入力してください。
すると予測結果がでます。

-- 判定結果 --
Found 3 boxes for img
cat 0.40 (245, 304) (700, 520)
cat 0.72 (379, 254) (628, 560)
dog 0.45 (130, 39) (310, 626)
2.5881030810000993

しっかりと入力した画像の名前が出ていればちゃんと物体検知できています。
ローカル環境でチェックすれば、ちゃんと画像が表示されて確認できます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7