Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ChenYingpeng/darknet2caffe
Convert darknet weights to caffemodel
https://github.com/ChenYingpeng/darknet2caffe
caffe darknet yolov3 yolov4
Last synced: 3 months ago
JSON representation
Convert darknet weights to caffemodel
- Host: GitHub
- URL: https://github.com/ChenYingpeng/darknet2caffe
- Owner: ChenYingpeng
- Created: 2019-10-19T01:27:15.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-02T01:44:30.000Z (about 2 years ago)
- Last Synced: 2024-08-02T01:16:47.703Z (7 months ago)
- Topics: caffe, darknet, yolov3, yolov4
- Language: Python
- Homepage:
- Size: 133 KB
- Stars: 183
- Watchers: 4
- Forks: 88
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-yolo-object-detection - ChenYingpeng/darknet2caffe
- awesome-yolo-object-detection - ChenYingpeng/darknet2caffe
README
# Requirements
Python2.7Caffe
Pytorch >= 0.40
# Add Caffe Layers
1. Copy `caffe_layers/mish_layer/mish_layer.hpp,caffe_layers/upsample_layer/upsample_layer.hpp` into `include/caffe/layers/`.
2. Copy `caffe_layers/mish_layer/mish_layer.cpp mish_layer.cu,caffe_layers/upsample_layer/upsample_layer.cpp upsample_layer.cu` into `src/caffe/layers/`.
3. Copy `caffe_layers/pooling_layer/pooling_layer.cpp` into `src/caffe/layers/`.Note:only work for yolov3-tiny,use with caution.
4. Add below code into `src/caffe/proto/caffe.proto`.```
// LayerParameter next available layer-specific ID: 147 (last added: recurrent_param)
message LayerParameter {
optional TileParameter tile_param = 138;
optional VideoDataParameter video_data_param = 207;
optional WindowDataParameter window_data_param = 129;
++optional UpsampleParameter upsample_param = 149; //added by chen for Yolov3, make sure this id 149 not the same as before.
++optional MishParameter mish_param = 150; //added by chen for yolov4,make sure this id 150 not the same as before.
}// added by chen for YoloV3
++message UpsampleParameter{
++ optional int32 scale = 1 [default = 1];
++}// Message that stores parameters used by MishLayer
++message MishParameter {
++ enum Engine {
++ DEFAULT = 0;
++ CAFFE = 1;
++ CUDNN = 2;
++ }
++ optional Engine engine = 2 [default = DEFAULT];
++}
```
5.remake caffe.# Demo
$ python cfg[in] weights[in] prototxt[out] caffemodel[out]
Example
```
python cfg/yolov4.cfg weights/yolov4.weights prototxt/yolov4.prototxt caffemodel/yolov4.caffemodel
```
partial log as below.
```
I0522 10:19:19.015708 25251 net.cpp:228] layer1-act does not need backward computation.
I0522 10:19:19.015712 25251 net.cpp:228] layer1-scale does not need backward computation.
I0522 10:19:19.015714 25251 net.cpp:228] layer1-bn does not need backward computation.
I0522 10:19:19.015718 25251 net.cpp:228] layer1-conv does not need backward computation.
I0522 10:19:19.015722 25251 net.cpp:228] input does not need backward computation.
I0522 10:19:19.015725 25251 net.cpp:270] This network produces output layer139-conv
I0522 10:19:19.015731 25251 net.cpp:270] This network produces output layer150-conv
I0522 10:19:19.015736 25251 net.cpp:270] This network produces output layer161-conv
I0522 10:19:19.015911 25251 net.cpp:283] Network initialization done.
unknow layer type yolo
unknow layer type yolo
save prototxt to prototxt/yolov4.prototxt
save caffemodel to caffemodel/yolov4.caffemodel```