在新版caffe中新增center loss層

2021-08-27 03:53:20 字數 1781 閱讀 7039

準備工作:

1,首先你需要有乙個可以make編譯通過的caffe(這個過程在第一篇blog中已經寫出)和乙個帶有center_loss層的caffe-face(可以直接在github上clone下來)

caffe-face**:

git clone .git
新增原因:

1,在分類問題上,center_loss可以很好的減小類類間距,增加類間距離。

前言:新增center_loss層需要有它的.cpp 、.cu以及相應的.hpp檔案才能生成center_loss層,同時,需要修改caffe.proto。

這種『搬磚』法也可以應用在其他層的替換。

具體過程如下: 

1,複製caffe-face的src/caffe/layers目錄下的center_loss_layer.cpp和center_loss_layer.cu檔案到caffe的相同位置的目錄下;

2,複製caffe-face的include/caffe/layers目錄下的center_loss_layer.hpp到caffe相同位置的目錄下;

3,修改caffe.proto檔案

>>進入caffe的src/caffe/proto目錄下開啟caffe.proto檔案,在網路層的定義部分,id為148,last added:***,將網路名替換為center_loss_param

>>並設定替換engine的預設值,將***的id為147的設定替換為center_loss,如下:

>>在caffe.proto檔案的末尾新增center_loss層的message centerlossparameter:

message centerlossparameter
4,刪掉src/caffe/layers以及include/caffe/layers目錄下的***.cpp,***.cu以及***.hpp檔案,或者進行壓縮備份。

5,最後一步複製caffe-face的src/caffe/test目錄下的test_neuron_layer.cpp檔案替換到caffe下,或者修改caffe的src/caffe/test目錄下的test_neuron_layer.cpp檔案的內容(將檔案內所有關於***_layer的內容都刪掉)

修改完成後就可以編譯caffe了,依次執行以下命令編譯(如果你想加速可以在命令列末尾追加-jxx,其中xx(數值,如-j16)是看你核心數量的多少,不建議新增-jxx,經驗教訓是手動新增替換網路層後,高速編譯可能會出現不必要的bug):

make all

make test

make runtest

make pycaffe

沒有bug出現即為編譯成功。

在caffe中新增新的Layer

參考github上面的答案 here s roughly the process i follow.大致過程翻譯 然後在對應的hpp標頭檔案中新增該層的類的定義。包括內聯實現type和 blob 方法指定blob的數字,如果你只是實現cpu部分的 則忽略 gpu的宣告 2.實現你要新增的層 應該指的...

在caffe中新增新的Layer

參考github上面的答案 here s roughly the process i follow.大致過程翻譯 然後在對應的hpp標頭檔案中新增該層的類的定義。包括內聯實現type和 blob 方法指定blob的數字,如果你只是實現cpu部分的 則忽略 gpu的宣告 2.實現你要新增的層 應該指的...

在caffe中新增自定義層

caffe中新增自定義層 6,7 1 標頭檔案 路徑 py faster rcnn caffe fast rcnn include caffe layers 2 cpp或者cu檔案 fasterrcnn huawei py faster rcnn caffe fast rcnn src caffe ...