Pythonでやってみた(画像処理編1):物体検出(YOLOv3)
1.概要
Pythonを使用して物体検出をしてみます。物体検出モデルとしてYOLOv3を使用しました。
※2022年1月15日現在:リアルタイム検出がエラーのため未実装ですが静止画はできているためとりあえず投稿
2.参考資料
You only look once (YOLO) とはリアルタイムで高精度に物体を検出してくれるAIモデルです。詳細・実演はYOLO開発者:Joseph Redmon氏のTED公演をご確認ください。
YOLO実装は基本的にサイトをそのまま実行していきます。
3.環境構築(Windowsユーザー)
YOLO実装にはLinuxコマンドが必須となるためWindowsユーザーには鬼門となります。YOLO実装のために環境構築をしていきます。
3-1.WSLのインストール
Linuxコマンドを使用するためにWSLをインストールします。また使いやすいようにWindows Terminalも合わせて入れておきます(下記参照)。
3-2.Linuxコマンドの追加
4章でも説明しますがmake, gcc, g++コマンドを追加します。(ビルドするらしいけどちゃんと理解できていません。)
[Ubuntu terminal]
sudo apt install make
sudo apt install gcc
sudo apt install g++
必須ではないけどエラー対応用で下記もインストール
sudo apt install pkgconfig
4.YOLOの環境構築
YOLOを実装してきます。ターミナルは(Windows Terminalを使用して)WSLのUbuntuターミナルを使用していきます。
4-1.git cloneでdarknetファイルをインストール
cdコマンドで作業ディレクトリに移動して下記を実行します。
[Ubuntu terminal]
git clone https://github.com/pjreddie/darknet
完了したら作業ディレクトリに"darknet"フォルダが作成されます。
4-2.darknetフォルダをビルド
4-1.が完了するとdarknetフォルダが作成されます。cdコマンドでdarknetまで移動します。ディレクトリがdarknetであることを確認したら"make"を実行します。Error表記がなければ成功です。
【参考:パッケージのエラー対応】
初めてmakeコマンドを実行したら下記のように「makeコマンドはないけど下記でインストールできるよ」と出ました。"sudo apt install make"としてmakeコマンドを実行すると「別の入れて」となり、結論として3-2.の3つのコマンドをインストールしました。
4-3.YOLOの事前学習の重みをDL
事前に学習されたYOLOの重みをインストールします。
[Ubuntu terminal]
wget https://pjreddie.com/media/files/yolov3.weights
完了するとdarknetフォルダ内に"yolov3.weights"が作成されます。これで準備は完了です。
5.YOLO実行:物体検出
5-1.画像での物体検出
まずテスト画像でYOLOを試します。下記コード実行するとdarknet\dataフォルダにあるdog.jpgから物体を検出しdarknetフォルダ内に"predictions.jpg"を作成します。
[Ubuntu terminal]
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
参考までにdataファルダに"konan.JPG"を入れ下記でも実行できました。
[Ubuntu terminal]
./darknet detect cfg/yolov3.cfg yolov3.weights data/konan.JPG
5-2.リアルタイム
エラーでできないので追って・・・・
あとがき
静止画まではできたけどリアルタイムじゃないと面白くないので頑張ります。
この記事が気に入ったらサポートをしてみませんか?