caffe + ssd网络训练过程

參考博客:https://blog.csdn.net/xiao_lxl/article/details/79106837

1获取源代码:git clone https://github.com/weiliu89/caffe.git
2 进入目录中 :cd caffe

3,git checkout ssd

主要参考 https://github.com/weiliu89/caffe/tree/ssd

获取SSD的代码,下载完成后有一个caffe文件夹

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd

1
    2
    3

进入下载好的caffe目录,复制配置文件

cd caffe
cp Makefile.config.example Makefile.config

1
    2

编译caffe

make all  -j8  //-j16根据本机的处理器配置,16是16核处理器的意思
make pycaffe -j8
make test -j8
make runtest -j8(这一步不是必须的)

1
    2
    3
    4

下载预训练模型 链接:链接:https://pan.baidu.com/s/1o9c0GGU 密码:fucx,将它放入caffe/models/VGGNet/目录下

下载VOC2007和VOC2012数据集,放到/caffe/data下,并解压

cd data
wget  http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar

1
    2
    3
    4
    5
    6
    7

将图片转化为LMDB文件,用于训练,在caffe目录下

cd ..
cd caffe
./data/VOC0712/create_list.sh  
./data/VOC0712/create_data.sh

1
    2
    3
    4

训练模型
在下载的caffe根目录执行如下命令训练,在examples/ssd下存在几个.py文件,训练的时间较长。

python examples/ssd/ssd_pascal.py

1

实验效果
(1)在图片测试集上测试

python examples/ssd/score_ssd_pascal.py

1

2)在视频上测试

python examples/ssd/ssd_pascal_video.py

1

3)在摄像头上测试

python examples/ssd/ssd_pascal_webcam.py

1

报错问题解决以及填坑笔记:

1. 报错:no module named caffe等错误

这是由于caffe的Python环境变量未配置好,可按照下面方法解决:

确保先重新make下pycaffe,然后 将python的路径配置到环境变量中
make pycaffe -j8
vim ~/.bashrc
加入 export PYTHONPATH=/SSD所在目录/caffe/python
source ~/.bashrc

2. 配置SSD-caffe测试时出现“Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal”解决

运行 python examples/ssd/ssd_pascal.py 时报错

解决方案:这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推。

但是SSD配置时的例子是将训练语句整合成一个python文件ssd_pascal.py,所以需要改此代码。相关配置训练方法请参看转载博文:http://blog.csdn.net/xunan003/article/details/78427446

解决方法:将ssd_pascal.py文件中第332行gpus = “0,1,2,3”的GPU选择改为gpus = “0”,后面的1,2,3都删掉即可。再次训练即可。

当然,由于博主只有一块GPU且电脑运行内存有限,还需要将ssd_pascal.py文件中的337行batch_size = 32和338行accum_batch_size = 32都改小一倍,即更改批量大小,不然会出现“Check failed: error == cudaSuccess (2 vs. 0) invalid …”的错误。

3. 配置SSD-caffe出现“ AttributeError: ‘module’ object has no attribute ‘LabelMap’”解决

这是由于caffe的Python环境变量未配置好,可按照下面方法解决:
vim ~/.bashrc
加入 export PYTHONPATH=/SSD所在目录/caffe/python
source ~/.bashrc

原文地址:https://www.cnblogs.com/shuimuqingyang/p/10149478.html

时间: 2024-08-02 11:52:42

caffe + ssd网络训练过程的相关文章

caffe绘制训练过程的loss和accuracy曲线

转自:http://blog.csdn.net/u013078356/article/details/51154847 在caffe的训练过程中,大家难免想图形化自己的训练数据,以便更好的展示结果.如 果自己写代码记录训练过程的数据,那就太麻烦了,caffe中其实已经自带了这样的小工具 caffe-master/tools/extra/parse_log.sh  caffe-master/tools/extra/extract_seconds.py和 caffe-master/tools/ext

解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录

我用的是faster-rcnn,在绘制训练过程的loss和accuracy曲线时候,抛出如下错误,在网上查找无数大牛博客后无果,自己稍微看了下代码,发现,extract_seconds.py文件的 get_start_time()函数在获取时间时候获取失败,因为if line.find('Solving') != -1:这个语句判断错误导致,具体解决办法: 将该函数改造成: def get_start_time(line_iterable, year):    """Find

物体检测算法 SSD 的训练和测试

GitHub:https://github.com/stoneyang/caffe_ssd Paper: https://arxiv.org/abs/1512.02325 1. 安装 caffe_SSD: git clone https://github.com/weiliu89/caffe.git cd caffe git checkout ssd 2. 编译该 caffe 文件,在主目录下: # Modify Makefile.config according to your Caffe i

基于pycaffe的网络训练和结果分析(mnist数据集)

该工作的主要目的是为了练习运用pycaffe来进行神经网络一站式训练,并从多个角度来分析对应的结果. 目标: python的运用训练 pycaffe的接口熟悉 卷积网络(CNN)和全连接网络(DNN)的效果差异性 学会从多个角度来分析分类结果 哪些图片被分类错误并进行可视化? 为什么被分错? 每一类是否同等机会被分错? 在迭代过程中,每一类的错误几率如何变化? 是否开始被正确识别后来又被错误识别了? 测试数据集:mnist 代码:https://github.com/TiBAiL/Pycaffe

SSD框架训练自己的数据集

SSD demo中详细介绍了如何在VOC数据集上使用SSD进行物体检测的训练和验证.本文介绍如何使用SSD实现对自己数据集的训练和验证过程,内容包括: 1 数据集的标注2 数据集的转换3 使用SSD如何训练4 使用SSD如何测试 1 数据集的标注 数据的标注使用BBox-Label-Tool工具,该工具使用python实现,使用简单方便.该工具生成的标签格式是:object_numberx1min y1min x1max y1maxx2min y2min x2max y2max...2 数据集的

Caffe-python interface 学习|网络训练、部署、测试

继续python接口的学习.剩下还有solver.deploy文件的生成和模型的测试. 网络训练 solver文件生成 其实我觉得用python生成solver并不如直接写个配置文件,它不像net配置一样有很多重复的东西. 对于一下的solver配置文件: base_lr: 0.001 display: 782 gamma: 0.1 lr_policy: "step" max_iter: 78200 #训练样本迭代次数=max_iter/782(训练完一次全部样本的迭代数) momen

Caffe-python interface 学习|网络训练、部署、測试

继续python接口的学习.剩下还有solver.deploy文件的生成和模型的測试. 网络训练 solver文件生成 事实上我认为用python生成solver并不如直接写个配置文件,它不像net配置一样有非常多反复的东西. 对于一下的solver配置文件: base_lr: 0.001 display: 782 gamma: 0.1 lr_policy: "step" max_iter: 78200 #训练样本迭代次数=max_iter/782(训练完一次所有样本的迭代数) mom

Batch_Size对网络训练结果的影响

最近在跑一些网络时发现,训练完的网络在测试集上的效果总是会受Batch_Size 大小的影响.这种现象跟以往自己所想象的有些出入,于是出于好奇,各种搜博客,大致得出了自己想要的答案,现写一篇博客记录一下. 在训练过程中,一般有三种方式来从数据集中抽取数据,更新参数.一种是取所有的样本算出梯度(Full Batch Learning),另一种是每次迭代只取一个样本进行更新,也即在线学习(Online Learning),取Batch_Size = 1,还有一种是批梯度下降法(Mini-batche

卷积神经网络(CNN)的训练过程

卷积神经网络的训练过程 卷积神经网络的训练过程分为两个阶段.第一个阶段是数据由低层次向高层次传播的阶段,即前向传播阶段.另外一个阶段是,当前向传播得出的结果与预期不相符时,将误差从高层次向底层次进行传播训练的阶段,即反向传播阶段.训练过程如图4-1所示.训练过程为: 1.网络进行权值的初始化: 2.输入数据经过卷积层.下采样层.全连接层的向前传播得到输出值: 3.求出网络的输出值与目标值之间的误差: 4.当误差大于我们的期望值时,将误差传回网络中,依次求得全连接层,下采样层,卷积层的误差.各层的