このシリーズではリアルタイム物体検出のYOLORについて、環境構築から学習の方法までまとめます。
YOLORは2021年に公開された最新バージョンであり、高速度な推論が可能です。
第1回目である今回は、公式のチュートリアルに沿って推論デモを紹介します。
Google colabを使用して簡単に実装することができますので、ぜひ最後までご覧ください。
今回の目標
・YOLORの概要
・YOLORの導入
・チュートリアルの推論
YOLORとは
YOLORは「YouOnlyLearnOne Representation」の略で、オブジェクト検出用の最先端の機械学習アルゴリズムです。
「暗黙知と形式知を一緒にエンコードする統合ネットワーク」として提案されています。
YOLOという名前がついていますが、作成者・アーキテクチャ・モデルインフラストラクチャなどがこれまでのYOLOv1-YOLOv5「YouOnlyLookOnce」とは異なります。
YOLORの特長
新しいYOLORアルゴリズムは、比較アルゴリズムの予測される追加コストの一部を使用してタスクを実行することを目的としています。
暗黙的および明示的な知識を一緒に処理し、その方法論のために洗練された一般的な表現を生成できる統合ネットワークです。

最先端の手法と組み合わせることで、YOLORはスケーリングされたYOLOv4と同等のオブジェクト検出精度を達成し、推論速度は88%向上しました。
モデルと性能
従来モデルとの性能比較は以下の表の通りです。

学習済モデルと性能は表の通りとなります。

YOLOR の導入
ここからはGoogle colabを使用して実装していきます。
まずはGPUを使用できるように設定をします。
「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更
今回紹介するコードは以下のボタンからコピーして使用していただくことも可能です。
from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive
まずはPytorchをバージョン指定してインストールします。
!pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
公式よりcloneしてきます。
!git clone https://github.com/WongKinYiu/yolor
%cd yolor
必要なライブラリをインストールします。
!pip install -qr requirements.txt
以上で導入は終わりです。
学習済モデルによるデモ(YOLOR-P6)
まずはYOLOR-P6によるデモです。
学習済モデルのダウンロード
YOLOR-P6をダウンロードします。
!gdown 'https://drive.google.com/uc?id=1Tdn3yqpZ79X7R1Ql0zNlNScB1Dv9Fp76'
画像でテスト
画像はサンプルとして用意されていますので、そのまま実行しましょう。
!python detect.py --source inference/images/horses.jpg --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0

horses.jpg: 896x1280 5 horses, Done. (0.056s)
高速に推論できていることがわかります。
動画でテスト
動画はサンプルが用意されていないので、自分で用意する必要があります。
画像と同じ場所に動画をアップしてから実行しましょう。
!python detect.py --source inference/images/drive.mp4 --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0
結果を動画にしました。
学習済モデルによるデモ(YOLOR-D6)
次にYOLOR-D6によるデモです。
まずはブランチのクローンをします。
!git clone https://github.com/WongKinYiu/yolor/ -b paper
%cd yolor
あとはYOLOR-P6の際と同様に実行しましょう。
画像
!python detect.py --source inference/images/horses.jpg --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0

horses.jpg: 896x1280 5 horses, Done. (0.089s)
先ほどより推論速度は劣りますが、精度が向上していることがわかります。
動画
!python detect.py --source inference/images/horses.jpg --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0
まとめ
最後までご覧いただきありがとうございました。
第1回では導入からチュートリアルまでを紹介しました。