昨日は @kikuchy の Diverse Podcastを支える技術 でした。
社内ドキュメントとしても使えるぐらい丁寧にまとめられた内容でしたね、素敵です!
さて、Diverseではマッチングアプリを開発しているのですが、やはり「顔は大事だよね!」という認識を皆持っているかと思います。
顔といえばOpenCVを利用した顔認識技術が最もポピュラーですね。
OpenCVの顔認識といえばHaar-like特徴分類器を利用しますが、今回はOpenCVのHaar-like特徴分類器をDockerから利用する際にほんの少しハマるところの解決法を書いてみました。
Dockerに公開されているOpenCVのコンテナ1を利用してHaar-like特徴分類器を使いたいとき、カスケードファイルがどこにあるのか悩みますよね?
Haar-like特徴分類器は、/haarcascades
というディレクトリの下に入っているので、このディレクトリを探してみます。
docker run --rm jjanzic/docker-python3-opencv find -type d -name haarcascades
./usr/local/share/OpenCV/haarcascades
どうやら/usr/local/share/OpenCV/haarcascades
にあるようです。
中を確認してみましょう。
docker run --rm jjanzic/docker-python3-opencv ls -al /usr/local/share/OpenCV/haarcascades
drwxr-sr-x 2 root staff 4096 Aug 10 19:45 .
drwxr-sr-x 5 root staff 4096 Aug 10 19:45 ..
-rw-r--r-- 1 root staff 341406 Jul 4 11:05 haarcascade_eye.xml
-rw-r--r-- 1 root staff 601661 Jul 4 11:05 haarcascade_eye_tree_eyeglasses.xml
-rw-r--r-- 1 root staff 411388 Jul 4 11:05 haarcascade_frontalcatface.xml
-rw-r--r-- 1 root staff 382918 Jul 4 11:05 haarcascade_frontalcatface_extended.xml
-rw-r--r-- 1 root staff 676709 Jul 4 11:05 haarcascade_frontalface_alt.xml
-rw-r--r-- 1 root staff 540616 Jul 4 11:05 haarcascade_frontalface_alt2.xml
-rw-r--r-- 1 root staff 2689040 Jul 4 11:05 haarcascade_frontalface_alt_tree.xml
-rw-r--r-- 1 root staff 930127 Jul 4 11:05 haarcascade_frontalface_default.xml
-rw-r--r-- 1 root staff 476827 Jul 4 11:05 haarcascade_fullbody.xml
-rw-r--r-- 1 root staff 195369 Jul 4 11:05 haarcascade_lefteye_2splits.xml
-rw-r--r-- 1 root staff 47775 Jul 4 11:05 haarcascade_licence_plate_rus_16stages.xml
-rw-r--r-- 1 root staff 395322 Jul 4 11:05 haarcascade_lowerbody.xml
-rw-r--r-- 1 root staff 828514 Jul 4 11:05 haarcascade_profileface.xml
-rw-r--r-- 1 root staff 196170 Jul 4 11:05 haarcascade_righteye_2splits.xml
-rw-r--r-- 1 root staff 75482 Jul 4 11:05 haarcascade_russian_plate_number.xml
-rw-r--r-- 1 root staff 188506 Jul 4 11:05 haarcascade_smile.xml
-rw-r--r-- 1 root staff 785819 Jul 4 11:05 haarcascade_upperbody.xml
しっかり格納されていました。
ということで、DockerからOpenCVを利用するとき、Haar-like特徴分類器は/usr/local/share/OpenCV/haarcascades
から利用するといいようです。
明日も誰かが何かを書いてくれるはず!。