caffe使用训练好的模型对自己的一张图片进行测试
??前面學習了如何訓練模型,也學了如何用測試集測試模型。但是好像還不會拿一張自己的圖片去模型中進行測試。這篇文章就主要聊聊如何使用訓練好的模型對自己的一張圖片進行測試!(前面提到了做的項目是藏文識別,本篇文章就以藏文MNIST數據集模型作為舉例,請各位重點關注不同的地方)
??基本步驟如下:
???1.準備測試數據
???2.準備deploy文件
???3.準備標簽文件
???4.準備均值文件
???5.準備分類器文件
???6.使用命令進行測試
1.準備測試數據:
??這里的數據可以是網上下載的可以是自己手寫的,格式的話.jpg和.png的都是可以滴。
??有兩點需要注意:
?? 1) 調整圖片大小為28*28是訓練藏文mnist數據集的指定格式。(此處根據你的實際需要進行調整,與訓練集保持統一)
?? 2)在藏文mnist數據集中數字是黑底白字。在進行一張檢測之前,還需要提前對其進行二值化操作。把它變成黑底白字的圖片。(二值化轉換黑底白字后面會有一篇博客給出代碼并詳細介紹過程)
2.準備deploy文件:
? ?deploy文件可從MNIST訓練模型中test_train.prototxt衍生,將訓練和測試集的輸入輸出層刪除,增加以下層:
layer {
name: “data”
type: “Input”
top: “data”
input_param { shape: { dim: 1 dim: 3 dim: 28 dim: 28 } }
}
? ?deploy文件全文如下:
name: "LeNet" layer {name: "data"type: "Input"top: "data"input_param { shape: { dim: 1 dim: 3 dim: 28 dim: 28 } } } layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 20kernel_size: 5stride: 1weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "pool1"type: "Pooling"bottom: "conv1"top: "pool1"pooling_param {pool: MAXkernel_size: 2stride: 2} } layer {name: "conv2"type: "Convolution"bottom: "pool1"top: "conv2"param {lr_mult: 1}param {lr_mult: 2}convolution_param {num_output: 50kernel_size: 5stride: 1weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "pool2"type: "Pooling"bottom: "conv2"top: "pool2"pooling_param {pool: MAXkernel_size: 2stride: 2} } layer {name: "ip1"type: "InnerProduct"bottom: "pool2"top: "ip1"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 500weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "relu1"type: "ReLU"bottom: "ip1"top: "ip1" } layer {name: "ip2"type: "InnerProduct"bottom: "ip1"top: "ip2"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 10weight_filler {type: "xavier"}bias_filler {type: "constant"}} } layer {name: "prob"type: "Softmax"bottom: "ip2"top: "prob" }??注意:shape:里面根據實際情況決定,mnist數據集是1,1,28,28,藏文MNIST是1,3,28,28。這個根據你模型建立的數據集大小可調整.
3.準備標簽文件
??命名synset_words.txt(其實名字不重要啦!),里面的內容就是總的種類。對于藏文MNIST數據集是0到9,每個數字一行
??如下所示:
4.準備均值文件:
??均值文件caffe有自帶的,使用和Lenet相同的,命令如下(在caffe目錄下):
sudo build/tools/compute_image_mean examples/TibetanMNIST/TibetanMNIST_train_lmdb examples/TibetanMNIST/mean.binaryproto5.準備分類器文件:
??在藏文數字識別中,使用默認分類器。這里沒有命令
6.使用命令進行測試(在caffe目錄下執行):
./build/examples/cpp_classification/classification.bin examples/TibetanMNIST/TibetanMNIST_deploy.prototxt examples/TibetanMNIST/TibetanMNIST_train_model_iter_10000.caffemodel examples/TibetanMNIST/mean.binaryproto examples/TibetanMNIST/synset_words.txt /home/user/桌面/6_27_177.jpg??第一行是分類器,使用的是caffe自帶的分類器
??第二行是deploy文件的位置
??第三行是已經訓練好模型的位置
??第四行是均值文件的位置
??第五行是標簽文件的位置
??第六行是待測試圖片的位置
注意:為了更好的進行注釋,將命令放在不同行中。執行時兩個語句間留一個空格即可。
?下面來個結果展示,我選擇了一張藏文數字6進行測試。因為藏文MNIST數據?集下載的時候就已經變成黑底白字了,我就省了二值化的步驟了。從結果看,從訓練集挑選一張作測試不想我們想象那樣驚心動魄。6號以100%的預測率碾壓。所以以后一張測試的時候,盡量要自己制作。不要向我一樣手懶哦!
參考學習博客:https://blog.csdn.net/xunan003/article/details/73126425link
因作者水平有限,如有不足之處,請各位下方評論區指出,謝謝!
總結
以上是生活随笔為你收集整理的caffe使用训练好的模型对自己的一张图片进行测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12.IDA-虚函数和虚表(vf代表虚函
- 下一篇: 十六、定义数据、定义栈