LoginSignup
22
30

More than 5 years have passed since last update.

Google ColabでYOLOを動かす

Last updated at Posted at 2019-03-03

モチベーション

Deep Learning基礎講座で画像の分類、テキストの生成などは学んだので、もう少し他のことも試してみたい。以下やってみたいこと

  • 物体検出(画像) <- 今回コレ
  • 物体検出(動画)
  • 画像の生成
  • 強化学習

Kaggleにも取り組んでみたいし、TensorFlow2.0もやりたいし・・・。仕事してる暇がない:sob:

物体検出に使うアルゴリズム

物体検出には

  • Faster R-CNN
  • YOLO (You only Look Once)
  • SSD (Single Shot Detector)

などいくつかのアルゴリズムがあるようですが、理論の違いはよくわかっていません。とりあえずよく名前を聞くYOLOを動かしてみることにしました。https://pjreddie.com/darknet/yolo/ によると他の方法よりも速くて正確だということです(サイトの色合いがアレですね・・・)

image.png

実行環境

色々葛藤、試行錯誤した結果、いつものGoogle Colabに落ち着きました。

  • どうもYOLOの実行はコマンドを叩けばいい(自分でPythonのコードを書く必要がない)みたいだから、ローカルマシンの方が楽そう(Google Colabではターミナルは使えない。!を付ければコマンド実行はできる)。あとGoogle Colabでは画像、動画の表示が難しそう
  • ただ、Darknet(YOLOを実現するためのフレームワーク)はLinux前提だが、ローカルマシンはWindows
  • 一応Windows版もあるが、自分でコンパイルする必要がある
  • 面倒臭そうなのでGoogle Colabにした(正確にはWindowsでチャレンジしようとしたが、その過程でCUDAがうまくインストールできなかったり、Anacondaがいつの間にかアンインストールされたりで諦めた)

書いたコード

Darknetのダウンロードとインストール。簡単!

%%bash
git clone https://github.com/pjreddie/darknet
cd darknet
make

重みのダウンロード。簡単!

cd darknet
!wget https://pjreddie.com/media/files/yolov3.weights

物体検出。簡単!

!./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

どうも通常はここで画像が表示されるようなのですが(標準ソフトが起動)、Google Colabなのでそれが実現できません。これに悩んでいましたがpredictions.jpgというファイルが新たに生成されているようです。なので、

import cv2
import matplotlib.pyplot as plt
import os.path

# 座標軸の削除処理
fig,ax = plt.subplots()
ax.tick_params(labelbottom="off",bottom="off")
ax.tick_params(labelleft="off",left="off")
ax.set_xticklabels([]) 
ax.axis('off')

file = './predictions.jpg'
if os.path.exists(file):
  img = cv2.imread(file)
  show_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
  plt.imshow(show_img)

とすることで無事インラインに画像が表示できました。

image.png

次回予告

Google ColabでYOLOの学習を行う

参考にさせて頂いたページ

22
30
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
22
30