AI

WindowsでのYOLOv 5オブジェクトの検出(ステップ・バイ・ステップのチュートリアル)

このレポートは、Dave Daviesによる「YOLOv5 Object Detection on Windows (Step-By-Step Tutorial)」の翻訳です。


このレポートでは、YOLOv5を使用して起動し、Windowsマシンで独自の境界ボックスを作成するプロセスを段階的に実行します。 ご希望であれば、今すぐColabに移動することもできます!

基本的には、Windowsマシンでオブジェクト検出用のYOLOをインストールして実行する方法を学びたい方は続きをお読みください。機能面をご自身で確認したい場合は、Colabに移動してください。

目次

目次YOLOとは?セットアップYOLOv5のインストールすぐにYOLOに戻ります。コンソールがどのバージョンのPythonにアクセスしているのか?CUDAのインストールその後、PyTorchをインストールします。PyTorchをPythonモジュールとしてインストールウェブカメラでYOLOv5で境界ボックスを作成画像上のYOLOv5で境界ボックスを作成YouTube動画上で、YOLOv5で境界ボックスを作成YOLOv5モデル、サイズ、パフォーマンスYOLOv5ウォークスルー動画のオブジェクト検出YOLOv5実験を適切に最適化トレーニング中に検証データ上のモデル予測を視覚化するために境界ボックスデバッガを使用トレーニングと検証指標を記録して実験トラッキングで簡単に比較W&Bテーブルを使用してモデルの予測とデータセットを視覚的に探索YOLOv5 Colab最後に画像を収集し、ラベル付けしてPyTorchでYOLOv5オブジェクト検出モデルをトレーニングおすすめの読み物

YOLOでのコメントを見た後にここに辿り着いた方、境界ボックスなどに直面した方、面白そうだと思った方のために(それが私のきっかけでした)、まずは私たちが何をしているのかを簡単に見ていきましょう。

コードと手順にアクセスするには、ここをクリックしてください。

Click here to jump right to the code and instructions.

YOLOとは?

YOLOはYou Only Look Onceの略で、単一の畳み込みネットワークを使用した非常に高速なオブジェクト検出フレームワークです。 YOLOは、ピクセルごとにスイープするのではなく、画像全体を一度に見るため、大抵の場合、他のオブジェクト検出システムよりも高速となっています。

YOLOは、画像をグリッドに分割してこれを行います。それから、グリッドの各セクションが分類され、ローカライズされます(すなわち、 オブジェクトと構造が確立されます)。 それから、境界ボックスを配置する場所を予測します。 これらの境界ボックスの予測は、分類ベースのアルゴリズムとは対照的に、回帰ベースのアルゴリズムで実行されます。

一般に、分類ベースのアルゴリズムは、2つのステップで完了します。まず、対象領域( ROI )を選択し、次いで、畳み込みニューラルネットワーク( CNN )を、オブジェクト(複数可)を検出するために選択された領域に適用します。

YOLOの回帰アルゴリズムは、画像全体の境界ボックスを一度に予測します。これにより、劇的に高速になり、起動するのに扱いやすい名前が付けられます。

さて、これで準備が整いました。さっそく始めましょう。

セットアップ

You will need to install:

  • Yolov5リポジトリ
  • Python 3.8以降
  • PyTorch
  • CUDA

ご心配なく。後で各手順についてご説明します。

YOLOv5のインストール

こちらのGitHubリポジトリから入手できます。

ファイルを取得する方法:

ファイルをダウンロードしたら、保存したい場所にファイルを抽出して次に進みます。 すぐにYOLOに戻ります。

すぐにYOLOに戻ります。

次に、Pythonが必要です。 まずはこちらから最新バージョンをダウンロードします。

以前のバージョンがインストールされている場合は、手動でアドレスを指定するので、「Python x.xをPathに追加」チェックボックスをオフにしておきます。

以前のバージョンがインストールされている場合は、手動でアドレスを指定するので、「Python x.xをPathに追加」チェックボックスをオフにしておきます。

3.8でも正常に動作すると思われますが、今回は3.9で実行してみましょう。これにより、3.8以前のバージョンから移行するために行う必要があるプロセスも完了します。

Windowsコンソールを使用するので、まずアクセスしているバージョンを確認してみましょう。

コンソールがどのバージョンのPythonにアクセスしているのか?

最も簡単な確認方法は、WindowsエクスプローラーのPythonディレクトリに移動し、アドレスバーにcmdを入力することです。

[Enter]をクリックして、次のように入力してください:

python

使用しているバージョン番号が表示されます:

古いバージョンのPythonを実行している場合は、[設定]で環境変数を編集します:

そして、Path変数を編集してPythonの最新バージョンを参照します:

先ほどのようにコンソールで設定を再確認してから、次の手順に進みます:

CUDAのインストール

CUDAをインストールします。

CUDAは、NVIDIAのGPU用の並列コンピューティングプラットフォームです。 要するに、マシンは計算の一部を並行して実行することができます(高速である大きな理由がここにあります)。 この機能が無ければ、リアルタイムの境界ボックスについて話すことはなかったであろうと確信しています。

NVIDIAs CUDA Toolkitページに移動し、お使いのマシンに適用されるオプションを選択してください。 たとえば、私の場合は次のとおりです:

ダウンロード後、ファイルを起動してインストールします:

再起動が必要な場合があります。 その後、PyTorchをインストールします。

その後、PyTorchをインストールします。

PyTorchは、最も人気のある機械学習フレームワークで、モデルを定義し、推論を実行し(ここで私たちが行う内容です)、トレーニングを実行します。

「最も人気がある」と書きましたが、それは本当です:

情報源: Papers With Code Trends

PyTorchは、ほとんどの機械学習フレームワークと同様に、計算と推論をGPU上で実行し、CPU上で実行するよりも大幅に高速です。 しかし、正しく設定する必要があるので、今から設定していきましょう。

PyTorchをPythonモジュールとしてインストール

PyTorch Getting Started ページから、該当するオプションを選択します。

たとえば、私の場合は次のとおりです:

次に、与えられたコードをコピーします:

WindowsエクスプローラーでPythonスクリプトフォルダを開きます:

次に、アドレスバーにcmdと入力します:

次に、アドレスバーにcmdと入力します:

私のコード(例)は次のとおりです:

pip3 install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

私のコンソールには、いくつかの「すでにインストールされている」通知といくつかのエラーが表示されます。ただし、最初のインストールである場合は表示されないため、この通知とエラーについては気にする必要はありません。

次に、YOLOv5要件に記載されている追加モジュールをインストールする必要があります。

これらをインストールするには、解凍ファイルを含むYOLOv5フォルダを開き、アドレスバーにcmdを再度入力してEnterをクリックします。

コンソールから、必要なモジュールをインストールするために以下を実行します:

pip install -r requirements.txt

注意:この段階で、Visual Studioをインストールするように指示する大きな赤いエラーメッセージが表示される場合があります。このメッセージが表示された場合は、Visual Studioをこちらからダウンロードできます。 (このエラーはPyCOCOToolsに関連しています。)

Visual Studioをインストールした後、コンソールを介してYOLOフォルダにPyCOCOToolsを再インストールします。

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

次に、上記の要件を次のように実行します:

pip install -r requirements.txt

常套手段です

ウェブカメラでYOLOv5で境界ボックスを作成

さて、いよいよです。実際に実行に移して、ウェブカメラを使って境界ボックスを作成しましょう。

YOLOv5フォルダのコンソールに次のコードを入力してください:

python detect.py --source 0

偽装するウェブカメラやアプリケーションが複数ある場合は、この番号を変更する必要がある場合があります。 ウェブカメラやアプリケーションが1つしかない場合、ソースは例のコードのように0になります。

その後しばらくすると次のようになります:

停止したい場合は、開いているウィンドウ内のどこかをクリックしてください。

画像上のYOLOv5で境界ボックスを作成

既存の画像内のオブジェクトを検出するには、YOLOディレクトリ内のフォルダに画像を配置します。

こちらの例として、YOLOフォルダ内にディレクトリ名「images」を作成し、SEOとしてGoogleのメディアキットから写真を撮影しました:

The Google Cafe

YOLOコンソールを再び開き、次のように入力します:

python detect.py --source images/google.jpg

google.jpgのところはご自身の画像名に置き換えてください。

実行すると、次のような内容が表示されます:

保存されている場所に移動します。それから…

YouTube動画上で、YOLOv5で境界ボックスを作成

たとえば、境界ボックスを作成したり、YouTube動画上のオブジェクトを検出したりしたいと考えているとします。

これを行うには、YOLOディレクトリにもう少しモジュールをインストールする必要があります。

まず、次のように実行します:

pip install pafy

次に、次のように実行します:

pip install youtube_dl

これらのモジュールがインストールされている場合、コンソールをYOLOフォルダに再度開き、次のように入力できます:

python detect.py --source https://youtu.be/jNQXAC9IVRw

もう一度、YouTubeのURLを自分のURLに置き換えることにします。 YouTubeに投稿した私の初めての動画を例として挙げます。 その結果がこちらです:

YOLOv5モデル、サイズ、パフォーマンス

デフォルトでは、加工要件が軽いため、YOLOは最小のモデルを使用していました。 それが、私たちが上記で取り組んできたものです。

より正確なより大きなモデルを使用したい場合(より多くの処理能力を必要とする傾向がありますが)は、それを定義する必要があります。

上記の例を使用して、ウェブカメラを使用してオブジェクトを検出する場合、デフォルトのコードは次のようになります:

python detect.py --source 0

コードの末尾にサイズを追加するだけで、他の3つのモデルサイズのいずれかを使用できます:

小(デフォルト)

python detect.py --source 0

python detect.py --source 0 --weights yolov5m.pt

python detect.py --source 0 --weights yolov5l.pt

最大

python detect.py --source 0 --weights yolov5x.pt

それは常に、パワーとパフォーマンスのトレードオフとなります。

情報源: PyTorch YOLOv5 Page

YOLOv5ウォークスルー動画のオブジェクト検出

上記で紹介した内容は、Weights & Biases YouTubeチャンネルの登録者が既に見た可能性のある内容を段階的に詳しく説明しています。 まだチャンネル登録していない場合は、より素晴らしいチュートリアル、イベントなどのために今すぐ登録することをお勧めします。

動画に従って操作することをご希望の方は、上記で概説した、W&BのIvan Goncharovが作成した非常に面白い動画があるので、それをご覧ください。https://www.youtube.com/embed/gDoMYuyY_qw

YOLOv5実験を適切に最適化

ML、CVを初めて使用する場合でも、オブジェクト検出にYOLOv5を使用する場合でも、優れた習慣を構築し、適切なツールを使用することが必須です。

そのため、こちらをクリックして、5分以内の実験トラッキングのためにWeights & Biasesを使い始めてください。

ここでは、できることの例をいくつか紹介します:

トレーニング中に検証データ上のモデル予測を視覚化するために境界ボックスデバッガを使用

Bounding Box Debugger/Images

Partial media

exp

card

coco_5795.jpg

exp2

card

coco_5795.jpg

exp

card

001833.jpg

exp2

card

001833.jpg

Best-performing run

card

001833.jpg

Hopefully improved run

card

001833.jpg

cerulean-snowball-12

card

001833.jpg

Baseline

card

001833.jpg

swift-sun-17

card

001833.jpg

restful-mountain-19

card

001833.jpgStepIndex0 15

トレーニングと検証指標を記録して実験トラッキングで簡単に比較

train/box_loss

train/box_loss020406080100Step00.020.040.060.08

val/box_loss

val/box_loss020406080100Step00.010.020.030.040.050.06

metrics/mAP_0.5:0.95

metrics/mAP_0.5:0.95020406080100Step00.10.20.30.40.5

W&Bテーブルを使用してモデルの予測とデータセットを視覚的に探索

runs.summary[“evaluation”]Run ⏎

 – 5 of 13743Export as CSVColumns…Reset table

8

0

data/labels/001833.jpg

data/labels/001833.jpg

0.5856

8

1

data/labels/001850.jpg

data/labels/001850.jpg

0.6975

8

2

data/labels/000134.jpg

data/labels/000134.jpg

0.4714

8

3

data/labels/001964.jpg

data/labels/001964.jpg

0.7939

8

4

data/labels/001300.jpg

data/labels/001300.jpg

0

epoch

id

ground truth

prediction

avg_confidence

1

2

3

4

5

Weights & Biasesを使用してトレーニングプロセスを進めることの詳細については、このレポートを読んだり、トレーニングYOLOv5の以下の動画をご覧ください:https://www.youtube.com/embed/5h5UtLau3Vc

YOLOv5 Colab

ソフトウェアをインストールしたくない方や、直接使用したい方がいらっしゃるかもしれません。

そのような場合には、Colabがあります。

Colabはリアルタイムのオブジェクト検出を促進しないため、ウェブカメラなどで設定することはできません。

それでも、始めのとっかかりとしてはいいものになります。

最後に

機械学習を学び始めたばかりなら、YOLOは素晴らしいスタート地点となるでしょう。

経験豊富でコンピュータビジョンにまで精通している方には、これがお役に立てれば幸いです。

画像を収集し、ラベル付けしてPyTorchでYOLOv5オブジェクト検出モデルをトレーニング

さて、次のレベルに進む準備はできていますか?

パート2では、PyTorchでYOLOv5オブジェクト検出モデルをトレーニングするために、画像を収集し、ラベル付けする方法について説明していきます。

AI相关的一切

留言

您的邮箱地址不会被公开。 必填项已用 * 标注