1.はじめに
・上の記事でYOLOの仕組みを簡単に理解したので、実際に使ってみます。
※YOLOはPython動かせるので、Python言語を使います。
物体検出モデルには2種類あります。
①:既に学習されたモデルを使う
・yoloには既に開発者が学習して作ったモデルがあります。
・モデルは既に学習されているので、画像に写ってるものが何なのか検出する事ができます。
②:自分でオリジナルのモデルを作って使う
・モデルはまだ学習されていないので、画像に何が写ってるか判断できません。
・自分でたくさんの画像を読み込ませて、画像に何が写っているかモデルに教え込みます。
今回は①の既に学習されたモデルを使ってみます。
2.既に学習されたモデルを使う
・仮想環境を作る
⇩
・仮想環境に入る
⇩
・YOLOのダウンロード
⇩
・必要なライブラリのインストール
⇩
・画像の保存
⇩
・yoloの実行
2.1.仮想環境を作る
・一般的にPythonによる開発は、開発プロジェクトごとに仮想環境を構築して行います。
・ライブラリのバージョンの違いによるエラーを防ぎます。
・仮想環境はanacondaプロンプトで以下のコマンドを打てば作る事ができます。
conda create -n "仮想環境の名前(自分で決める)" python=3.8
・例えば"yolov5"という名前の仮想環境を作りたい場合は下記のコマンドを打ちます。
conda create -n yolov5
2.2.仮想環境に「入る」
conda activate "仮想環境の名前(自分で決める)"
・例えば"yolov5"という名前の仮想環境を作り、その仮想環境に入りたい場合は下記のコマンドを打ちます。
conda activate yolov5
・そうすると(bash)が(yolov5)に変わります。
conda activate yolov5
↓実際の写真
・これで仮想環境"yolov5"に「入れました。」
2.3.YOLOのダウンロード
・仮想環境内で下記のコマンドを打ちます。
git clone https://github.com/ultralytics/yolov5
・githubでYOLOのコードが公開されています。
・githubにあるYOLOのコードをダウンロード(=クローン)します。
↓ダウンロードできました。
2.4.必要なライブラリのインストール
・下記コマンドを打ってフォルダの現在位置を"ユーザー名"から"yolov5"に移動します。
cd yolov5
↓
・この状態で下記のコマンドを打ちます。
pip install -r requirements.txt
2.5.画像の保存
・物体検出したい画像をimagesフォルダの中に入れます。
・フォルダは下記の場所にあります。
C:/Users/ユーザー名/yolov5/data/images
・今回は"vid_4_6260.jpg"という画像をimagesフォルダの中に入れます。
C:/Users/ユーザー名/yolov5/data/images/vid_4_6260.jpg
↓デフォルトでbusとzidaneという画像も入っています。
2.6.yoloの実行
・下記のフォルダの位置で、下記の形式のコマンドを実行します。
python detect.py --source ./data/images/"保存した画像の名前" --weights yolov5s.pt --conf "0から1の間の数字"
・実行後、分析が終わった画像は下記の"detect"のフォルダの中にexpというフォルダが出来ています。
・実行するごとにexpフォルダが増えていき、中に画像が保存されています。
C:/Users/ユーザー名/yolov5/runs/detect
◎コマンドの意味
python detect.py --source ./data/images/"保存した画像の名前" --weights yolov5s.pt --conf "0から1の間の数字"
・python detect.py:detect.py(yolo)を実行します。
・--source ./data/images/"保存した画像の名前":物体検出する画像の位置を記載します。
・--weights yolov5s.pt:実行する既に学習されたモデル(yolov5s.pt)を選びます。
・--conf "0から1の間の数字":しきい値を設定します。
◎しきい値って何?
どれくらい枠線を消すかの基準を決める数字
$$ \huge{{0\leqq IoU\leqq1}} $$
・yoloではしきい値のことをIoUと言います。
・IoUは0から1までの間の数字です。
・しきい値によって検出される範囲が異なってきます。
◎しきい値が0.4の時
python detect.py --source ./data/images/vid_4_6260.jpg --weights yolov5s.pt --conf 0.4
◎しきい値が0.3の時
python detect.py --source ./data/images/vid_4_6260.jpg --weights yolov5s.pt --conf 0.3
◎しきい値が0.1の時
python detect.py --source ./data/images/vid_4_6260.jpg --weights yolov5s.pt --conf 0.1
・信号機が認識されるようになった!!!!!! (スコアは低め)
YOLOシリーズの違いを簡単にまとめてみた
yoloが使われてる面白そうな技術
参考ページ