【手把手AI项目】四、Caffe_ssd安装以及利用VOC2012,VOC2007数据集测试VGG_SSD网络

本文主要是介绍【手把手AI项目】四、Caffe_ssd安装以及利用VOC2012,VOC2007数据集测试VGG_SSD网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装caffe_ssd

前提:

  • linux双系统
  • 原生caffe安装配置

caffe_ssd:https://github.com/weiliu89/caffe/tree/ssd

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd  #这句一定要有,相当于从origin转到一个tree去可以理解为转到这个仓库的一个新的分支当中去,这个才是真正的caffe_ssd 所以这也就是网址和 git clone 网址不一样的原因,因为需要转分支

之后的编译过程和我另外一篇博文完全一致,出现error解决方式在文章下方和过程中都有提到 https://blog.csdn.net/qq_33431368/article/details/84717053
sudo make all -j8 可能出现error
在这里插入图片描述解决办法
修改Makefile ,line181 加入boost_regex,如下图
在这里插入图片描述成功编译
在这里插入图片描述

sudo make pycaffe -j8

下载数据集VOC2012 2007进行测试caffe_ssd(VGGnet)

下载预训练模型  https://gist.github.com/weiliu89/2ed6e13bfd5b57cf81d6
如果进不去,刷不出来网页,不要着急因为需要vpn才可以 参考以下这篇文章
如何在Ubuntu16.04访问国外网站——lantern2018-07-16
最后将model放到

$CAFFE_ROOT/models/VGGNet/

如下图我的放置所示
在这里插入图片描述
下载dataset VOC2012 VOC2007

cd $HOME/data  #在自己的home下新建一个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

如下图所示
在这里插入图片描述

下载步骤也可以在以下网站完成:

https://pjreddie.com/projects/pascal-voc-dataset-mirror/

在这里插入图片描述
解压

tar -xvf VOCtrainval_11-May-2012.tar
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar

在这里插入图片描述
之后把VOC格式转换为caffe输入的lmdb格式

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

在这里插入图片描述
执行两个shell文件,生成train_list test_list文件以及进一步生成lmdb格式文件
在这里插入图片描述
在这里插入图片描述

cd caffe  #一定要先cd 到caffe的根目录下再执行程序才能成功
python examples/ssd/ssd_pascal.py

直接执行会出现以下问题(具体因为./build/tools/caffe train的路径为caffe_ssd当前目录下的路径)
在这里插入图片描述
执行开始后可能出现error:
在这里插入图片描述
解决办法
根据你的显卡个数来定义GPU的参数
我这里只有一个1060ti所以参数改为如下所示,在ssd_pascal.py 中改为 gpus = “0”
在这里插入图片描述
如果CPU则直接删掉,GPU为一块显卡则为 “0”,以此列推 三块显卡为"0,1,2"
我只有一块显卡 改为如下图:
在这里插入图片描述
但是可能还会有这些错误,如果是1080ti可能不会存在
F1212 16:38:34.863675 32735 syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0) out of memory
在这里插入图片描述
解释一下,这是常见错误,就是显卡内存不够,所以batchsize 改小就好了。
找到ssd_pascal.py里面的batchsize处更改即可,改为32,不行的话就继续修改为16,或者8,甚至为4。
在这里插入图片描述
训练成功
在这里插入图片描述会发现随着迭代次数的增加,整个loss是不断减小的,直到趋于平稳。
如果你没有时间这边作者有自己训练好的下载测试一下美滋滋
https://drive.google.com/file/d/0BzKzrI_SkD1_WVVTSmQxU0dVRzA/view
下载解压,解压之后其实是个整体文件有网络结构文件prototxt文件,caffemodel,两个python文件,直接覆盖之前的VGGnet即可
在这里插入图片描述
文件情况如上图所示,caffemodel为input为300*300d迭代12000次的训练的caffemodel
执行

cd caffe
python models/VGGNet/VOC0712/SSD_300x300/score_ssd_pascal.py

这边用 examples/ssd/score_ssd_pascal.py也可以一样的,只是下载打包顺便用了,如果自己训练出了模型,不下载直接运行这个py文件也ok
在这里插入图片描述打开摄像头走一波

cd caffe
python examples/ssd/ssd_pascal_webcam.py

在这里插入图片描述
PC机上很快, 博主就不露脸了,长得丑 ,截图放出来三分之一能看到label和acc以及FPS即可

Reference

https://blog.csdn.net/zhang_shuai12/article/details/52346878

https://blog.csdn.net/yx2017/article/details/72870565

https://blog.csdn.net/QLULIBIN/article/details/81810501

这篇关于【手把手AI项目】四、Caffe_ssd安装以及利用VOC2012,VOC2007数据集测试VGG_SSD网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/161456

相关文章

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常