質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

5352閲覧

OpenCV haarcascadeによる検出精度の向上

KenKenPaPPa

総合スコア24

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2017/01/18 12:27

お世話になってます。
現在大学3年生で最近プログラミングの勉強を始めた者です。

OpenCV3、haarcascade_mcs_nose.xmlを使って鼻検出をしたのですが、検出精度が悪く、精度は40%ほどです。
detectMultiScaleのパラメーターを変える他に、精度の向上を図る手段はないのか、サイトで調べたのですが
鼻検出についての記事が少なくて困っています。
もし、何か別のアプローチの仕方があれば教えてもらいたいです。
どうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

鼻は顔の中で隆起している部分で
目や口に比べて色自体の変化は乏しいです
つまり目に見える部分は
ほとんどが凹凸によって生じる影で
影であるが故に見た目が変化しやすいです

したがって
光のあたる方向によって
見かけが大きく変わります
また光の方向だけでなく
晴天と曇天
直接照明と間接照明などの
光の拡散の仕方でも変わります

鼻の形状については
遺伝的な人種がしぼられる場合は
似たり寄ったりですが
日本人のように遺伝的に多様な環境で
しかも顔の凹凸が緩やかだと
認識はより困難になると思います

鼻よりも目や口の方の認識精度が高いなら
顔に対する目や口の座標や大きさから
鼻の座標や大きさを限定する関数を作成し
その範囲に対してのみ認識処理を行う
という方法がまず考えられます

分類器を作成する上で
一番手っ取り早い方法としては
下記のようなものが良いと思います

1.鼻を認識できなかった顔部分の画像を切り出し多数保存する
2.検出してほしい鼻部分を手作業で指定し切り出し正解画像とする
3.それ以外の部分を大きさ形状ランダムで切り出し不正解画像とする
(この不正解画像に正解画像の一部が含まれないように注意)
4.正解・不正解画像を元に分類器を作成し合わせて使用する

データセットを自前で用意する場合は
「光源の方向や種類が特定できるもの」
「多数の人を撮影したもの」を用意し
最終的には手作業で鼻部分を指定していく必要があります

投稿2017/01/19 06:09

e-cube

総合スコア284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KenKenPaPPa

2017/01/19 16:44

丁寧な回答ありがとうございます! 分類器についてはもう少し自分で調べた上で 参考にさせていただこうと思います。 あと、もう一つお聞きしたいことがあります。 "鼻よりも目や口の方の認識精度が高いなら 顔に対する目や口の座標や大きさから 鼻の座標や大きさを限定する関数を作成し その範囲に対してのみ認識処理を行う" これについてなのですが、探索処理が狭まるだけで 精度は上がるものなのでしょうか?
e-cube

2017/01/19 17:07

まず額のシワなどを鼻と認識してしまうといった 誤検知を減らすという意味で精度向上になると思います 他にも鼻のありそうな部分を切り出して 陰影をはっきりさせる前処理をかけてから 認識させることで認識精度を上げる といったことができるかも知れません
KenKenPaPPa

2017/01/22 17:03

陰影をはっきりさせる前処理は新しい発見でした。 やってみようと思います! 丁寧に教えていただきありがとうございます!
guest

0

すぐに思いつくものとしては、

ハールライクカスケードの顔全体の検出を使ってから、その中で鼻の検出をする。

ハールライクカスケードを使うのを諦めて、ディープラーニング(例えばリカーシブネットやリカレントCNN)を使う。

などですかね。

ハールライクカスケードの顔検出の精度はまあまあだった記憶があります。私なら、まずは上の方法を試しますかね。

投稿2017/01/18 12:57

MasashiKimura

総合スコア1150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KenKenPaPPa

2017/01/18 14:50

回答ありがとうございます! 顔検出した後の顔の中に鼻が検出されれば、描画するというふうにしています。 質問の内容に書くのを忘れていて申し訳ないです! 鼻自体が検出されなくて困っています。 やはり、ディープラーニングとかを使うしかないですよね、、、自分にできるかどうか、、、
MasashiKimura

2017/01/18 15:03

ディープラーニングは早いうちに身に着けておいて損はないスキルだと思います。書籍、webサイトのみならず、学生の特権を活かして、研究室の先生、あるいは別の研究室でも良いので直接聞きに行くなどすれば近いと思いますよ。
KenKenPaPPa

2017/01/19 16:38

ありがとうございます!自分のスキルアップのために色々と試してみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問