caffe项目实践:实现YOLO对物体进行检测

这是一个18年毕业本科生的一个毕设题目,项目还没有完成,在这里会记录下在caffe上实现YOLO的过程。欢迎大家和我交流!

20171123-前期准备:

  1. 首先当然是YOLO作者的自留地:darknet
  2. 一位在caffe添加了自己写的层
  3. YOLO算法的Caffe实现
  4. caffe 添加YOLO新层Leaky Layer
  5. 在微软caffe上实现yolov1的训练和预测(windows cpu) 
    github上关于caffe-yolo项目 
    https://github.com/hojel/caffe-yolo-model 
    https://github.com/yeahkun/caffe-yolo 
    https://github.com/xingwangsfu/caffe-yolo 
    大致看了一下以后感觉要看一下caffe 的源码,添加一些caffe目前没有的层和改变caffe最后的激活函数。

20171124-阅读caffe源码教程: 
caffe源码解析的三个博客分享 
caffe目录结构 及 caffe源码文件说明

  1. 学习了解有关C++的基础知识,编写自己需要的layer。 (c++相关课程,请大家也多多推荐哦)
  2. 调研目前业界常用的物体检测的开放样本集并收集整理。
  3. 制定一个选取负样本的策略。

~20171220: 
之前几天主要完成到工作:

  1. 完成正样本制作1.5w张,负样本制作0.05w张;
  2. 在ubuntu环境下搭建caffe(ubuntu16.04+cuda+cuDNN+anacoda3+caffe)

~20180410 
我还在搞这个项目啊,现在我从github里面下了一个基于Caffe的YOLO模型,改成了中间自己的参数,虽然过程中没有什么难点但是实际操作上碰到了一些坑。

  1. 比如说有时候会在训练bith_size 太大的时候,会报会内存不过的错误Check failed: error == cudaSuccess (2 vs. 0) out of memory。这是时候对应的解决方案是在命令台输入

    nvidia-smi 
    得到正在运行的GPU的PID,使用如下代码。如果进行如下操作还是报相同错误,那就应该尝试将bitch_size改小。

    kill -9 PID

  2. 有时候在使用python调用caffe的时候ImportError: No module named 'caffe' 
    的报错,但是你在项目导入过程中不仅make pycaffe 了,而且在桌面的python下面,import caffe 
    也没有报错,那很有可能是因为你的py文件缺少下面一段话:

    sys.path.append('/your/caffe/path/python')//其中的/your/caffe/path/指的是自己这个caffe项目的根目录
    • 1
  3. 在基于caffe使用别人写的网络的过程中,经常会出现要调用不同版本的python情况。网上也有很多很方便的方法,下面是本人经常使用更换ubuntu系统默认python版本的方法(以将python3.5换成python2.7为例):

    ~$ python --version //查看系统python自带版本
    Python 3.5.2
    ~$ whereis python2.7 //搜索系统是否已经安装python2.7
    python2: /usr/bin/python2.7-config /usr/bin/python2.7
    /usr/bin/python2 /usr/lib/python2.7 /etc/python2.7
    /usr/local/lib/python2.7 /usr/include/python2.7
    /usr/share/man/man1/python2.1.gz
    //若结果里面有/usr/bin/python2.7说明已经安装
    //如果没有则需要手动安装
    ~$ sudo rm /usr/bin/python //删除原有的python连接文件
    ~$ sudo ln -s /usr/bin/python2.7  /usr/bin/python  //然后建立指向python2.7的软链接
    $ PATH=/usr/bin:$PATH //把路径/usr/bin/加入环境变量PATH中
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  4. 重新装完python以后,肯定就是要import caffe。在import caffe之前需要下载skimagesudo pip install scikit-image sudo pip install protobuf


因为直接拿别人的代码来会比较简单,所以我现在的思路是

  1. 首先把一个基于Caffe的YOLO网络和SSD跑通,YOLO使用的网络是yeahkun 的,SSD使用的是 
    weiliu89的,并且还附有ssd_pacal.py的源码解读(20180411完成)
  2. 然后再用自己的数据集在上面跑通,这里当然会有一些理解网络参数,修改参数符合自己数据集的过程,进行一些对网络性能的评估运算;(20180410完成在YOLO上面的自己数据集的运行)
  3. 接着对YOLO网络进行一些调参的训练,这个过程也是一个看代码学习的过程。
  4. 最后希望就是自己基于caffe写一个网络,可以是YOLO2或者YOLO3。

20180412 
我的Ubuntu系统根目录满了根本下不了东西了,我知道有多种清空内存的方法,但是我还是喜欢暴力简单的,直接从win系统中分出一部分给ubuntu,下班之前搞一下。参考文章 
确定评估我的检测网络的标准。

阅读更多

扫码向博主提问

马卫飞

专注深度学习,计算机视觉,图像处理领域
  • 擅长领域:
  • 深度学习算法
  • 计算机视觉算法
  • 图像处理算法
  • Tensorflow
  • OpenCv
去开通我的Chat快问

没有更多推荐了,返回首页