自称ASIC設計者です。どなたかkaggle一緒に出ましょう。2018-05-08caffeベースで配布されているネットワークをdockerで試す、Refinedetを題材に機械学習caffe本家に含まれていない独自レイヤを使ったネットワークをcaffe実装で公開するとき、追加レイヤ分だけを含むリポジトリを作るのではなく、caffeごとforkして独自レイヤを足す形での配布が多いようです。Detector)DSSDあたりがそうですね。これらをインストールしようとするとcaffeそのものをインストールされる以上、環境が汚れるのは必至、既存のcaffeとバージョンが衝突してどうしたものかなとなりますよね。そんなときはdockerを使ってみようというお話。dockerを使えばホスト環境を汚すことなく、コンテナ内でいろいろと試すことができます。各ネットワークの配布元のDockerfileが保守されているとは限りません。fork後全く手付かずままのケースが多いです。.を実行する行が含まれています。SSDのリポジトリではなく、本家のcaffeをクローンしてるので、dockerイメージをビルドしてもSSDは同梱されていません。(というかビルドすらできない可能性があります、闇。)SSDはchainercvなどで試せばいいですが、Refinedetはまだ再現報告がなく、どうしても本家のRefinedetを試したかったので、RefinedetにはDockerfileを変更してRefinedetをビルドできるようにするPRいれてマージしてもらいました。みなさんもdockerイメージで使いたいリポジトリがあったらPR入れてみてください。dockerの勉強にもなります。docker版Refinedetの使い方さて、せっかくPRを入れたので、docker版Refinedetの使い方をまとめてみます。Refinedetについては前回の記事を読んでみてください。SSDよりも検出性能は高く、動作速度は匹敵するので、試す価値有りです。イメージのビルドまず、Refinedetリポジトリをクローンします。standalone/cpuでビルドしてイメージをビルドできます。standalone/gpuでビルドしてください。nvidia-dockerおよび、CUDA8.0が動くドライバがインストールされていることが必要です。パフォーマンスの関係上、CPUでRefindetをトレーニングするのはあまり現実的ではないです(一ヶ月以上かかる?」)。caffeベースでRefinedetを再構築すれば速くなると思いますが、修羅の道。いうわけで、初心者はトレーニングにはGPUを使いましょう。学習済ファイルを使って予測する分にはCPUでも問題なくできます。1.0.0-rc3と表示されればOKです。学習済重みファイルのダウンロード、デモの実行デモの実行には学習済重みファイルとネットワークを定義するprototxtが必要になります。'/opt/caffe/models/VGGNet/VOC0712/refinedet_vgg16_320x320/deploy.prototxt'と'/opt/caffe/models/VGGNet/VOC0712/refinedet_vgg16_320x320/VOC0712_refinedet_vgg16_320x320_final.caffemodel'がコンテナ内に存在している必要があります。ファイルはここからダウンロードして展開してください。cpコマンドでコンテナにコピーします。cpコマンドでコピーする前にコンテナの名前を獲得します。vibrant_engelbartのような表示が現れます。vibrant_engelbart:/opt/caffe/:/opt/caffe/としてやれば、ファイルをホストからコンテナの中にコピーすることができます。vibrant_engelbartとして、コンテナの中に入り、prototxtと重みファイルをそれぞれ'/opt/caffe/models/VGGNet/VOC0712/refinedet_vgg16_320x320/deploy.prototxt'と'/opt/caffe/models/VGGNet/VOC0712/refinedet_vgg16_320x320/VOC0712_refinedet_vgg16_320x320_final.caffemodel'に移してください。--save_figを実行してください。正常に実行されていれば、結果はコンテナ内の/opt/caffe/examples/images内に*_dets.jpgという名前で格納されています。.とすることで取り出すことができます。こちらはデモの結果の一つ。バスだけでなく、運転手まで検出できています。Refinedetのトレーニングdocker内でRefinedetをトレーニングすることもできます。トレーニングを開始する前に、プレトレーニング済重みファイルと、このページを参考に学習データをダウンロードすることが必要になります。cpコマンドでコンテナ内の/opt/caffe/models/VGGNet/VOC0712/に移してください(VOC2007、2012データを使う場合)。refindet:gpuとすることで、ホスト側のディレクトリをマウントすることもできます。学習データから、LMDBの作成を行う必要がありますが、こちらはコンテナから行えます。学習データは大きいので、ディスク容量がもったいないときはこちらがおすすめ。./data/VOC0712/create_data.shで、LMDBを作成できます。ここまで、できれば、いよいよトレーニングを開始できます。examples/refinedet/VGG16_VOC2007_320.pyと打って、ロスの減少を確認します。書いてしまいましたが、コンテナのビルドは1コマンドでできるので、あとは必要なファイルを適切にダウンロードしておければ問題なくトレーニングを開始できます。»プロフィールid:segafrederverilog書いたり、でもPythonが好きだったり、そんな人の日記。月別アーカイブはてなブログをはじめよう!segafrederさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。