基于caffe框架复现yolov3-tiny目标检测

文章目录

  • 测试预训练模型
    • install
    • 添加upsample层代码
    • test
    • 结果
  • 待续。

最近由于要在工程上实现yolov3-tiny的caffe模型的训练和测试,记录踩的坑和解决的办法。

测试预训练模型

基于这篇文章:基于caffe框架复现yolov3目标检测.
github在这里.
测试了预训练模型。由于要做的是yolov3-tiny的caffe转换,只测试了yolov3-tiny上的结果。
其中出现了一些问题记录:

install

    git clone https://github.com/ChenYingpeng/caffe-yolov3
    cd caffe-yolov3
    mkdir build
    cd build
    cmake ..
    make -j6

1.make[2]: *** 没有规则可以创建“x86_64/lib/libsysDetectSpeed.so”需要的目标“/usr/lib/x86_64-linux-gnu/libglog.so”。 停止。
解决:是CMakelists下的相关文件路径问题。
把相关文件的路径根据服务器上的对应路径修改。
2. /caffe/include/caffe/blob.hpp:9:34: 致命错误:caffe/proto/caffe.pb.h:没有那个文件或目录 #include "caffe/proto/caffe.pb.h"
解决:
Caffe目录下运行以下代码:

    protoc src/caffe/proto/caffe.proto --cpp_out=.
    mkdir include/caffe/proto
    mv src/caffe/proto/caffe.pb.h include/caffe/proto

添加upsample层代码

具体的代码见上述文章的百度云盘链接中的文件。
添加过程:
把upsample_layer.hpp 放在include/caffe/layers下面;
把upsample_layer.cpp与upsample_layer.cu放在src/caffe/layers下面;
往自己的caffe.proto里面添加UpsampleParameter相关参数;可以参考他上传的caffe.proto;
在/caffe/src/caffe/proto/caffe.proto改动的地方主要是两处:
1.文件的最后加上
基于caffe框架复现yolov3-tiny目标检测_第1张图片
2.message LayerParameter这一行加上
在这里插入图片描述
重新编译。

test

在caffe-yolov3/build运行Example 4:yolov3-tiny

$ ./x86_64/bin/detectnet 1 ../../data/yolov3/prototxt/yolov3-tiny-1.prototxt ../../data/yolov3/prototxt/yolov3-tiny-2.prototxt ../../data/yolov3/caffemodel/yolov3-tiny.caffemodel

由于是远程,把detectnet.cpp中的图像显示代码注释掉了。

结果

基于caffe框架复现yolov3-tiny目标检测_第2张图片

作者是将yolov3-tiny拆分为两个小模型,通过自行实现的函数连接小模型实现模型前传;但未实现反向传播代码,开源模型也为coco分类,因此实现自己的工程任务需自行实现训练代码;
尝试基于caffe重写yolov3-tiny的maxpooling层。

待续。

你可能感兴趣的:(caffe,yolov3-tiny)