機械学習

ColaboratoryでChainer使ってYoloを動かす

ColaboratoryでChainer使ってYoloを動かす

こんにちは。技術系ブロガーの”はやぶさ”@Cpp_Learningです。

本記事ではタイトルの通り『ColaboratoryでChainer使ってYoloを動かす』方法を分かりやすく説明します。

また、Twitterで「トラブルシュート付き『技術ノート』を作成しています」という内容のツイートをしたら、結構評判良かったので…

 

今回は本ブログの名に恥じない”はやぶさ”の技術ノートを公開したいと思います。

本記事では”Chainer”と”Yolo”については詳しく説明しません。文章が長くなって読むのが辛くなってしまうので…

Colaboratoryとは

Google Colaboratoryについては下記の記事で紹介しています。もし、Colaboratoryの使い方に不安のある人は、一度読んでみてから、本記事を読むと理解が早いと思います。

あわせて読みたい
ColaboratoryでPython
環境構築不要でPython入門!Google Colaboratoryの使い方を分かりやすく説明今からプログラミング覚えるなら、言語はPythonが良い!という話しを聞く機会は多いと思います。他の言語に比べ短いコードで書けるPyth...

Chainer・Yoloについて

冒頭での述べた通り、”Chainer”と”Yolo”については詳しく説明しません。ただ、全く説明しないのも心苦しいので、少しだけ触れます。

Chainerとは

Chainerとは、国産の深層学習フレームワークです。慣れや好みもありますが、使いやすいのでChainer大好きです!(Kerasも大好きです!)

本記事ではChainerファミリのひとつで画像処理に特化したライブラリChainerCVも使ってYoloを動かします。

Yoloとは

Yoloとは、You Look Only Onseの略称でリアルタイム物体検出アルゴリズムの一つです。リアルタイムとあるように、速さが売りのアルゴリズムです。

Yolo公式サイトちょっちアレなので、損してるとか…してないとか……。個人的には性能の良いYoloも個性的なサイトも大好きです。

ColaboratoryでChainer使ってYoloを動かす

以降から『ColaboratoryでChainer使ってYoloを動かす』の実践編を説明していきます。

環境構築

何をするにも、まずは環境構築から行います。Colaboratoryにアクセスし「Python 3の新しいノートブック」を作成します。

Colaboratory へようこそ

真っ新なノートブックのセルに下記のコードを書い実行しすると、必要なソフトをインストールできます。

!apt -y install libcusparse8.0 libnvrtc8.0 libnvtoolsext1
!ln -snf /usr/lib/x86_64-linux-gnu/libnvrtc-builtins.so.8.0 /usr/lib/x86_64-linux-gnu/libnvrtc-builtins.so
!pip install chainer
!pip install cupy-cuda80

ChainerCVインストール

今回はChainerCVも使いたいので、先ほど同様セルに以下のコードを書いてインストールします。

!pip install chainercv

これで環境構築完了です。

画像ファイル アップロード

Colaboratoryはオンライン実行環境なので、ローカルPCに保存したファイルを参照できません。そのため、Colaboratoryが参照できるようにテスト用の画像ファイルをアップロードしてあげます。

画像に限らず、ファイルのアップロードには以下のコードを使います。

from google.colab import files
uploaded = files.upload()

セルを実行すると「ファイル選択」ボタンが表示されるので、クリックしてアップロードしたいファイルを選択します。今回は「dog.jpg」をアップロードしました。

黄色□のようにSavingが表示されればOKです。

ColaboratoryでChainer使ってYoloを動かす

アップロードしたファイルは時間が経つと自動的に削除されるようです。ただ、一時的でもネット上にファイルを保存するため、ファイルの取り扱いには、お気をつけ下さい。

Yolo_Chainer.py 作成

ChainerでYoloを動かすSampleソースコードは、ChainerCV公式Githubから取得できます。ただし、パーサーを使用するため、Colaboratory(Jupyter Notebook)からは実行できません。

そのため、パーサー未使用になるように改良したコード(以降このコードをYolo_Chainer.pyと呼ぶ)をセルに書きます。

パーサーが使用できないため、各設定が固定となります。今回作成した『Yolo_Chainer.py』は以下のような仕様にしました。

  • Yoloのバージョン:YoloV3
  • GPUの使用/未使用:GPU使用
  • 学習モデル:VOC2007

GPU有効化

ColaboratoryでGPUを使う場合、タブの「ランタイム」→「ランタイプのタイプを変更」→「ハードウェア アクセラレータ」→「GPU」で保存します。(下図参照)

ColaboratoryでChainer使ってYoloを動かす

Yolo_Chainer.py 動作確認

GPU有効化し、Yolo_Chainer.pyを実行します。下図のような物体検出結果が出れば成功です。

ColaboratoryでChainer使ってYoloを動かす

初回は学習モデルをダウンロードするため、時間がかかりますが、2回目からは、すぐにYoloを動かせます。

”はやぶさ”の技術ノート

『ColaboratoryでChainer使ってYoloを動かす』方法を説明しました。最後に、この記事を作成するにあたり、様々な検討を行いながら作成した”はやぶさ”の技術ノートを公開します。

”はやぶさ”の技術ノート:Yolo_Chainer編

メモあり、エラーレポートありで見栄えは悪いですが、そういったものをあえて残すことで現役エンジニアの思考を視覚化できるため、勉強の手助けになるかなぁ…と考えています。

本記事を読んで下さった皆様が、『自分用の技術ノート』作りたい!!と思ってくれたなら、嬉しく思います。

(『”はやぶさ”流の技術ノート作成方法』の記事もいつか書きたいなぁ。。)

ColaboratoryとChainerで快適な機械学習ライフを満喫してくださいな(^^)