Caffe Windows平臺 人臉性別預測(1)

  • 摘要
  • 安裝微軟caffe
  • 數據集準備
  • CPU訓練
  • 網絡模型和solver方案
  • 訓練
  • 後序優化工作

1、摘要

一般情況下,caffe的訓練和使用都是在linux下使用的,但是特殊要求,所以要在windows下進行訓練和使用。除了訓練的工作之外,windows下caffe工程主要用來學習和代碼閱讀。

2、安裝caffe

windows下的caffe版本,有兩個。一個是某網友做的開源項目;一個是微軟caffe。現在在caffe的官網文檔介紹,推薦的windows caffe就是微軟caffe.

(1)版本1

項目鏈接地址
https://github.com/happynear/caffe-windows
第三方庫可以使用作者提供的百度雲盤下載。然後解壓到3rdparty目錄下;其他請看開源項目的README.md文件。

(2)版本2

項目鏈接地址:
https://github.com/BVLC/caffe/tree/windows

項目基本上不需要進行配置。

如果不使用gpu的話,需要修改進行以下操作。

將.\windows\CommonSettings.props 設置CpuOnlyBuild = true
UseCudnn = false。然後 build .\windows\Caffe.sln

其他請參照官網

這裏寫圖片描述

安裝好之後,運行編譯。我們需要用到的工程

  • caffe 用於訓練
  • classification 用於分類
  • computer_image_mean 計算圖像像素的均值
  • convert_imageset 轉化圖像爲lmdb數據格式
  • libcaffe lib庫,其他工程的引用工程。

依次編譯即可。

然後可在項目路徑下找到可執行文件。

路徑: caffe-master\Build\x64\Release

3.數據集準備

性別的數據集國外不少,但是包括亞洲人的數據集不多。我做過總結。如下。

這裏寫圖片描述

其中的AFAD數據集是今年的CVPR的文章[1]。但是我們給作者發了郵件,不過並沒有回信。
顯而易見的是:使用非亞洲人的數據集訓練的模型,對亞洲人分類效果特別差。所以,爲了訓練一個好的性別模型,收集一個較大的亞洲人數據集是至關重要的。

本人所在的實驗室收集了一個2萬左右的亞洲人數據集:明星數據集。

(1)數據集介紹

明星數據集 男性 女性 總數
訓練集 8776 7989 23377
測試集 3487 3122

數據集例子

這裏寫圖片描述

(2)數據集的獲取

我們實驗室的數據集不公佈。但是說下我們的收集方式。

  • 使用百度批量下載軟件 下載明星人臉數據集。這個可以百度搜下
  • 編寫簡單的爬蟲代碼

3、CPU訓練過程

請先標註好數據集

一般工程都是先轉化爲lmdb文件。

(1)運行convert_imageset.cpp 產生lmdb文件
在運行前請先編譯。然後進入到
caffe-master\Build\x64\Release目錄下。運行 convert_imageset.exe文件。

命令格式:

covert_imageset.exe 你的圖片的根目錄(第一個參數) 你的txt文件(第二個參數)

(2)編譯運行 computer_image_mean

命令格式:
Computer_image_mean.exe 你的train的lmdb文件

(3)編譯caffe

命令格式:
運行 caffe.exe train –solver=你的solver文件

這樣大概就運行起來了,開始訓練了。

4、網絡模型和solver方案

請參考我的開源項目中的網絡模型。

https://github.com/zhangqianhui

在assets 目錄下的deploy.prototxt 文件。

solver文件大同小異。

test_iter: 1000
test_interval: 1000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
#power:0.75
stepsize: 2000
display: 20
max_iter: 10000
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000

5、訓練

首先說下,我訓練用的是GPU版本(數據集過大,最好使用GPU版本),CUDA版本7.5,之前已經安裝好了。

這裏寫圖片描述

運行效果圖

測試集的實驗結果:

實驗結果:  88%

6、後序優化工作

現在做性別預測,比較好的預測率能達到95以上。本次只是將模型跑了起來,那麼如何做優化,達到更好的分類效果,是下面最爲重要的問題。
本人未來的的優化工作如下。

  • 修改模型

    修改模型的工作沒有那麼容易做,一般要有較好的調參經驗,才能在短時間內做到優化。最近比較熱門的網絡模型也可以關注,比如BN網絡,Resnet,都可以作爲未來模型優化的一個嘗試。

  • 修改數據集

    最簡單,最暴力的優化方式,就是增大數據集。基本上,增大數據集一定會提高測試集的識別率。還有就是對數據集做優化,去除一些相似的圖片,增大圖片之間的差異性,也就是非線性程度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章