Caffe训练ImageNet
Caffe訓練ImageNet使用的是NIPS?2012?paper論文的算法。
?
1、準備數據。
假設已經下載好數據集和驗證集,存儲路徑為:
/path/to/imagenet/train/n01440764/n01440764_10026.JPEG
/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG
首選需要創建一個txt文件,列舉出所有圖像以及對應的lable,caffe包“python/caffe/imagenet/ilsvrc_2012_train.txt”和“ilsvrc_2012_val.txt”兩個文件分別是標好的訓練集和驗證集的文件,共分為1000類。
還需要注意的是,所有的圖像都需要歸一到同樣的尺寸。
?
2、轉化生成訓練集。
運行下面的命令:
GLOG_logtostderr=1?examples/convert_imageset.bin???/path/to/imagenet/train/?python/caffe/imagenet/ilsvrc_2012_train.txt????/path/to/imagenet-train-leveldb
生成文件存儲在“/path/to/imagenet-train_leveldb”路徑下。
?
3、計算圖像均值。
執行命令:
examples/demo_compute_image_mean.bin?/path/to/imagenet-train-leveldb?/path/to/mean.binaryproto
第一個參數是執行腳本代碼,第二個參數是上一步生成的數據集,第三個參數是存儲圖像均值的目錄路徑。
?
4、定義網絡。
ImageNet的網絡定義在“examples/imagenet.prototxt”文件中,使用時需要修改里面source和meanfile變量的值,指向自己文件的路徑。
仔細觀察imagenet.prototxt和imagenet_val.prototxt文件可以發現,訓練和驗證的參數大部分都相同,不同之處在于初始層和最后一層。訓練時,使用softmax_loss層來計算損失函數和初始化后向傳播,驗證時,使用accuracy層來預測精確度。
在文件“examples/imagenet_solver.prototxt”中定義solver協議,同樣需要修改train_net和test_net的路徑。
?
5、訓練網絡。
執行命令:
GLOG_logtostderr=1?examples/train_net.bin?examples/imagenet_solver.prototxt
?
6、在python中使用已經訓練好的模型。
Caffe只提供封裝好的imagenet模型,給定一副圖像,直接計算出圖像的特征和進行預測。首先需要下載模型文件。
Python代碼如下:
[python]?view plain?copy ?print?
?
圖上的橫軸表示的label,縱軸表示在該類別上的概率,有圖我們看到,lena.jpg被分到了”sombrero”這組,結果還算準確。?
結束語
更多內容請參考http://daggerfs.com/caffe/
總結
以上是生活随笔為你收集整理的Caffe训练ImageNet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: caffe读书笔记1 CIFAR-10在
- 下一篇: 训练MNIST数据集模型