YOLOv5 のインストール手順 【Windows & Anaconda】

Machine Learning

Windows パソコンで、新規に  Anaconda の仮想環境を作って YOLOv5 をインストールする手順についてまとめておきます。
USB カメラでの物体検出は動いていますが、現在のところ、静止画、動画については未確認です。わかっている範囲、動く範囲でポイントをまとめておきます。

環境: Windows 10/11 パソコン、Anaconda、USB カメラ(動作確認用)

背景

2020年に YOLOv5 がリリースされ、2021年4月には YOLOv5-P6 がリリースされています。
YOLO の動作環境としては主に、Linux や Google Colaboratory が想定されているようです。
一方、ローカルの Windows (手元にある、GPU 付き)でも、物体検出をしたいという状況がけっこう生じています。

そこで、Windows の Anaconda で仮想環境を作り、YOLO v5 を動かす方法についてまとめておきます。
なお、YOLO v5 のサイトのページを見る限りは、Windows 10 で動作確認をしている旨の記載は見つかるものの、Anaconda 等を使っての動作確認が取れているかなど詳細な環境については、はっきりしません。
このような状況から、以下、必ず正しく動くことを何ら保証するものではありませんので、ご理解をいただきますようお願いいたします。(プログラムの動きからは、未実装の機能、バグもあるのではないかと思っています。)

前提

★ Git 経由でインストールをしますので、事前に Git をインストールしておいてください。
インストール方法については、つぎのリンクを参考にしてください。
・ Git のインストール手順 【Windows】

★ 加えて、動作確認用に USB カメラ(Web カメラ)を使います。事前に入手、動作確認・設定をしておいてください。つぎのリンクの USB カメラで動作確認ができています。参考にしてみてください。
・ 動作確認済み USB カメラ 【おすすめ】

★ conda (Anaconda、miniconda)がインストールしてあることが前提です。インストールしていない場合は、事前にインストールを済ませてください。

手動ダウンロード

Windows 上での Anaconda 環境では、コマンド操作でダウンロード・インストールをすると一部、動かないところがあるようです。
そこで、重複はありますが、以下の手順で、関連するファイルをすべてダウンロードしてください。学習済みモデル(*.pt)などを、後で使います。

手順
① デスクトップ等にフォルダを作ってください。
② 以下のリンク先にアクセスしてください。
・ https://github.com/ultralytics/yolov5/releases
③ リンク先の「Assets」と記載された項目で、以下のファイルをクリックし、ダウンロードしてください。
・ yolov5l.pt、yolov5l6.pt、yolov5m.pt、yolov5m6.pt、yolov5s.pt、yolov5s6.pt、yolo5x.pt、yolo5x6.pt、Source Code (zip)
④ ダウンロードしたファイルを①のフォルダに入れてください。
zip ファイルは解凍してください。

インストール手順: YOLOv5 & Windows

つぎに YOLOv5 のインストールをします。
① Anaconda Prompt を起動します。
② 以下の手順で仮想環境(yolov5)を作成し、アクティベートします。

> conda create -n yolov5 python=3.8
> conda activate yolov5 

※ ここで “yolov5” は仮想環境の名前で任意ですので、違う名称に変えてもよいです。
③ 以下を実行し、Git 経由で YOLOv5 のソフトウェア一式をダウンロードしてください。

> git clone https://github.com/ultralytics/yolov5.git 

④ ダウンロードに成功するとカレントフォルダに “yolov5” というフォルダが作成されます。以下を参考にフォルダ “yolov5” に移動してください。

> dir /w
> cd yolov5
> dir /w  

※ ここで “dir /w” としているのはフォルダの内容を確認するためです。
⑤ 以下の手順で、YOLOv5 を動かすのに必要なパッケージを(conda install コマンドで)インストールしてください。

> conda install -c pytorch pytorch=1.7
> conda install -c pytorch torchvision=0.8
> conda install -c conda-forge pandas requests tqdm pyyaml matplotlib seaborn 

⑥ さらに、以下のパッケージを(pip install コマンドで)インストールしてください。

> pip install opencv-python
> pip install opencv-python-headless 

※ 2行目はなくても動いていますが、念のため入れています。
⑦ 前段の「手動ダウンロード」のところで取得した学習済みモデル(*.pt)をすべて、”yolov5″ フォルダの中の “weights” フォルダ内にコピーしてください。
このファイル(学習済みモデル)を参照することで、物体検出をさせることになります。

→ これで設定が完了です!

※ なお当初、⑥は、⑤と同様に conda install をしたかったのですが、うまくインストールできず、pip install で動いたため、⑥の記載としています。
※ また、”opencv-python” について、当初、”opencv” をすでにインストールした環境で動かそうとしたのですが、うまく動きませんでした。そこで、仮想環境をあらたに作って、上記のコマンドで “opencv-python” をインストールしたところ動作しました。そこで、⑥の記載としています。

YOLOv5 の使い方: 学習済みモデルで物体検出 detect.py

設定が完了したら、YOLOv5 を実際に使ってみましょう。
① USB カメラを PC に接続してください。
② Anaconda Prompt を起動してください。つぎに、以下を参考に、yolov5 フォルダに移動して仮想環境をアクティベート後、物体検出用のスクリプト(detect.py)を実行してください。

> dir /w
> cd yolov5
> dir /w
> conda info -e 
> conda activate yolov5
> conda info -e
> python detect.py --source 0

→ ライブ画像が表示され、物体検出の結果がリアルタイムで表示されると思います。

※ ここで、USB カメラからライブ画像が取得できない場合は、 “–source 0” とした “0” の番号(カメラ番号)を “1”、”2″ 等に変更して実行してみてください。カメラ番号の確認方法の詳細は、末尾の関連リンクを参考にしてください。
※ また上記で、Anaconda Prompt を新たに起動した場合は、再度、”conda activate yolov5″、”cd yolov5″ として、”yolov5″ のアクティベートと、”yolov5″ フォルダへの移動が必要です。
※ 学習モデルは、明示的に指定しないときは、デフォルトの学習モデルを参照するようになっています。詳細は detect.py のスクリプトを確認してください。

スクリプトの修正(参考)

物体検出を実行すると、“yolov5” フォルダ内の “runs/detect/” フォルダに、検出結果つきで画像や動画が保存されるようになっています。
ところが、ライブ画面を中断する方法が現在のところ不明です(スクリプト上、該当箇所が不明です)。強制的に Anaconda Prompt の画面を閉じると、書き出し中の動画が再生できなくなるようです。
プログラムを作成された方の意図が不明ですが、以下のようにスクリプトを修正し、ライブ画像の表示を中断する機能を入れたところうまく動作しましたので、参考にしてみてください。

スクリプトの修正方法

① Windows のエクスプローラで “yolov5” フォルダを開いてください。
② このフォルダ内に “detect.py” という Python スクリプトがあります。物体検出ではこのスクリプトを使います。
スクリプトを完全に元に戻せるようにするため、このスクリプトのバックアップを作ってください。(例: detect_backup.py の名前でコピーを作っておく。)
③ detect.py をテキストエディタ等で開いて、以下の修正前、修正後の記載(抜粋)を参考に、スクリプトを修正して保存してください。

修正前

            # Stream results
            if view_img:
                cv2.imshow(str(p), im0)
                cv2.waitKey(1)  # 1 millisecond

修正後

            # Stream results
            if view_img:
                cv2.imshow(str(p), im0)
#               cv2.waitKey(1)  # 1 millisecond
                key1 = cv2.waitKey(1)  # 1 millisecond
                if key1 == ord( 'q' ) or key1 == 27: 
                    break 

※ 修正の意図
ストリーム(ライブ画像)の再生中にキーイベントを判別するスクリプトが入っていないようです。
そこで、ループ内に cv2.waitKey() を追加して、[q] か、[esc] キーを検出したら、ループを抜けるように修正します。
④ この後、前述の「YOLOv5 の使い方」を参照し、物体検出を実行してみてください。

ライブ画面の停止方法

停止方法は以下の通りです。
ライブ画面をアクティブにした状態(ライブ画面をクリックする)で、PC のキーボードの [esc] ボタンか、[q] ボタンを押します(押し続けます)。
すると、プログラムが終了します。

物体検出の結果の確認方法

物体検出の実行(ライブ画面の表示)を完了したら、以下のフォルダを開いてください。
デフォルトでは実行結果を保存するようになっており、フォルダ内に結果(mp4 ファイルなど)が生成されていると思います。

フォルダ
 “yolov5/data/runs/detect/”(”C:/Users/… /yolov5/data/runs/detect/” )

※ フォルダ内の mp4 ファイルをダブルクリックして再生してみてください。
ライブで表示されていたときの動画を確認できます。物体検出結果のアノテーションが付加されていると思います。

まとめ

Windows の Anaconda 環境で、YOLOv5 を動かす方法についてまとめました。
これで USB カメラのライブ画像上で物体検出が動くようになりました。

なお、ライブ画像ではなく、静止画、動画についてもデータを流して、閾値を変えてみたのですが、物体を検出するところでうまくいっていないようで確認中です。画像サイズに起因する問題のようです。
また、この後、YOLOv5 で独自の画像を用いて機械学習を実行したところ、学習については動いているようです。これについては、後日、情報を追加しようと思います。

試しに簡単にですけれども、フルーツでの物体検出を行っています。
興味のある方は関連リンクを参照してみてください。

関連リンク
・ フルーツでの物体検出をやってみた 【YOLOv5】
・ Git のインストール手順 【Windows10】
・ 動作確認済み USB カメラ 【おすすめ】
・ 接続中のカメラ番号を抽出する 【OpenCV & Python】
・ Raspberry Pi で物体検出をやってみた 【Tensorflow Lite】
・ Anaconda Prompt コマンド一覧 【仮想環境設定】
・ オープンソースに関するまとめ 【ライセンス戦略】

タイトルとURLをコピーしました