原本YOLO是一个darknet的独立代码,网上有些大神把其网络用caffe实现了。贴一个传送门https://github.com/xingwangsfu/caffe-yolo。这里参考这个代码实现一下,没有训练代码,需要将darknet训练好的参数转换成caffe格式。
修改deploy
要把yolo_deploy.prototxt
里的fc26
层中的num_output
参数改为实际需要的。
参数模型格式转换
用darknet训练好的网络参数通过create_yolo_caffemodel.py
用caffe读进来。darknet的权重保存格式很简单,前4个数是int型,分别表示major、minor、revision和net.seen,第五个参数开始就是一个一维浮点数组,存成二进制文件。读入之后,根据网络结构得到net的各层weights和bias的size大小,并按顺序传入。调用格式如下:
python create_yolo_caffemodel.py -m ./prototxt/yolo_deploy.prototxt -w yolo_final.weights -o yolo.caffemodel
YOLO检测
python yolo_main.py -m ./prototxt/yolo_deploy.prototxt -w yolo.caffemodel -i xxx.jpg