YOLO v3、FaceNet和SVM的人臉檢測識別系統源碼(python)分享

先轉發,然後關注 私信“人臉”獲取下載鏈接

項目簡介

fine-tune YOLO v3 + FaceNet進行人臉識別,辨別。

YOLO v3、FaceNet和SVM的人臉檢測識別系統源碼(python)分享

1. 項目結構

--data

--|------baseface 圖片、根據這些圖片訓練的128d向量,以及文件夾與人名的映射文件

---------|------0 第一個人的圖片tag=0

---------|------1 第二個人的圖片tag=1

......

---------|------n 第n個人的圖片tag=n

---------|------map.txt 文件夾與人名的映射,依次放即可

---------|------vector.csv 根據這些圖片得到的128維向量以及其類別(文件夾名)

--|------weights_facenet 模型文件(facenet)

--|------weights_yolo 模型(fune-tuning的yolo v3)

--|------weights_svm 模型(根據csv文件訓練的svm模型)

--|------face-names 預測類別,默認即可

--|------yolo_anchors.txt 訓練yolo v3時聚類得到的anchors框

--net yolo和facenet的網絡

--preprocessing 預處理工具,下文的使用方法前期步驟都需要在這裡運行

--setting 模型參數,可根據需要修改

--utils 封裝的一些方法

--test.py 主體方法

2.模型文件(權重)

先轉發,然後關注 私信“人臉”獲取

3.yolo v3

YOLO v3的詳細預測和訓練,可到本人另一個項目YOLO_v3_tensorflow瞭解。

4.踩的坑

  1. fine-tune yolo v3時使用的是wider face數據集,其中有兩個標註框是寬度或高度為0的,錯誤標註,篩選的時候需要去除掉這兩個標註框,否則nms會報除0的異常。
  2. 訓練svm時,需要標準化,預測時需要用同參數標準化再預測,否則svm預測結果都相同。
  3. 之前使用model-20170512-110547模型,輸出128d向量,效果不好,換成model-20180402-114759模型,輸出512d向量,效果有所提升。
  4. 每個人15張臉部圖片,訓練svm效果一般,可以增大樣本量或者使用一些svm的tricks。

三、使用方法

項目需要安裝以下包

<code>numpy
pandas
opencv-python
scikit-learn
tensorflow
pillow/<code>

1.放置模型文件

下載yolo_face和facenet模型文件,放置在data文件夾下,如圖

YOLO v3、FaceNet和SVM的人臉檢測識別系統源碼(python)分享

2.製作自己的人臉數據集

截取需要識別的人物的臉部圖片,一人一個文件夾,文件夾名稱從0開始依次累加,放在路徑data/base_face下。

YOLO v3、FaceNet和SVM的人臉檢測識別系統源碼(python)分享

並修改data/map.txt,以空格分隔,下標和人臉文件夾名一一對應(map.txt中第一條下標為0,對應data/base_face/0文件夾)。

3.使用工具將圖片轉換成向量並存儲

運行preprecessing/pre_tools.py內的save_vector_csv(),自動將圖片使用facenet轉換為128d或512d向量,並存儲為data/base_face/vector.csv

4.訓練svm分類器

基於已經儲存的vector.csv文件,進行標準化後,運行preprecessing/pre_tools.py內的train_face_svm(),使用scikit-learn訓練svm模型,並儲存在data/weights_svm/svm.pkl中。

5.開始測試

5.1圖片測試

放在data/test_img下,將setting/yolo_args.py中的detect_object改為imginput_image 改為圖片路徑。

運行根目錄下的

test.py文件。

另外如果要存儲檢測後的圖片,將setting/yolo_args.py中的output_image改為要存儲的路徑,並保證各層級文件夾存在

5.2視頻測試

放在data/test_video下,將setting/yolo_args.py中的detect_object改為videoinput_video 改為視頻路徑。

運行根目錄下的test.py文件。

另外如果要存儲檢測後的視頻,將setting/yolo_args.py中的output_video改為要存儲的路徑,並保證各層級文件夾存在

先轉發,然後關注 私信“人臉”獲取下載鏈接


分享到:


相關文章: