CNNベースの物体検出sellDeepLearning,dlib,pybind11dlibの物体検出は、簡単に使えるし、素晴らしい性能ですが、時々誤検出が発生することもあります。learningを利用した物体検出は、HOGの検出器よりも性能よさそうなので試してみました。dnn_mmod_ex.cpp学習データからモデルをトレーニングするサンプルです。ビルド方法はこちらを参考に。このサンプルを実行した時、私のようにGPUがしょぼい環境だと、以下のようなエラーが出ると思います。memoryこのサンプルを動かすためには、5GB以上のRAMが必要みたいです。私が使っているiMacのGPUはメモリが1GBしかありません。PASSバッチサイズを小さくして対応します。rateを下げる閾値は大きくしておきます。rateが小さくなってしまい、モデルの学習がうまくいきません。変更しました(もっと大きい値でもいいかも)。trainer.set_iterations_without_progress_threshold(3000);これでとりあえず学習は始まりました。いえ、どれくらい時間がかかるのか分からないので中断しました。サンプルでは5分ごとにモデルが保存されているので、次に学習を再開した時はそこから続きが出来ます。2509dnn_mmod_face_detection_ex.cpp顔検出のサンプルです。学習済みのデータをダウンロードして使います。from:http://dlib.net/files/mmod_human_face_detector.dat.bz2実行してみると、またメモリ不足。その場合も、画像の拡大率をやや抑えないと実行できませんでした。使う場合は、モデルの定義が違うのでそのままでは動きません。increased.感想GPUがあれば非常に高速に処理できるし、性能もバッチリな感じがします。対応予定は無さそうですが、モデルを使ったpredictがPythonから出来るだけでもうれしいな。使えばできるかなと思い、試作を始めたところでこれを見つけました。pybind11なるものを使ってPythonバインディングしている先人がおりました。これを参考にしてやってみたら出来ました。ちなみに、dlibのPythonバインディング自体をpybind11にしようかという話題もあります。pybind11は初めて使ってみましたが、boost:pythonより良さそうに思いました。