【caffe-Windows】识别率批量输出——matlab实现
前言
今天看到群里有人問”用matlab輸出測試集的精度“,瞎試了一下,好像還成功了。主要還是依據前面所有在matlab中操作caffe的博客。
這里說一下:classification.m是適用單張圖片的精度,類似于classification.exe的功能;這里要做的是在matlab中實現caffe.exe test的功能,也就是批量輸出精度
分析
根據caffe.exe test和classification.m的流程,很容易想到,直接把訓練時候所用的prototxt丟進去,對比classification.m中調用caffe.Net(model,wights,'test')的思路,試試當model為train_test.prototxt而非deploy.prototxt的效果。然后按照前面caffe在matlab中訓練的方法,進行一次前向計算,當然此前向計算需要數據已經載入網絡中,而非像classification一樣挨個輸入。z最后按照前面可視化權重的博客,提取最后一層的accuracy就行了。
流程
- 將數據集,也就是一堆圖片,利用convert的那個exe轉換為lmdb格式
- 在prototxt中更改測試部分的輸入為你所轉換的lmdb路徑
- 細節調整,比如你有沒有均值文件,加入到prototxt中
- 加載模型,命令caffe.Net
- 前向計算forward_prefilled命令
- 利用blob取最后一層accuracy的值
代碼書寫
- 數據集轉換
以mnist為例,測試集的lmdb文件在前面已經制作出來了,如果是你自己的圖片,可以看前面轉換數據集的博客。
- 模型結構
直接使用原始的lenet_train_test.prototxt,測試集部分內容為你自己的轉換數據集
layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {scale: 0.00390625}data_param {source: "mnist_test_leveldb"batch_size: 100backend: LEVELDB} }其中有一個參數batch_size表示一次性測試多少數據量的準確率, 由于mnist測試集共有一萬張圖片, 所以測試次數為1000/100=100, 使用批處理方式測試
..\..\Build\x64\Release\caffe.exe test -model=lenet_train_test.prototxt -weights=lenet_iter_10000.caffemodel -iterations=100 pause- 寫代碼
看看使用caffe.exe test的命令和我們的輸出acc的結果對應與否
應該是對應的吧,手動滑稽。
【注】記得剛才說的batchsize吧,看代碼倒數第三行,有一個for循環,這里寫的100,意思就是圖片總數除以batchsize,得到的結果就是這個for循環的上限。
源代碼各種文件打包放送
http://download.csdn.net/download/zb1165048017/9994062
直接運行里面的caffe_test.m即可,注意自己caffe的matlab接口一定要配置好。
總結
以上是生活随笔為你收集整理的【caffe-Windows】识别率批量输出——matlab实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MKL学习——向量操作
- 下一篇: 交行优逸白新卡上线!交行魔都优逸白金卡好