PythonManiaスマートフォン用の表示で見るPythonMania普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。2019-05-02【Python】YOLOv3でオリジナルデータを学習させてみるYOLO今回自前のデータを用意しYOLOv3で学習を行ってみたいと思います。YOLOの環境設定、アノテーションデータの作成は以前の記事をご覧ください。YOLOの環境設定www.pythonmania.workアノテーションデータの作成www.pythonmania.work作成したアノテーションデータは画像ファイルと同じディレクトリに入っているものとします。test.txtの作成トレーニング・バリデーションデータを分けるために、それぞれに使用する画像データ全てのパスを記載した.txtファイルを作成しますそれぞれに記載するパスは/build/darknet/x64/以降の相対パスを記載します。トレーニングdata/img/train1.jpgdata/img/train2.jpgdata/img/train3.jpgテストdata/img/test1.jpgdata/img/test2.jpgdata/img/test3.jpgそれぞれの.txtファイルは画像・アノテーションデータが入っているディレクトリに保存しておきます。2class.txtの作成class.txtを作成し、検出するクラス名を記載して保存しておきます。検出したい物体が「car」のみの場合にはcarとだけ記入しておきます。これも画像・アノテーションが入っているフォルダに入れておきます。3.nameファイルの作成x64/dataに入っているopenimages.namesを編集し、2同様に検出するクラス名だけを記入して保存しておきます(念のため「test.names」にファイル名を変更して保存しておきました)4.dataファイルの作成x64/dataにあるvoc.dataファイルを編集し、以下の内容を入力します。backup/クラス数やそれぞれのパスは環境に合わせて変更してください。学習時の重みファイルの保存先になります。編集後、別名で同ディレクトリに保存しておきます今回の場合はtest.dataで保存しました5.cfgファイルの作成x64/に保存されている、yolov3.cfgを編集していきます。Fでclassesを検索し、検出するクラス数を変更します。今回は1クラスの検出なので1に変更しておきます。こちらは全部で3か所変更する必要があります。今回の場合、18に変更します。memory」エラーが発生する場合があります。その場合はファイル冒頭のsubdivisions=の部分を増やしていくとうまく動くと思います。memoryのエラーが消えない場合にはタスクマネージャー等で正しくGPUが動いているかチェックしてみてください。以前の記事で記載した、「makefileの編集」→「darknetのビルド」の手順ができていないと、GPUを認識できていない可能性が高いです。僕の場合最終的に以下のような設定でうまく動きました。1.5hue=.17学習の実行まず重みの初期値として、以下からdarknet53.conv.74をダウンロードしてきて、build/darknet/x64に保存しておくhttps://pjreddie.com/media/files/darknet53.conv.74上記まで出来たら、AnacondaPromptで以下のコマンドで学習が実行されます。darknet53.conv.74学習が進むにつれてbackup/にweightファイルが吐き出されます。8テスト以下のコマンドで画像ファイルに対して検出を行うことができます。0.01それぞれのファイル名、パスは適宜変更してください。はてなブログPro普段はロボットとAIを組み合わせて色々作ってます。趣味で音楽とか映像も作ってます。お酒と音楽が好きです。EngineにDjangoアプリをデプロイしてみる月別アーカイブはてなブログをはじめよう!mizuhiki0111さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。