2016-09-09 162 views
3

我使用Dlib的正面人臉檢測器來檢測圖像中的人臉;但是,它無法檢測到小於80乘80像素的臉部。Dlib正面人臉檢測小臉

DLIB在face_detection_ex.cpp例如使用上採樣到pyramid_up()增加臉部大小的輸入圖像。但是,它會使算法變得更慢,因爲它必須搜索更大的圖像。

我不知道是否有人知道這個問題的解決方案。

回答

5

Dlib的臉部檢測器經過訓練可以處理80x80的臉部。如果要檢測較小的臉部,則有兩種方法:

  1. 增加分辨率以使臉部變大。你可以使用pyramid_up或任何其他方式蝨cv :: resize。你可以增加resultion不是2倍,但可能是1.5倍就足夠了 - 這是你
  2. 列車新的人臉檢測器,將在小面上的工作 - DLIB具有樣本訓練過程

而接下來你問題是人臉檢測器的性能。是的,這取決於分辨率,並且如果您想要在13 MP圖像上檢測20x20的臉部 - 它會很慢。爲了使工作速度快,你有這樣的選擇:

  1. 減少應當由檢測器處理的像素量 - 使用權的規模和感興趣區域
  2. 使用灰度圖像
  3. reduce the amount of scale changes at scanning process
  4. 使用來自FAQ的推薦。我只能添加的MinGW/GCC代碼工作比MSVC和Android/ARM代碼快約20%沒有使用SIMD指令
  5. 播放:apply motion detection和檢測不僅改變了區域(手動裁剪他們,並在裁剪區域檢測),也在單獨的線程中運行幀以消耗所有CPU內核
+0

我試圖訓練人臉檢測器,但未對圖像進行上採樣以便可以檢測到較小的人臉。 我想它的示例文件「* fhog_object_detector_ex.cpp *」。我註釋了兩行上採樣('upsample_image_dataset'),並將檢測窗口大小減小到40x40。但是,它無法檢測測試圖像中的大部分面部。你能告訴我我的錯誤在哪裏嗎? – mhaghighat