faster-Rcnn.pytorch 训练pascal_VOC数据集
参考文章:
使用的代码:
https://github.com/jwyang/faster-rcnn.pytorch
主要参考的博客有:
非常感谢以下博客的作者
https://blog.csdn.net/cube_suger/article/details/112648721?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162916910816780271523748%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162916910816780271523748&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
all
sobaiduend~default-4-112648721.first_rank_v2_pc_rank_v29&utm_term=win10%20faster%20rcnn%20pytorch&spm=1018.2226.3001.4187https://blog.csdn.net/sinat_35862942/article/details/106909911?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase
https://blog.csdn.net/qq_39542170/article/details/119800534
https://blog.csdn.net/wty98wzq/article/details/112133618
https://blog.csdn.net/weixin_42782150/article/details/109820615?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162934313916780264044972%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162934313916780264044972&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
all
sobaiduend~default-1-109820615.first_rank_v2_pc_rank_v29&utm_term=https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0&spm=1018.2226.3001.4187https://blog.csdn.net/qq_36852276/article/details/100154097
模型训练
1. 代码下载+环境配置
win10
1. conda python3.6
conda create -n pytorch python=3.6
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch
pip install -r requirements.txt
2. cuda 10.1以及相应的cudann安装
https://developer.nvidia.com/cuda-10.1-download-archive-update2?target_os=Windows&target_arch=x86_64&target_version=7&target_type=exelocal
https://developer.nvidia.com/rdp/cudnn-archive
cuda安装:
(CUDA、CUDNN在windows下的安装及配置_花花少年的博客-CSDN博客_cudnn
如果需要卸载的话:
https://blog.csdn.net/m0_37605642/article/details/99100924
知识内容
cuda,cudann是什么
https://www.jianshu.com/p/622f47f94784
CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的
运算平台
。 CUDA是一种由NVIDIA推出的
通用并行计算架构
,
该架构使GPU能够解决复杂的计算问题
cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。(nn——neural network)
ERROR1
我们使用的是pytorch1.4,cuda10.1与其兼容,而RTX30系列不支持cuda10.1,所以RTX30系列无法完成该项目,当然你可以使用非pytorch10.4版本,但是否可以实现未知
检查pytorch是否与cuda适配
import torch
print(torch.__version__)
print(torch.cuda.is_available())# ture
3.配置visual studio
这个项目
setup.py
文件需要vs
并且由于需要与cuda配合,而cuda10.1 不接受2022版
需下载visual studio2019
如果之前安装过vs(非2019版本)卸载
windows 中 在visual studio install 中卸载,之后在官网上下载2019版本
勾选C++的桌面开发即可
4. 下载已有Pascal_VOC数据集
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
之后使用tar命令,将这三个文件和并解压到一个文件夹中,(由于我之前安装过wsl 可以使用linux命令,应该也有其他的方法进行合并解压)
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
可以设置软连接,也可以直接放在data文件夹中
5. 下载与预练数据集放到相应位置
https://github.com/jwyang/faster-rcnn.pytorch内有vgg16网络的和resNet的
6. setup
python setup.py build develop
此时常见的error都在[win10和win7系统配置faster rcnn(pytorch)_来颗方糖的博客-CSDN博客_faster rcnn windows](https://blog.csdn.net/cube_suger/article/details/112648721?ops_request_misc=%7B%22request%5Fid%22%3A%22162916910816780271523748%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=162916910816780271523748&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2
all
sobaiduend~default-4-112648721.first_rank_v2_pc_rank_v29&utm_term=win10 faster rcnn pytorch&spm=1018.2226.3001.4187)有汇总,如果完全按照我之前的教程做的,应该只会出现error3的情况
2. train,test,demo
train:
CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--bs $BATCH_SIZE --nw $WORKER_NUMBER \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda
python test_net.py --dataset pascal_voc --net vgg16 \
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda
python demo.py --net vgg16 \
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda --load_dir path/to/model/directoy
ERROR2
这个可能是项目自带的一个bug,但我看到许多博客上都没写这个问题
训练test_net.py 时
FileNotFoundError: [Errno 2] No such file or directory: '000001.xml'
文件路径问题
有
loolzaaa
大佬解决了这个问题
python 的
{:s}
和
{}
不一样吗,这个我没查到这个知识点,知道的大佬可以告诉我
2. Pascal_VOC 文件制作
xml中有三种方法解析:sax,dom,ElementTree
随便使用一种就🆗
ElementTree 相关知识点
import xml.ElementTree as ET
tree=ET.parse(file) #对文件进行解析内存中形成树数据格式
annotation=tree.getroot()#获得根节点,即annotation节点
objects=annotation.findall('object')#annotation 的所有objects子节点
path=annotation.find('path')#annotation 的第一个path节点
path.text='new_path'#对内存中path的内容进行更改
tree.write(file,encoding='utf-8') #树数据格式写到file文件中
os 相关知识点
#pfile 指 path\file
import os
files=os.listdir('path') #将path中的文件(包括目录文件的名字以列表形式保存)
os.path.isfile(pfile)
os.path.isdir(pfile)
'a.jpg'.endwith('jpg')#判断点号后面的字符是不是jpg
'a.jpg'.split('.') #以. 为分隔符,输出n个字符串(列表形式)
os.path.split('pfile') #分解为[path,file]
os.path.splitdrive('pfile')# 分解出盘符
os.path.splitext('file')#分解出后缀
os.rename('old_pfile','new_pfile')
基本会以上几个函数,就可以操作Pascal_VOC 数据了
这是我自己写的python 文件,如果能帮到你的话,记得在github里面点个大大的star和fork,这真的会让我很开心!!!!!用爱发电真的不容易!!!!
Pascal_VOC-: Pascal_VOC 文件处理 (github.com)
之后把自己数据集变成Pascal_VOC数据集格式,替换调data中的文件夹
JPGImages
Annotations
ImageSets
数据集划分:
# VOC数据集制作——ImageSets\Main里的四个txt文件
import os
import random
trainval_percent = 0.8
train_percent = 0.75
xmlfilepath = 'F:/data/VOC2007/Annotations'
txtsavepath = 'F:/data/VOC2007/ImageSets/Main'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftrainval = open(txtsavepath + '/trainval.txt', 'w')
ftest = open(txtsavepath + '/test.txt', 'w')
ftrain = open(txtsavepath + '/train.txt', 'w')
fval = open(txtsavepath + '/val.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()