- 摘要
- 安裝微軟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,都可以作爲未來模型優化的一個嘗試。
修改數據集
最簡單,最暴力的優化方式,就是增大數據集。基本上,增大數據集一定會提高測試集的識別率。還有就是對數據集做優化,去除一些相似的圖片,增大圖片之間的差異性,也就是非線性程度。