DeepLearning
YOLO
物体認識

BetterでFasterでStrongerなYOLOを動かす

More than 1 year has passed since last update.

CVPR2017で登場したYOLO9000: Better, Faster, Strongerを動かしてみます。
プロジェクトページを見れば動かし方があるので簡単かなと思ったのですが、Macの場合ちょっとつまづくポイントがあったので、そこを重点的に述べます。

環境はMac OS X 10.10.5, gccのバージョンは4.8です。まあ、gccはもっと新しいのを使ってもコンパイルは通るんじゃないかなと思います。

Macの場合、makeをしたときにエラーがこんにちはしてきます。お呼びじゃないのに・・・。

おまたせ
./src/utils.c:16:19: fatal error: use of undeclared identifier
      'CLOCK_REALTIME'
    clock_gettime(CLOCK_REALTIME, &now);

utils.cのclock_gettime関数なんですが、これはmacにはない関数のようです。というわけで、時間を取得してくれるmac用の代わりの処理を記述する必要があります。

stackoverflowにどんぴしゃりな回答があるので、これを利用します。俺、なにもしてない。

utils.c
/*** 前略 ***/

#include <mach/clock.h>
#include <mach/mach.h>

double what_time_is_it_now()
{
    struct timespec now;
    clock_serv_t cclock;
    mach_timespec_t mts;
    host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
    clock_get_time(cclock, &mts);
    mach_port_deallocate(mach_task_self(), cclock);
    now.tv_sec = mts.tv_sec;
    now.tv_nsec = mts.tv_nsec;
    // clock_gettime(CLOCK_REALTIME, &now);
    return now.tv_sec + now.tv_nsec*1e-9;
}

/*** 後略 ***/

これでmakeすればコンパイルが通るので、あとはプロジェクトページに従ってプログラムを実行すれば、以下のような画像が生成されると思います。

predictions.png

楽しい!
CPUで動かしてる割には処理が早い印象があります。これがFasterと自称する所以でしょうか。