ubuntu系统使用Faster RCNN训练自己的数据集

   2023-02-10 学习力0
核心提示:本人使用的ubantu16.04系统,带有GPU处理器,环境配置安装就不说了。本次所使用的源码为:https://github.com/endernewton/tf-faster-rcnn一.下载Github代码git clone https://github.com/endernewton/tf-faster-rcnn.git二.更改配置cd ~/tf-faster-rcnn/lib v

本人使用的ubantu16.04系统,带有GPU处理器,环境配置安装就不说了。

本次所使用的源码为:https://github.com/endernewton/tf-faster-rcnn

一.下载Github代码

git clone https://github.com/endernewton/tf-faster-rcnn.git

二.更改配置

cd ~/tf-faster-rcnn/lib
 
vim setup.py
 

ubuntu系统使用Faster RCNN训练自己的数据集

因为本人使用的服务器为GTX 1080,因此改为sm_61,大家可以通过nvidia-smi查看自己电脑的GPU配置。

三.编译

在上一步那个lib 文件夹中进行:

make clean
 
make
 
cd ..

四.安装COCO API

cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..

五.下载数据并解压

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
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar 

六.重命名

手动将下载的数据集文件夹VOCdevkit修改名字为VOCdevkit2007放入faster rcnn目录下的Data文件夹里。也可以通过以下代码实现,改名字是因为代码中是VOCdevkit2007。

cd $FRCN_ROOT/data
ln -s $VOCdevkit VOCdevkit2007 

七.下载预训练的模型

这一步下载需要FQ往往下载不成功,因此可以在此网盘中下载https://pan.baidu.com/s/1kWkF3fT,下载后放在data目录下进行解压。

tar xvf voc_0712_80k-110k.tgz

八.建立预训练模型的软连接

这一步的目的是在tf-faster-rcnn目录下建立output文件夹,并使用软连接来使用预训练模型,使用以下代码这里按照步骤走就行:

NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}
cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../data/voc_2007_trainval+voc_2012_trainval ./default
cd ../../..

九.demo测试

GPU_ID=0
CUDA_VISIBLE_DEVICES=${GPU_ID} ./tools/demo.py

十.使用自己的数据训练

替换自己的数据,可参照另一篇博客:https://blog.csdn.net/hitzijiyingcai/article/details/81636455

将制作好的数据放在data文件夹下,然后还要在其中新建一个txt文件,具体的位置及相关文件夹名称如图:

 ubuntu系统使用Faster RCNN训练自己的数据集

十一.下载预训练模型

首先下载VGG模型,网盘下载地址https://pan.baidu.com/s/1aD0jlYGHhZQeeTvNJy0GGQ,密码:45ef。

在tf-faster-rcnn/data/目录下创建一个imagenet_weights文件夹,解压权重数据并把解压后的vgg_16.ckpt重命名为vgg16.ckpt,因为后面在调用权重数据的时候名字需要对应的上。

可以说到这里就可以进行训练了,但是为了节省时间并排除错误,把迭代次数只设置了2000次,具体操作为:

./experiments/scripts/train_faster_rcnn.sh里的第22行把ITERS=70000改成ITERS=2000,

同时把./experiments/scripts/test_faster_rcnn.sh的ITERS也改成2000。

ubuntu系统使用Faster RCNN训练自己的数据集

在tf-faster-rcnn/lib/datasets目录下的pascal_voc.py里第36行更改自己的类别,'__background__'切记不可删掉,把后面的原来的20个label换成自己的,不用更改类别数目,也没有地方可以更改。

ubuntu系统使用Faster RCNN训练自己的数据集

 在tf-faster-rcnn/lib/datasets目录下的imdb.py中修改类别,类别+1,我的数据是两类。

ubuntu系统使用Faster RCNN训练自己的数据集

在开始训练之前,还需要把之前训练产生的模型以及cache删除掉,分别在tf-faster-rcnn/output/vgg16/voc_2007_trainval/default路径下和tf-faster-rcnn/data/cache路径下,然后再修改一些内容:

在tf-faster-rcnn/tools目录下test_net.py文件中修改如下内容:哪些地方修改照着自己的目录修改

ubuntu系统使用Faster RCNN训练自己的数据集

 然后修改同目录下的trainval_net.py文件中的内容:

ubuntu系统使用Faster RCNN训练自己的数据集

 接下来可以进行训练和测试了

GPU_ID=0
 
./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16

GPU_ID=0
 
./experiments/scripts/test_faster_rcnn.sh 0 pascal_voc vgg16

训练和测试结果就不展示了,展示demo测试的结果。

十二.demo测试模型

进行测试之前需要在tf-faster-rcnn/data/demo/目录下放入自己需要测试的图片

在tf-faster-rcnn/tools/目录下的demo.py文件中修改如下内容:找到对应的位置修改即可

ubuntu系统使用Faster RCNN训练自己的数据集

 ubuntu系统使用Faster RCNN训练自己的数据集

 ubuntu系统使用Faster RCNN训练自己的数据集

 修改图片名称,和放在demo文件夹中的图片名称一致,.jpg文件格式。

ubuntu系统使用Faster RCNN训练自己的数据集

./tools/demo.py

demo测试其中一类结果

 ubuntu系统使用Faster RCNN训练自己的数据集

参考文章:

1.https://blog.csdn.net/hitzijiyingcai/article/details/81808091

2.https://blog.csdn.net/hitzijiyingcai/article/details/81914200

3.https://blog.csdn.net/hitzijiyingcai/article/details/81347402

作者:舟华520

出处:https://www.cnblogs.com/xfzh193/

本文以学习,分享,研究交流为主,欢迎转载,请标明作者出处!

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Ubuntu使用——15(thinkphp路由报错Non-static method think\Route::get() should not be called statically)
    Ubuntu使用——15(thinkphp路由报错Non-static
    在route.php中添加代码:use think\Route;Route::get('/',function (){return 'hello world';});在浏览器中输入http://localhost/tp5-git/public/index.php,报错:[8192] ErrorException in route.php line 13Non-static method think\Route::get() should n
    03-08
  • Ubuntu与Window双系统安装的注意事项
    Ubuntu与Window双系统安装的注意事项
      UBUNTU与WINDOW双系统安装的注意事项 由 匿名 (未验证) 提交于 2019-05-18 10:07:41登录 发表评论29 次浏览假定电脑里面已经存在了Window系统,安装另外一个Linux系统:第一:首先确定电脑里面的window系统引导方式电脑系统的引导方式分为:(1)传统
    03-08
  • Ubuntu 图形界面损坏修复方法!!!亲测有用!!!
    Ubuntu 图形界面损坏修复方法!!!亲测有用!
    1.现象今天做实验的时候打开Ubuntu虚拟机,输入密码之后发现变成这样:然后重新开机,到了输入密码界面不输入,而是输入快捷键CTRL+alt+F1,输入用户名+密码进入之后输入ls,发现我的文件还在,心想这不是系统炸了啊上网搜说是图形界面损坏于是重新来:(参考
    03-08
  • Ubuntu终端输入异常、无法退格(删除文本)、使用方向键命令
    Ubuntu终端输入异常、无法退格(删除文本)、使
    1 起因为了学习嵌入式开发安装去安装的ncurses库,使用命令:sudo apt-get install libncurses5-dev导致系统自带的ncurses-base被自动删除。2 出现的问题误删ncurses-base后导致终端输入窗口出现了一系列的问题:Ubuntu终端输入无法退格(删除文本)、使用↑
    03-08
  • Raspberry Pi (Ubuntu) 上的 VNC 无监视器
    Raspberry Pi (Ubuntu) 上的 VNC 无监视器
    超级方便的无监视器VNC方便的树莓派远程桌面操作,无需显示器\(^^)/通过在页面末尾设置“无显示器设置”,可以在启动树莓派之前和之后连接和断开 HDMI 显示器电缆(这很重要)。来自主 PC 的远程桌面环境树莓派 4Ubuntu 20.04(64位)服务器+桌面设置VNC 设
    03-08
  • 免费供个人使用最多3个! !我尝试注册 ESM 将 Ubuntu LTS 版本的支持期延长 5 年
    免费供个人使用最多3个! !我尝试注册 ESM 将
    我个人使用 Ubuntu 作为我的 Linux 机器的操作系统。 Ubuntu 有正常版本和 LTS(长期支持)版本的操作系统。至此,版本号奇数为普通版,偶数为LTS版,LTS版长期支持5年,而普通版有支持期半年左右。。由于Linux机器用作GPU服务器,由于驱动程序和库的兼容性等
    03-08
  • [WSL2 Ubuntu22.04] 尝试使用 WSLg 运行 Elixir Desktop(未完成)
    [WSL2 Ubuntu22.04] 尝试使用 WSLg 运行 Elixir
    现状启用 WSLg 后,Elixir Desktop 会不会像在 Ubuntu 上一样工作?Elixir 桌面示例我试着跑步窗口显示并似乎在移动,但 Todo 应用程序未显示在窗口中。这是一个空白的显示。显示窗口和菜单。Extra 的内容也可以单独使用。如果您使用 Extra 的 Open Browser
    03-08
  • ubuntu中vi下删除键和上下左右键输入字符异常(
     刚安装的Ubuntu系统,使用vi编辑文本的时候,出现以下现象:点删除键输入了 D回车无效上下左右为字母光标乱跳 原因:自带的vi功能问题 解决:卸载原有vi,重新安装完整版本vim执行以下命令即可: sudo apt-get remove vim-common sudo apt-get install v
    02-10
  • ubuntu禁止ping操作(禁用ICMP协议访问) icmp
    ping命令是计算机之间进行相互检测线路完好的一个应用程序,计算机间交流数据的传输没有经过任何的加密处理,因此我们在用ping命令来检测某一个服务器时,可能在因特网上存在某个非法分子,为了安全我们把ping给禁止掉。通过专门的黑客程序把在网络线路上传输
    02-10
  • Ubuntu16配置静态IP ubuntu16.04配置静态ip
    一、静态IP地址配置sudo vi/etc/network/interfaces然后按照如下格式修改:注意这里的网卡名字是ens33auto loiface lo inet loopbackauto ens33iface ens33 inet staticaddress 192.168.1.106netmask 255.255.255.0gateway 192.168.1.1二、配置DNS#临时修改su
    02-10
点击排行