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

Machine Learning

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

環境: Windows10、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 のインストール手順 【Windows10】

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

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

手動ダウンロード

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 の使い方: 学習済みモデルで物体検出

設定が完了したら、YOLOv5 を実際に使ってみましょう。
① USB カメラを PC に接続してください。
② Anaconda Prompt を起動し、つぎのコマンドを実行してください。

> conda activate yolov5
> cd yolov5
> 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 

④ 前述の「YOLOv5 の使い方」を参照し、物体検出を実行してみてください。

ライブ画面の停止方法

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

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

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

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

※ フォルダ内の mp4 ファイルをクリックして再生してみてください。動画にアノテーションが付加されていると思います。

まとめ

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

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

関連リンク
・ Git のインストール手順 【Windows10】
・ 動作確認済み USB カメラ 【おすすめ】
・ 【Python】 接続中のカメラ番号を抽出するサンプルコード 【Open CV】
・ Anaconda Prompt コマンド一覧 【仮想環境設定】
・ 【Tensorflow Lite】 Raspberry Pi で物体検出をやってみた
・ ローカル環境で django をインストールする 【Anaconda & Windows】

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