任務
我這裡給出乙個具體的任務咯,要求在以下中,識別出汽車品牌和車輛外形。汽車品牌分為:benz/bmw/audi 車輛外形分為:sedan/suv。這是乙個只有72張的小資料庫,包括了測試和訓練集:
這裡寫描述
我們這裡採用的是上述文章中薛大牛的方法,兩個data層,乙個data只放,另乙個data放label,label通過slice layer切開。然後我們開始定義網路!修改alexnet!這是我的網路:
做資料轉換工具!
整個網路結構需要兩類資料,一類是純的lmdb,一類是包含兩個標籤的lmdb。首先我們需要修改caffe中的原始碼(相信我,很簡單!)開啟你編譯caffe時候的工程,找到convert_imageset這個工程:
修改convert_imageset.cpp為convert_multilabel.cpp,內容如下,全部替代也可以:(見github:然後重新編譯這個convert_imageset這個project。你可能會遇到什麼沒有生成object的警告,在這裡關掉即可:
完成後,我們會看到release資料夾下多了乙個convert_multilabel的exe,這個就是我們的lmdb生成工具啦。
做影象和多標籤資料!
convert_imageset.exe --resize_height=256 --resize_width=256 --shuffle=true d:\caffe-master\examples
\zncar
\test
\ d:\caffe-master\examples
\zncar
\test.txt d:\caffe-master\examples
\zncar
\test_lmdb d:\caffe-master\examples
\zncar
\test_label_lmdb 2
pause
然後還要做均值檔案:
compute_image_mean.exe d:\caffe-master\examples
\zncar
\test_lmdb d:\caffe-master\examples
\zncar
\testmean.binaryproto
pause
總之最後應該有六個東西,如圖:
微調alexnet!
試一試我們的模型
這裡還需要修改classification.cpp檔案,因為caffe自帶的只支援單樣本。我自己做了乙個修改版本的,主要是修改了命令列和輸出網路的部分,這個cpp只支援兩標籤,主要是用著方便,如果你需要更多的標籤可以自己修改。編譯步驟同convert_multilabel.cpp的編譯。鏈結中的的**直接就可以替換原來的cpp。
結果寫兩個標註檔案:
label1.txt:
sedan
suvlabel2.txt:
audi
bmw
benz
1 2
3 4
5 6
7 8
我修改後的classification.exe 分類的命令列:
本專案的github**:
資料集:
caffe實現多標籤分類
std ifstream infile argv 2 std vector lines std string filename std string label count string argv 5 int label count std atoi label count string.c str...
多標籤分類問題
多類分類與多標籤分類 深度學習 多標籤分類問題 深度學習,opencv3 mxnet等影象處理相關的demo 深度學習模型處理多標籤 multi label 分類任務 好,介紹了整個處理流程 多標籤 multi label 分類任務 和 多分類 multi class 任務的區別 這裡筆者強調一下多...
caffe多工學習之多標籤分類
最近在參加乙個識別的競賽,專案裡涉及了許多類別的分類,原本打算乙個大的類別訓練乙個分類模型,但是這樣會比較麻煩,對於同一的分類會重複計算分類網路中的卷積層,浪費計算時間和效率。後來發現現在深度學習中的多工學習可以實現多標籤分類,所有的類別只需要訓練乙個分類模型就行,其不同屬性的類別之間是共享卷積層的...