LoginSignup
0
3

More than 1 year has passed since last update.

【YOLO】実際に使ってみた【物体検出アルゴリズム】

Last updated at Posted at 2022-06-27

1.はじめに

・上の記事でYOLOの仕組みを簡単に理解したので、実際に使ってみます。
※YOLOはPython動かせるので、Python言語を使います。

物体検出モデルには2種類あります。

①:既に学習されたモデルを使う
1.jpg
・yoloには既に開発者が学習して作ったモデルがあります。
・モデルは既に学習されているので、画像に写ってるものが何なのか検出する事ができます。

②:自分でオリジナルのモデルを作って使う
2.jpg
・モデルはまだ学習されていないので、画像に何が写ってるか判断できません。
・自分でたくさんの画像を読み込ませて、画像に何が写っているかモデルに教え込みます。

今回は①の既に学習されたモデルを使ってみます。

2.既に学習されたモデルを使う

1.jpg
・仮想環境を作る
    ⇩
・仮想環境に入る
    ⇩
・YOLOのダウンロード
    ⇩
・必要なライブラリのインストール
    ⇩
・画像の保存
    ⇩
・yoloの実行

2.1.仮想環境を作る

・一般的にPythonによる開発は、開発プロジェクトごとに仮想環境を構築して行います。
・ライブラリのバージョンの違いによるエラーを防ぎます。
・仮想環境はanacondaプロンプトで以下のコマンドを打てば作る事ができます。
anacondaprompto.png

(base)C:¥Users¥ユーザー名
conda create -n "仮想環境の名前(自分で決める)" python=3.8

・例えば"yolov5"という名前の仮想環境を作りたい場合は下記のコマンドを打ちます。

(base)C:¥Users¥ユーザー名
conda create -n yolov5

2.2.仮想環境に「入る」

(base)C:¥Users¥ユーザー名
conda activate "仮想環境の名前(自分で決める)"

・例えば"yolov5"という名前の仮想環境を作り、その仮想環境に入りたい場合は下記のコマンドを打ちます。

(base)C:¥Users¥ユーザー名
conda activate yolov5

・そうすると(bash)(yolov5)に変わります。

(yolov5)C:¥Users¥ユーザー名
conda activate yolov5

↓実際の写真
enter venv.png
・これで仮想環境"yolov5"に「入れました。」

2.3.YOLOのダウンロード

・仮想環境内で下記のコマンドを打ちます。

(yolov5)C:¥Users¥ユーザー名
git clone https://github.com/ultralytics/yolov5

githubでYOLOのコードが公開されています。
・githubにあるYOLOのコードをダウンロード(=クローン)します。
↓ダウンロードできました。
check dl yolo.png

2.4.必要なライブラリのインストール

・下記コマンドを打ってフォルダの現在位置を"ユーザー名"から"yolov5"に移動します。

(yolov5)C:¥Users¥ユーザー名
cd yolov5

(yolov5)C:¥Users¥ユーザー名¥yolov5

・この状態で下記のコマンドを打ちます。

(yolov5)C:¥Users¥ユーザー名¥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

↓デフォルトでbuszidaneという画像も入っています。
check inside of images.png

2.6.yoloの実行

・下記のフォルダの位置で、下記の形式のコマンドを実行します。

(yolov5)C:¥Users¥ユーザー名¥yolov5
python detect.py --source ./data/images/"保存した画像の名前" --weights yolov5s.pt --conf "0から1の間の数字"

もし"unacceptable character #x0080: special characters are not allowed"というエラーが出たら"coco128.yaml"ファイルの1行目から7行目を消して保存します。
delete commentout.png

・実行後、分析が終わった画像は下記の"detect"のフォルダの中にexpというフォルダが出来ています。
・実行するごとにexpフォルダが増えていき、中に画像が保存されています。

C:/Users/ユーザー名/yolov5/runs/detect

check done yolo.png

◎コマンドの意味

(yolov5)C:¥Users¥ユーザー名¥yolov5
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と言います。
IoU0から1までの間の数字です。
しきい値によって検出される範囲が異なってきます。

◎しきい値が0.4の時

(yolov5)C:¥Users¥ユーザー名¥yolov5
python detect.py --source ./data/images/vid_4_6260.jpg --weights yolov5s.pt --conf 0.4

vid_4_6260.jpg

◎しきい値が0.3の時

(yolov5)C:¥Users¥ユーザー名¥yolov5
python detect.py --source ./data/images/vid_4_6260.jpg --weights yolov5s.pt --conf 0.3

vid_4_6260.jpg
・若干精度が上がりました。

◎しきい値が0.1の時

(yolov5)C:¥Users¥ユーザー名¥yolov5
python detect.py --source ./data/images/vid_4_6260.jpg --weights yolov5s.pt --conf 0.1

vid_4_6260.jpg
・信号機が認識されるようになった!!!!!! (スコアは低め)

YOLOシリーズの違いを簡単にまとめてみた

yoloが使われてる面白そうな技術

参考ページ

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3