天天看點

asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)

asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)

code用Tensorflow純手撸,曆時5個月,求贊求星星。

代碼已開源,支援Yolov3檢測資料集單獨訓練,以及檢測資料集、分類資料集聯合訓練:

https://github.com/thisiszhou/SexyYolo (基于Tensorflow1.x)

讀完Yolov3論文、讀過幾份代碼、自己動手實作一遍,每次都有不一樣的感悟。Yolov3原理總結詳見:【論文解讀】Yolo三部曲解讀——Yolov3

本文記錄複現Yolov3之後,嘗試使用分類資料集NSFW(隻有圖檔類别标簽,無标注框标簽)和檢測資料集COCO聯合訓練,使得檢測器不僅能檢測coco的80個類别,還可以在檢驗出person标簽之後,繼續分類出neutral(可視化時隐藏)、sexy、porn三個标簽(如圖一)。

asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)

圖一 SexyYolo檢測效果圖

Yolov2論文中的Yolo9000,是業界首次提出将分類資料集和檢測資料集聯合訓練。作者實作了COCO資料集和Imagenet資料集聯合訓練,使得檢測器在檢測物體的同時,對物體類别進行垂直細分,例如在狗類别下,還可以繼續識别中華田園犬、金毛、哈士奇等。

  • 資料集

檢測資料集:http://cocodataset.org/

分類資料集:https://github.com/alex000kim/nsfw_data_scraper

NSFW資料集的介紹不再多說。為了降低訓練的時間成本。筆者從下載下傳後的NSFW資料集中,選取了neutral、sexy、porn三個類别,各自挑選了1000張左右的圖檔作為分類資料集。COCO資料集有11萬張訓練圖檔,如果分類資料集數量再多一些,效果會更好(NSFW資料集中有太多幹擾和錯誤資料,需要人工篩選,篩選成本較高,尤其porn類别太辣眼睛)。

  • 檢測資料集訓練(COCO)
  1. 最終輸出改為88維:1維置信度;4維x、y、w、h,80維coco類别;3維NFSW類别。
  2. 檢測資料集,産生的loss與之前完全一樣,新增的3維類别,檢測資料集不産生loss。因為COCO資料集對于垂直類别沒有标記,是以沒有更進一步的類别資訊,不産生loss即可。
  • 分類資料集訓練(NSFW)
  1. 正例:設定置信度門檻值,當預測框的置信度 × person類别機率 >= 置信度門檻值時,該框被标作正例,正例的x、y、w、h不産生loss,置信度标簽為1,類别标簽,person與最後三維中相應類别為1,其餘類别都為0。
  2. 負例:設定負例門檻值,置信度小于該門檻值時,被标記為負例,負例的置信度标簽為0,其餘維不産生loss。
  3. 正例使用nms進行過濾,被過濾掉的,不再作為正例。
  4. 忽略樣例:大于負例門檻值的,但是沒有被标記為正例的,忽略,不産生loss。
  5. 先将模型在COCO上訓練10個epoch,再混合COCO與NSFW資料集聯合訓練。

由于分類時,無法擷取預測框與真實框的IOU數值,是以需要用nms進行過濾,訓練最契合的預測框,不确定的預測框,不參與訓練。至于為什麼正例置信度标簽為1,因為在實驗中,如果不加置信度1标簽,分類資料集上漸漸就檢測不出person,因為沒有person時,分類圖檔上産生的loss最小。

  • 精度
asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)

圖四

Yolov3中隻貼出了訓練分辨率為618*618時的全部精度,本地訓練使用的416*416,使用作者的coco權重作為SexyCoco的預訓練模型,在coco_train2017上不加入分類資料集訓練了10個epoch後的精度為上圖中Coco only,論文中416*416分别率的mAP-50為0.553,非常接近。之後繼續分類與檢測資料集聯合訓練,mAP精度稍有惡化,但是網絡可以識别垂直類别neutral、sexy、porn。

  • 參考

YOLOv3: An Incremental Improvement

【論文解讀】Yolo三部曲解讀——Yolov3

https://pjreddie.com/darknet/

最後送點福利(侵删)。porn檢測效果圖圖以及本地的3000張NSFW資料集,别問,問就是沒有(上面有連結,資料集需要請自行下載下傳)。

asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)
asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)
asp 檢測更改字尾的圖檔_【算法實驗】能檢測COCO并鑒黃的SexyYolo(含福利)

Yolo并不完美,one stage的檢測算法,難點在于資料拟合到極限之後,類别正确率、識别準确率、識别召回率、檢測框精度之間的權衡。Faster R-CNN二階段的分類不會影響一階段檢測框預測,但是Yolo拟合資料集到一定極限之後,就隻能在幾部分loss中做取舍權衡。

完。歡迎指正和探讨。

繼續閱讀