这是我在github上面上传的修改的caffe框架里面加入focal loss,需要的可以自己下载下来直接编译就可以了。
https://github.com/caicai2526/Caffe_densenet_focal_loss
另外我也提供了caffe版本的Densenet网络结构加入focal loss和没有加入focal loss
地址:https://github.com/caicai2526/DenseNet_focal_loss
在github上面的另外两个项目中也有提供(我没有编译通过,但是有人编译通过,如果有编译通过的希望能提供我一份)
https://github.com/sciencefans/Focal-Loss
https://github.com/chuanqi305/FocalLoss
这里是使用上面提供的代码编译的博客:https://blog.csdn.net/qq_34951080/article/details/78491009
说focal loss在caffe里面主要改的地方是如下部分:
1,caffe.proto
源文件在src/caffe/proto/目录里
从492行这些optional里,作者添加了两行:
optional ReLU6Parameter relu6_param = 208;
optional FocalLossParameter focal_loss_param = 147;
从895行这里添加了一行:
optional bool half_pad = 19 [default = false];
从1425行这里添加一行:
optional bool reduce_boxes = 14 [default = false];
从1505行添加了一段:
message ReLU6Parameter{
enum Engine {
DEFAULT = 0;
CAFEE = 1;
CUDNN = 2;
}
optional Engine engine = 2[default = DEFAULT];
}
从1641行添加一段:
message FocalLossParameter{
enum Engine{
DEFAULT = 0;
CAFFE = 1;
CUDNN = 2;
}
optional Engine engine = 1[default = DEFAULT];
//The axis along which to perform the softmax -- may be negative to index
//from the end(e.g., -1 for the last axis).
//Any other axes will be evaluated as independent softmaxes.
optional int32 axis = 2[default = 1];
optional float alpha = 3[default = 0.25];
optional float gamma = 4[default = 2.0];
}
2.在src/caffe/layers/下放入focal_loss_layer.cpp和focal_loss_layer.cu文件
3.在include/caffe/layers/下放入focla_loss_layer.hpp
重新编译Caffe。