1. HOME
  2. ブログ
  3. IT技術
  4. Windows 10 で YOLOv3 を自前画像で学習させる(物体検出編)【機械学習】

Windows 10 で YOLOv3 を自前画像で学習させる(物体検出編)【機械学習】

後編:物体検出モデル YOLOv3 を自前画像で学習させよう

この記事では、物体検出する機械学習モデル「YOLOv3」を、Windows 10 上で動かす方法を解説しています。

前回は、YOLOv3 を動作させる環境を構築しました。

今回は、YOLOv3 を自前画像で学習させたいと思います!

どんなものができるの?

最終的に目指すのは、以下のようなイメージです。

2つの本が、別々のものとして検出されています。

「物体検出編」では、いよいよ、これを目指します。

前回の記事はこちら

物体検出までの流れ

  1. ソースコードの準備
  2. 学習済みモデルでの動作確認
  3. 学習させる教師画像の作成
  4. 学習の前準備
  5. 学習の実行
  6. 学習状況の確認
  7. 動画ファイルで物体検出!

こちらの記事もオススメ!

YOLOv3 のソースコードの準備

始めに「YOLOv3」のソースコードを準備しましょう。

Keras 版の YOLOv3 のコードがありますので、こちらからダウンロードします。

【GitHub】
https://github.com/qqwweee/keras-yolo3

「keras-yolo3-master.zip」というファイルがダウンロードされたら、「keras-yolo3」として適当な場所に展開しましょう。

github をコマンドから使える方

github をコマンドから使える方は、以下でダウンロードできます。

今回は、「F:\dl\keras-yolo3」に展開しましたので、今後はこの想定で進めます。

学習済みモデルでの動作確認

自前画像で学習させてモデルを作る前に、ネット上に公開されている YOLOv3 の学習済みモデルを使って、動作の確認をしていきます。

YOLOv3の学習済みモデルのダウンロード

学習済みモデルを、以下の URL からダウンロードします。

【pjreddie.com】
https://pjreddie.com/media/files/yolov3.weights

ダウンロードしたファイルは、先ほどの「keras-yolo3」フォルダに保存してください。

wget コマンドを使える方

wget コマンドを使える方は、以下でダウンロードできます。

weights を Keras 用に変換

weights を Keras 用に変換します。

「Anaconda プロンプト」を起動し、前回の記事で作成した仮想環境を起動します。

プログラムの実行

「keras-yolo3」ディレクトリに移動し、以下のプログラムを実行します。

実行時のログ

以下は、実行時のログの最後です。

物体検出の動作確認

YOLOv3 で物体検出のテストをしてみます。

そのまえに、必要なパッケージをいくつかインストールしておきましょう。

画像から物体検出をしてみます。

物体検出したいファイル名を聞かれます。

画像は、ネットから適当なものをダウンロードして保存しておきましょう。

結果

無事、動作確認できました。

学習させる教師画像の作成

それでは、教師データセットとなる自前画像を準備します

今回は、手元にあった2つの本の検出にチャレンジしてみます。

2つの本の写真を、スマホで合計18枚ほど撮ってみました。

アノテーション(タグ付け)

次に、アノテーションを作成する便利なツールがあるので、以下からダウンロードしていきます。

【tzutalin.github】
https://tzutalin.github.io/labelImg/

labelimg を使う

「labelimg」というソフトを使います。

起動すると、下の画面が表示されますので、以下を指定してください。

「Open Dir」:18枚の写真が入ったフォルダ
「Change Save Dir」:アノテーションファイルを保存するフォルダ

1枚目の写真が開きますので、検出したい対象の左上で「w」を入力し、右下まで枠を描いてください。

タグとしては、本の名前の「D2C」としました。

「Save」により、アノテーションとしてファイルに保存されます。

次の画像へ

保存したら、「Next Image」で次の画像に移ります。

これを繰り返し、18画像のアノテーションを作成してください。

ちなみに、もう一冊のタグは「ADLER」としました。

学習の前準備

学習の前に、準備が必要です。

ファイルの配置

ここで、フォルダ構成とファイル構成を説明しておきます。

アノテーション

教師画像

学習ファイルリスト

ファイル名から拡張子を除いたものを列挙し保存

以下のように、ファイル名から拡張子を除いたものを列挙して、「train.txt」、「val.txt」、「test.txt」に保存してください。

最終行にも改行が必要です。

アノテーションファイルの形式変換

次に、アノテーションしたファイルを YOLOv3 用に変換します。

「vocannotation.py」の6行目の classes を以下のように変更します。

YOLOv3 のアノテーションに変換します。

3つのファイルが作成されます。

voc_classes.txtの修正

「model_data/voc_classes.txt」を修正します。

weights をコンバート

weights をコンバートします。

学習の実行

さて、いよいよ、学習を実行してみましょう!

待ちます…

待ちます…

待ちます…

すると、学習済みモデルができあがります

学習状況の確認

「Annaconda Prompt」をもう一つ起動し、「tf114」の環境を起動します。

ログのグラフ

ブラウザから、以下の URL にアクセスすると、ログをグラフ化したものを見ることができます。

【TensorBoard の URL】
http://localhost:6006/

動画ファイルで物体検出!

それでは、準備しておいた動画ファイルを物体検出にかけましょう!

動画ファイルを「test.mp4」として保存しておきます。

結果

「D2C」と「ADLER」の2つの本が、別々に検出されました!

さいごに

自前画像での物体検出、いかがでしたでしょうか?

準備する教師画像や、そのアノテーションの仕方、そのほか検出精度に関わる項目は多くあります。

ですが、精度を上げるための正解は、誰にもわかりません

Try & Error を繰り返すことが、ご自身の経験を高めていただくための第一歩です。

今回の手法も併せて、いろいろ試してみてください!

機械学習でのシステム開発依頼・お見積もりはこちらまでお願いします。
また、機械学習系エンジニアを積極採用中です!詳しくはこちらをご覧ください。

次回の記事はこちら

こちらの記事もオススメ!

関連記事

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事