1. 程式人生 > >Windows Caffe 學習筆記(三)在Caffe上訓練和測試自己的資料

Windows Caffe 學習筆記(三)在Caffe上訓練和測試自己的資料

本文是學習Caffe官方文件"ImageNet Tutorial"時做的,同樣由於是Windows版本的原因,很多shell指令碼不能直接使用,走了不少彎路,但是收穫也不少。比如:如何讓shell指令碼在Windows系統上直接執行、如何去用Caffe給影象resize來統一大小,如何去構建train.txt和val.txt等等。具體流程均記錄如下。

正文:

1.準備資料

我從網上下載了兩類圖片,一類為貓,一類為鳥,分別存在名為bird和cat的資料夾裡,每類60張(50張做為訓練集,10張做為測試集)。【分開存放,在做train.txt時,方便打標籤。等做完標籤再將100張訓練圖片一起放在新建的train檔案下里,下面會詳述。】

貓:(已經過批量重新命名。ps:我選圖還是比較講究的,不好看的、不清楚的、不奇怪的我不選,哈哈)


鳥:(已經過批量重新命名)


2.構建train.txt和val.txt

首先是重新命名圖片,從搜尋引擎下載下來的圖片的名稱都是則亂無章,我們需要用批量重新命名的方法去先給它們命名。

批量重新命名可以通過一個bat檔案實現,程式碼如下:


修改其中的“bird”位置,執行。比如,我將“bird”改為“Cat”,執行bat檔案,效果如下:


可以看到圖片名字被統一的修改了,並且生成了一個list資料夾,通過txt檔案的查詢-替換,給每個檔案打上標籤(比如Cat為0,Bird為1),截圖如下:

下面的工作自己做就行了,將cat和bird的txt文件,合在一起,組成train.txt。同理,完成val.txt。我的train.txt和val.txt的截圖如下(我標籤用了1和2):



3.資料處理

資料處理要進行三項:1.將圖片統一轉化成256X256大小。2.將資料轉化為LEVELDB格式。3.求資料均值。

看了一些部落格,在將圖片統一轉化成256大小這兒曲線救國,想了很多方法。其實第1步和第2步可以一起完成,只要呼叫examples\imagenet\create_imagenet.sh就可以一起完成。但是shell指令碼在Windows下如何執行呢?是可以的,只需要安裝Git即可在Windows環境下執行shell指令碼!Git下載連結:https://git-scm.com/downloads/

根據具體情況,對create_imagenet.sh,做一些修改(需要修改處均用紅色方框標出,五角星處即是caffe自帶的resize圖片的地方,一定要設為true):



開啟git,執行create_imagenet.sh即可,檢視資料夾,出現imagenet_train_leveldb和imagene_val_leveldb:


接下來是進行第三步,求影象均值了。在進行這一步時,我使用\examples\imagenet\make_imagenet_mean.sh時,是成功求得了均值檔案imagenet_mean.binaryproto,但在之後訓練時,一直報錯,提示均值檔案無法讀取。故還是換用了compute_image_mean.exe,來求得均值檔案,具體步驟,之前的文章已經記錄了,不再贅述。

再從\models\bvlc_reference_caffenet中,將train_val.prototxt和solver.prototxt複製過來,這樣所有檔案都準備齊全了:


4.配置訓練所需檔案

首先,根據具體情況修改,train_val.prototxt:



修改solver.prototxt:


關於solver裡面的引數,我認為應該根據具體情況就修改就好了,這一部分我還不是很熟悉,慢慢積累吧。

5.進行訓練

寫一個bat檔案,進行訓練即可!bat檔案程式碼如下:


6.訓練結果

因為我的電腦配置很低很低。。所以訓練起來很慢,我調小了很多引數,訓練了兩天還是沒訓完。。。貼一張訓練中的截圖吧:


7.總結

這次主要是為了自己感受一下用Windows Caffe訓練自己資料的整個過程,也沒有去追求準確率,也沒有考慮去跟蹤訓練過程去調參等等。這些經驗方面的知識,接下來慢慢繼續積累吧。經過這次學習,起碼能把整個過程跑下來了,收穫很多。

參考文件: