物体検出であるyoloを自分のPCではなく,Colaboratory(無料)で学習させるための記事です.
google Colaboratoryは一般にpythonでコードを書いて実行するものではありますが,Linuxコマンドを使用できるのでC言語での実行ファイルも実行することができます.
本記事ではdarknetの転移学習をColaboratory上で実行させる手順を記載します.
学習用ファイルの準備
まずは転移学習に用いるファイルの構築をします.
http://shibafu3.hatenablog.com/entry/2017/08/24/124826
を参考にしてください.
一度ご自分のPCで起動ができる状態まで試すと良いです.
また,この際にGPUが付いていないPCを使用している人はMakefileを
GPU=0
CUDNN=0
OPENCV=0
OPENMP=0
DEBUG=0
とする点に注意してください.
起動を確認したらもういちどMakefile
GPU=1
CUDNN=1
OPENCV=0
OPENMP=0
DEBUG=0
と書きなおしてしておいてください(Colaboratory上でmakeを行います).
google driveにファイルをアップロード
google driveにログインして,作成したdarknetフォルダをまるごと「マイドライブ」にドラッグ&ドロップします.
Colaboratoryに接続
まずはこちらからcolaboratoryに接続しましょう.
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
学習でGPUを使えるように設定します.
ランタイム→ランタイムのタイプを変更
を押して
ハードウェアアクセラレータをNoneからGPUに変更してください
これでGPUが使えるようになります.
次にいらないセルを全て削除したいので,
変更→すべてのセルを選択
を押して,Deleteキーを押せばすべて削除できます.
google driveをcolaboratoryにマウント
ファイル→ドライブをマウント
を押すとgoogleドライブマウントするためのプログラムが書かれたセルが出てくるので(右上の赤四角で囲まれた部分が接続中or初期化中となっていたら少し待機)
ここでShift+Enterを押してセルのプログラムを実行すると,google driveへのアカウントのアクセス許可が求められるので,
出てきたURLをクリック→使っているアカウントを選択→許可→出てきた文字列をコピー
今回私は「4/rgFzIUfdKNF8Lm_4cX-5rFhVgnEz6aztThLUecjpPzdxdhufOuJEsSI」と出てきたので,
これをColaboratoryで出てきたEnter your authorization code:
のところに貼り付け→Enterキーを押す
しばらくしたあと
··········
Mounted at /content/drive
と出ればOKです.
学習の実行
まずはMakefielを実行しましょう.
Colaboratory上でコードセルを出して
!make
と打ちましょう.
カレントディレクトリを変更したいので
%cd /content/drive/My Drive
を実行してカレントディレクトリをgoogle drive上のホームディレクトリ
/content/drive/My Drive
に変更します.
次にmakeを実行するために
cd darknet
!make
を実行してmakeが終了するのを待ちます.
(このmakeはColaboratory上のGPUに対応させるために必要です.)
!chmod 777 darknet
!./darknet detector train cfg/obj.data cfg/yolov2-tiny.cfg yolov2-tiny.weights
とすれば実行できます.以下のようになっていたら成功.