画像に写っているものを検出する「物体検出」にはR-CNNやSSD,YOLOといったディープラーニングを用いた手法があります。
なかでもYOLOは処理速度が速く精度も高いといわれています。
このYOLOにはいくつかバージョンがあるのですが、今回は最新バージョンであるYOLOXをGoogleColaboratoryで試す方法について記載していこうと思います。
最終的には自分で用意した画像から学習データを作成して、そのデータでYOLOXを学習させ自作のPythonアプリに組み込むところまでやろうと思います。
・【YOLOXで自前のアプリを作る。その1】- YOLOXで学習させるための、COCO形式の自前データセットを作成する。
・【YOLOXで自前のアプリを作る。その2】- GoogleColaboratoryでYOLOXをとりあえず試す。 ← イマココ
・【YOLOXで自前のアプリを作る。その3】- GoogleColaboratoryでYOLOXの学習を行う。
・【YOLOXで自前のアプリを作る。その4】- YOLOXを自作のアプリに組み込む。
【参考】
・GitHub - Megvii-BaseDetection/YOLOX
・【物体検出】YOLOXまとめ|第1回:導入からチュートリアルまで
環境
・GoogleColaboratory
流れ
- GoogleColaboratoryで新規プロジェクトを作成
- GoogleColaboratoryでYOLOXの環境構築をする。
- YOLOXのデモを試す。
GoogleColaboratoryで新規プロジェクトを作成
こちらからGoogleColaboratoryを開きます。
ノートブックを新規作成
を押してノートを作成します。
そうしたらとりあえず左上のUntiled.ipynb
と書いてあるところをクリックして任意のノート名に変更しておきましょう。
GPUを使うので忘れずにメニューバーのランタイム
からランタイムのタイプを変更
を押してハードウェアアクセラレータ
をGPU
に変更しましょう。
GoogleColaboratoryでYOLOXの環境構築をする。
YOLOXが動くように環境構築を行います。
まずはYOLOXのソースや学習したデータ、出力結果などをGoogleDriveに保存するために、GoogleDriveに接続します。
from google.colab import drive
drive.mount('/content/drive')
アカウントの選択やアクセス許可等のポップアップが出ると思いますので許可します。
これで、GoogleColaboratoryからGoogleDriveにアクセスできるようになります。
GoogleDriveのマイドライブへは/content/drive/MyDrive
でアクセスできます。このMyDrive/
にYOLOXのソースなどを格納していきます。
次に公式GitHubのQuick StartのInstallationを参考に環境構築します。
%cd /content/drive/MyDrive
!git clone https://github.com/Megvii-BaseDetection/YOLOX
%cd /content/drive/MyDrive/YOLOX
!pip install -U pip && pip install -r requirements.txt
!pip install -v -e .
YOLOXのデモを試す。
公式にデモ用のソースが用意されているのでそれを使って試していきます。
デモを実行する前に学習済みの重みデータが必要なのでダウンロードします。
モデルの大きさごとに、
YOLOX-s, YOLOX-m, YOLOX-l, YOLOX-x, YOLOX-Darknet53, YOLOX-Nano, YOLOX-Tiny
といった種類が用意されています。今回はYOLOX-sを使用します。
公式GitHubのBenchmarkの表にあるweightsからYOLOX-sの重みファイルをダウンロードして、
GoogleDriveのYOLOX/
にアップロードしておきます。
アップロードしたら公式GitHubのQuick StartのDemoにデモ用のコマンドが用意してありますので、それを参考にデモを実行します。
%cd /content/drive/MyDrive/YOLOX
!python tools/demo.py image -n yolox-s -c ./yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu