血泪踩坑史
win10 + Anaconda3 + python3.6 + cuda10.1 update2 + pytorch1.4

  • 环境配置
    • 1 CUDA
    • 2 虚拟环境
    • 3 安装pytorch
    • 4 安装依赖包
    • 5 编译CUDA依赖环境
  • 训练自己的数据集
    • 1 试跑公共数据集
    • 2 准备自己的数据集
    • 3 网络参数修改
    • 4 命令行运行

环境配置

源码:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0

遇到报错时可参考其他贴子:
安装faster-rcnn pytorch1.0.0版本以及importerror cannot import name ‘_mask’
win10和win7系统配置faster rcnn(pytorch)
Faster RCNN pytorch 1.0版调试(踩坑)过程记录

1 CUDA

卸载cuda:教程
安装cuda10.1 update2(又叫cuda10.1.243):下载地址 + 教程
  注意不要勾选Visual Studio Integration 以及 当前版本比新版本高的Driver
安装cudnn:下载地址 + 教程

安装CUDA时出现的问题:

The following processes must be stopped before the Nsight Systems
installation can proceed: Microsoft Visual Studio 2019 (Process ID:
15576)

解决:
关闭VS, 关不掉的话重启计算机

2 虚拟环境

删除旧环境

conda remove -n your_env_name --all

创建新环境

conda create --name your_env_name python=3.6

激活环境

activate your_env_name

3 安装pytorch

conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch

4 安装依赖包

cd F:\code\faster-rcnn.pytorch-pytorch-1.0 // 来到源码中requirements.txt所在的目录下
pip install -r requirements.txt

5 编译CUDA依赖环境

cd lib
python setup.py build develop

出现以下提示说明编译成功(为啥字体变黄了…

Installed f:\code\faster-rcnn.pytorch-pytorch-1.0\lib Processing
dependencies for faster-rcnn0.1 Finished processing dependencies for
faster-rcnn0.1

pytorch-0.4到这一步就卡住了,所以不建议使用

训练自己的数据集

1 试跑公共数据集

【下载Pascal_VOC数据集】(也可以直接训练自己的数据

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

【准备权重文件】:
地址,源码的作者已经贴出来了
深度学习常用预训练网络模型的下载地址
在faster-rcnn.pytorch-pytorch-1.0文件夹下创建data,data文件夹下创建pretrained_model,把下好的权重文件放里面

【配置pycharm】
File-settings-python interpreter

【问题】

ModuleNotFoundError: No module named ‘pycocotools._mask’

解决:安装COCO API

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

若安装时报错,可参考解决方案

【问题】

ImportError: cannot import name ‘imread’

解决:将scipy降级

pip install scipy==1.2.1

【问题】

RuntimeError: Not implemented on the CPU (ROIAlign_backward at
/faster-rcnn.pytorch/lib/model/csrc/ROIAlign.h:44)

解决:打开cmd

python trainval_net.py --cuda

2 准备自己的数据集

【数据集结构】:
真正有用的就这些

【每次更新训练数据集都需要删缓存】

faster-rcnn.pytorch/output/vgg16/voc_2007_trainval/default
faster-rcnn.pytorch/data/cache
faster-rcnn.pytorch/data/VOCdevkit2007/annotations_cache

重点是data/cache/voc_2007_trainval_gt_roidb.pkl

【参考代码】出处忘记了
YOLO格式转换为VOC格式

# yolo格式的换成voc
import os
import xml.etree.ElementTree as ET
from PIL import Image
import numpy as npimg_path = 'F:/data/VOC2007/JPEGImages/'                   #原图.jpg文件的路径
labels_path = 'F:/data/VOC2007/Annotations五项/txt/'        #labels中.txt文件的路径
annotations_path = 'F:/data/VOC2007/Annotations五项/xml/'   #生成的xml文件需要保存的路径
labels = os.listdir(labels_path)
clsnames_path = 'F:/data/VOC2007/Annotations五项/classes.txt'     #names文件的路径
with open(clsnames_path,'r') as f:classes = f.readlines()classes = [cls.strip('\n') for cls in classes]
def write_xml(imgname,filepath,labeldicts):                     #参数imagename是图片名(无后缀)root = ET.Element('Annotation')                             #创建Annotation根节点ET.SubElement(root, 'filename').text = str(imgname)         #创建filename子节点(无后缀)sizes = ET.SubElement(root,'size')                          #创建size子节点ET.SubElement(sizes, 'width').text = '1280'                 #没带脑子直接写了原图片的尺寸......ET.SubElement(sizes, 'height').text = '720'ET.SubElement(sizes, 'depth').text = '3'                    #图片的通道数:img.shape[2]for labeldict in labeldicts:objects = ET.SubElement(root, 'object')                 #创建object子节点ET.SubElement(objects, 'name').text = labeldict['name']        #BDD100K_10.names文件中#的类别名ET.SubElement(objects, 'pose').text = 'Unspecified'ET.SubElement(objects, 'truncated').text = '0'ET.SubElement(objects, 'difficult').text = '0'bndbox = ET.SubElement(objects,'bndbox')ET.SubElement(bndbox, 'xmin').text = str(int(labeldict['xmin']))ET.SubElement(bndbox, 'ymin').text = str(int(labeldict['ymin']))ET.SubElement(bndbox, 'xmax').text = str(int(labeldict['xmax']))ET.SubElement(bndbox, 'ymax').text = str(int(labeldict['ymax']))tree = ET.ElementTree(root)tree.write(filepath, encoding='utf-8')for label in labels:                                           #批量读.txt文件with open(labels_path + label, 'r') as f:img_id = os.path.splitext(label)[0]contents = f.readlines()labeldicts = []for content in contents:img = np.array(Image.open(img_path+label.strip('.txt') + '.jpg'))sh,sw = img.shape[0],img.shape[1]                  #img.shape[0]是图片的高度720#img.shape[1]是图片的宽度720content = content.strip('\n').split()x=float(content[1])*swy=float(content[2])*shw=float(content[3])*swh=float(content[4])*shnew_dict = {'name': classes[int(content[0])],'difficult': '0','xmin': x+1-w/2,                      #坐标转换公式看另一篇文章....'ymin': y+1-h/2,'xmax': x+1+w/2,'ymax': y+1+h/2}labeldicts.append(new_dict)write_xml(img_id, annotations_path + label.strip('.txt') + '.xml', labeldicts)

VOC数据集制作——ImageSets\Main里的四个txt文件

# VOC数据集制作——ImageSets\Main里的四个txt文件
# 0.6 : 0.2 : 0.2
import os
import randomtrainval_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()

3 网络参数修改

参考:
Faster-RCNN.pytorch的搭建、使用过程详解(适配PyTorch 1.0以上版本)
faster-rcnn.pytorch-1.0的jwyang当前最火版本代码复现与讲解

1)"/faster-rcnn.pytorch/lib/datasets/pascal_voc.py"

self._classes = ('__background__',  # always index 0'aeroplane', 'bicycle', 'bird', 'boat','bottle', 'bus', 'car', 'cat', 'chair','cow', 'diningtable', 'dog', 'horse','motorbike', 'person', 'pottedplant','sheep', 'sofa', 'train', 'tvmonitor','plane')

2)demo.py
同理

4 命令行运行

不知道为啥,pycharm运行老是报错…
训练命令行示例:

python trainval_net.py --cuda
CUDA_VISIBLE_DEVICES=0,1 python trainval_net.py --dataset pascal_voc --net res101 --cuda

使命令永久的在后台执行:

nohup python trainval_net.py --dataset pascal_voc --net res101 --epochs 10 --bs 4 --lr 0.01 --lr_decay_step 8 --cuda &

测试命令行示例:

python test_net.py --dataset pascal_voc --net res101 --checksession 1--checkepoch 3--checkpoint 10021--cuda

其中,checksession = 1,checkepoch = 3, checkpoint = 10021,对应到模型“faster_rcnn_1_3_10021”

model测试示例:

python demo.py --net res101 --checksession 1 --checkepoch 20 --checkpoint 233 --cuda --load_dir '/usr/detectron/faster-rcnn.pytorch-pytorch-1.0/tools/models/'

win10上成功运行faster-rcnn.pytorch-1.0相关推荐

  1. 可能是史上最详细-Faster RCNN Pytorch 复现全纪录

    向AI转型的程序员都关注了这个号

  2. win10和win7系统配置faster rcnn(pytorch)

    在win10和win7系统上配置faster rcnn(GPU)冲冲冲 介绍 我的环境 配置过程 1. 数据准备 2. 把数据集放进VOCdevkit2007文件夹下,名字为VOC2007 3. 安装 ...

  3. authentication failed: unrecognized kernel 32 关于魔法使之夜(魔法使いの夜)在win10上无法运行

    关于魔法使之夜(魔法使いの夜)在win10上无法运行 这个问题TYPE-MOON官方给出了解决方案,步骤也是很清晰的,以下做简单翻译: 解压 [forWin8x64.zip] 于适当位置 如果还没有下 ...

  4. zipslack安装方法(安装在ext3上成功运行)(转)

    zipslack安装方法(安装在ext3上成功运行)(转) 提要:本文主要介绍zipslack安装方法: 什么是zipslack? 主页: http://www.slackware.com/zipsl ...

  5. 成功将用intelli idea 建立的项目打包成jar文件,并在Linux上成功运行

    将jar包直接复制到linux系统上,运行java命令或者scala命令 第二个包:建立两个 object文件,如图所示: 主类仍然选择: 然后再打包copy到linux中,运行两个类都能成功,如图所 ...

  6. 2022全新docker安装mysql镜像、tomcat镜像及打包IDEA项目为war包并部署到docker上成功运行

    Docker部署web项目 一.推荐提前准备的软件 1.IDEA2022 2.xshell7 3.xftp7 4.Navicat Premium 15 二.docker上安装mysql 1.先从网上拉 ...

  7. 使用自己的数据集,修改运行faster RCNN

    找了一个faster rcnn的demo,但是因为初学,即使有一个例程也不太会使用自己的数据集使它正常运行. 现记录一下针对自己数据集的修改过程: 01 标注数据集 第一步:将标注信息放入MyAnno ...

  8. cmd静默运行_如何在Win10上静默运行批处理文件

    尽管批处理文件在操作系统方面与复古相似,但它们是完成任务的最佳途径之一. 如果你每天都要求你运行一些预定义的命令,那么控制台的窗口很烦人,特别是当你确定它们是完美的时候,并且不会犯任何错误. 在本指南 ...

  9. 毕设日志——在faster rcnn pytorch上训练KITTI数据集

    本次目标: 整理运行代码产生的内容 下载KITTI数据集和LSVH数据集 修改数据集样式为VOC2007 在新的数据集上训测 2019.4.13 一.准备工作 备份之前训练生成的文件models,ou ...

  10. ubuntu运行Faster R-CNN

    转载自:http://blog.csdn.net/helloeveryon/article/details/48789079 论文名:FasterR-CNN: Towards Real-Time Ob ...

最新文章

  1. 1024,咱们程序员过节了,疯狂送书
  2. 树状数组(Binary Indexed Tree)
  3. Java 输出指定目录下的所有文件
  4. 闭包函数和装饰器(待补充)
  5. 【OpenCV】重映射及仿射变换
  6. 【收集】个人认为比较实用的电脑工具软件(附带安装包下载)
  7. PowerBI使用Tabular Editor翻译报表模型
  8. 有关defunct进程(僵尸进程)的处理原则
  9. 老实人spring源码解析目录
  10. 【BZOJ】【P3110】【Zjoi2013】【K大数查询】【题解】【整体二分】
  11. Qt Style Sheet实践(二):组合框QComboBox的定制
  12. Android studio Android源码开发环境搭建
  13. 2015物联网白皮书:全球物联网正在进入发展新阶段
  14. 零基础入门数据挖掘-Task3 特征工程
  15. 图像修复序列——BSCB模型
  16. 当APO生产订单报工遇到物料账期没开
  17. 【内附独家PPT】CynosDB for MySQL 计算存储分离架构的实现和优化
  18. springboot 秒杀系统(二)redis
  19. 贝壳团队出品的 Flutter 组件库 Bruno 现已开源
  20. hibernate mysql 时间比较_Hibernate中HQL函数汇总及获取当前时间进行比较举例

热门文章

  1. php qcloud sdk weapp_qcloud/
  2. 微信绑定会员卡服务器出错,微信会员卡跳转到微信小程序出现如下错误?
  3. 汉庭董事长季琦:成功创业者的必经之路
  4. expect巡检服务器_linux 巡检报告
  5. python学习,pika模块
  6. sentinel实现秒杀活动
  7. java获取中文首字母
  8. 概率图--贝叶斯网络、马尔可夫网络
  9. Gateway统一网关(2021-11-14)
  10. 360linux 杀毒软件,Linux下用360安全卫士/360杀毒国产系统适配专版显示有木马或是误报...