1. HOME
  2. ブログ
  3. IT技術
  4. Pytorchを使ってYOLOv3で物体検出をしてみた!【機械学習】

Pytorchを使ってYOLOv3で物体検出をしてみた!【機械学習】

Pytorch(パイトーチ)とは?

今回は、Pytorch(パイトーチ) を使って、YOLOv3で物体検出してみたいと思います!

どんなものができるの?

最終的に目指すはこんなイメージです。

Pytorch(パイトーチ)は、2016年にリリースされた、比較的新しいディープラーニングのフレームワークです。

Anaconda仮想環境の作成

いつものように、Anaconda 仮想環境を作成して動かしていきます。

仮想環境の作成

AnacondaPrompt を起動し、「pytorch」という名前の仮想環境を新規作成します。

作成を進めて良いか聞かれますので、「y」を返答します。

環境ができたか確認

環境ができたかどうか、conda infoコマンドで環境一覧を確認します。

ソースコードのダウンロードとパッケージのインストール

次に作成した仮想環境を起動して、ソースコードのダウンロードと、パッケージ(Pytorch など)のインストールを行います

仮想環境の起動

先ほど作った pytorch環境を、conda activateコマンドで起動します。

pytorch のインストール

pytorch をインストールします。

お使いの環境ごとに、pytorch のインストールコマンドがありますので、詳しくはpytorch公式サイトからご自身の環境を選択して、コマンドを確認ください。

【公式サイト】
https://pytorch.org/

ソースコードのダウンロード

git cloneコマンドで、ダウンロードしてきます。

「PyTorch-YOLOv3」というフォルダが新たに作成されます。

gitコマンドが使えない場合

gitコマンドが使えないからは、以下のサイトからzipファイルでダウンロードして展開してください。

【Github】
https://github.com/eriklindernoren/PyTorch-YOLOv3

追加パッケージのインストール

pytorch 以外で、ソースコードで使われているパッケージをインストールします。

tensorflow は2系だと動かない箇所があるので、「1.14.0」をインストールします。

weights、学習用画像、ラベルファイルなどの準備

weights のダウンロード

weights をダウンロードします。

テスト用データセットのダウンロード

データセットをダウンロードして解凍します。

※unzipコマンドがなかったため、2つのzipファイルはwindows側から手作業で解凍になります。

train2014.zipval2014.zip を解凍しておきます。

データセットリストとラベルの準備

データセットリストや、ラベルを準備していきます。

※こちらも、zipファイルはwindows側から手作業で解凍になります。

instances_train-val2014.zip を解凍します。

テキストエディタで開く

2つのファイル(5k.part、trainvalno5k.part)の拡張子を.txtに変更し、テキストエディタで開けるようにします

次に、5k.part.txt、trainvalno5k.part.txt を、テキストディタで開きます。

今回は、サクラエディタ を使って説明していきます。

全て相対パスで記載されていますので、サクラエディタの置換機能を使ってフルパスに書き換えます。

「検索」「置換」を選択し、以下を入力します。

置換前:images
置換後:(ご自身の現在のディレクトリパス)/images

「すべて置換」を押して保存してください。

動作テスト

全クラスを検出するかどうかの、動作テストをします。

class0~79までの80クラスのテストと、最後にmAPが出力されれば正常動作しています。

YOLOv3で物体検出!

data/samplesフォルダに、9枚のサンプル画像があります。

それらを入力にして、物体検出をかけて行きます。

サンプル画像で物体検出を行いますが、先に出力用のフォルダを作っておきます。

物体検出開始!

それでは、検出を行います。

上手く犬、自転車、トラック(車)が検出されています。

その他8枚の画像

あとの8枚も、このような感じになります。

さいごに

Pytorch で YOLOv3 は、上手く動きましたか?

そういえば、唯一の国産フレームワークだった「Chainer」が開発終了を宣言しました。

Pytorch は、その思想を引き継いでいるフレームワークと言っても過言ではありません

ただ、Pytorch と Tensorflowのどちらをメインに使っていくか迷いどころだとは思います…

ですが、いろいろ試してみるのが一番だと思いますので、楽しんで使ってみることをオススメします!

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

関連記事

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア