需要使用https://github.com/ultralytics/yolov3提供的pytorch yolov3版本来训练预测自己的数据集,以检测出感兴趣目标,目前还没有看到详细的资料,这边系统记录下我的配置过程。

和博主前面几篇博客配置环境一样,在Anconda python环境下进行配置。yolov3的一些资料可见博主的博客目标分类、语义分割、目标检测中的深度学习算法阶段性总结_jiugeshao的专栏-CSDN博客

一. 使用Conda创建新的环境

1. 之前系列博客里已经实现了很多网络,不想去影响之前python所依赖库的版本,故重新创建一个新的环境来用于跑此版本yolov3

conda create -n pytorch-yolo python=3.8

此虚拟机环境可以从如下路径查看的到

2.如下命令激活此conda环境

source activate pytorch-yolo

若关闭次环境可以用如下语句

source deactivate

删除某包

conda remove --name env_name --all

安装某个包可以如下

conda install -n env_name numpy

删除某包

conda remove -n env_name numpy

查看当前所有虚拟环境的名字,以及各虚拟环境下所包含的库命令

3.可以增加清华源,供后面conda install 一些库时,下载速度快点

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2

二. 在该conda环境下安装pytorch

1. PyTorch pytorch官网上选中Install按钮

2.博主的cuda 版本当时是10.1版本 深度学习平台实现Demo(三)- Anaconda3配置tensorflow2.3.1及如何转化tensorflow1.x系列代码_jiugeshao的专栏-CSDN博客

由于在下面页面上没有看到对应10.1的版本,故可点击install previous versions of PyTorch

3. 选择如上的命令语句, 在pytorch环境下的命令行语句下执行

4. 可以输入如下两条命令语句,确认是否安装完毕,且支持gpu加速

三. pycharm应用上面的Conda环境

1. pycharm新建一个工程,名叫Trial

2. File菜单栏,选择Settings,如下项,点击Add,增加新的project Interpreter

3. 应用此设置

4.可以通过第二步中show all选项跳出来的对话框窗口,在右侧功能区选中对应按钮,去更改环境名字

四. ultralytics/yolov3 使用原始模型预测图片

1. github上download资源https://github.com/ultralytics/yolov3,下载的目录放入到上面新建的工程目录Trial下

2. cd到yolov3目录下

3. 使用如下命令,安装此项目所依赖的环境库

pip install -r requirements.txt

4. 下载完毕后,可以跑下detect.py,来查看原有的coco数据集上图像的预测结果

此时查看文件,发现需要yolov3.pt(默认参数),但该文件并没有随git该目录时一起下载,github博主提供了这些文件的下载路径,

Releases · ultralytics/yolov3 · GitHub, 若下载速度慢的童鞋,我文末也会附上我整个工程的目录链接

5.yolov3.pt如下目录结构放置即可

6.直接运行detect.py文件,博主这里出现报错

Traceback (most recent call last):File "D:/mycode/0-Object_Detection/Trial/yolov3-master/detect.py", line 5, in <module>import cv2File "C:\Anaconda3\envs\pytorch-yolo\lib\site-packages\cv2\__init__.py", line 5, in <module>from .cv2 import *
ImportError: numpy.core.multiarray failed to import

此时可以先卸载numpy,再重新安装下,

7.直接默认参数运行detect.py文件,可以看到/data/images路径下两张图的预测结果

五. 构造自己的训练数据集

所使用的的数据集介绍见博主此前博客语义分割之FCN训练预测自己的数据集_jiugeshao的专栏-CSDN博客

1. 在Trial下新建了一个PreepareImage的文件夹,在该文件夹里来准备训练此版网络需要的文件

2. 使用LabelImg来对images里的24张图片进行标注,使用pip语句即可完成labelImg的安装

3.命令输入labelImg命令

4.对24张图像中的人行道进行标注,我标注的类别只有一种,

5.保存路径设置为上面images在同一目录下的anno文件夹下

6. anno文件中都为如下格式的xml文件,需要进行转化

7. 新建一个GenerateLabel.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author:Icecream.Shao
#voc_label.pyimport xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import cv2classes = ["sidewalk"]
def convert(size, box):dw = 1. / size[0]dh = 1. / size[1]x = (box[0] + box[1]) / 2.0y = (box[2] + box[3]) / 2.0w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)def convert_annotation(image_id, Image_root):in_file = open('../PrepareImage/anno/%s.xml' % (image_id))out_file = open('../PrepareImage/anno/%s.txt' % (image_id), 'w')tree = ET.parse(in_file)root = tree.getroot()size = root.find('size') # 根据不同的xml标注习惯修改if size:w = int(size.find('width').text)h = int(size.find('height').text)else:jpg_img_patch = Image_root + image_id + '.jpg'jpg_img = cv2.imread(jpg_img_patch)h, w, _ = jpg_img.shape  # cv2读取的图片大小格式是w,hfor obj in root.iter('object'):difficult = obj.find('difficult')if difficult:difficult = obj.find('difficult').textelse:difficult = 0cls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
print(wd)
Image_root = '../PrepareImage/images'fileList = os.listdir(Image_root)
for path in fileList:image_ids = path.split(".")image_id = image_ids[0]convert_annotation(image_id, Image_root)

运行,在anno文件夹下,会看到对应每一个xml文件,都会生成一个对应的txt文件

txt文件中的式样如下:

8. 此时准备训练所用数据都获取完毕,和yolov3-master同一级目录下新建sideWalk文件夹,文件夹中再建立子文件夹,整体目录结构如下:

如上sideWalk/images/train中为上面所用的24张原图

如上sidewalk/labels/train中为上面所生成的24个txt文件

六. 用自己数据集训练ultralytics/yolov3

1. 在/data文件夹中新建sidewalk.yaml文件

文件里内容为:

#Test by Icecream.Shao
# download command/URL (optional)
#download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ../sideWalk/images/train/  # 128 images
val: ../sideWalk/images/train/  # 128 images# number of classes
nc: 1# class names
names: [ 'sidewalk' ]

2. train中的默认参数为修改了如下红色标记线几处:

3. 运行train.py开始训练

七. 用训练好的模型预测图片

1. 训练好的模型可以从如下文件夹中找到

该文件夹中存在多个exp关键字的文件夹,其每一次训练,exp后面的索引都会增1,以记录你的训练历史

我们选择最新的exp10文件夹

将其中的best.pt拷贝到和前面yolov3.pt的同一级目录下

2. 在data文件夹下新建test文件夹,将要测试的图片放入该文件夹中

3. detect.py我修改了如下默认参数

4. 运行detect.py, 在runs文件夹的detect文件夹中能看到整体测试集的预测结果,这边的exp也是每一次预测的历史记录

检测效果如下:

这边不重点说模型优化的调节方法,方向是调参和选择所用的预训练模型,这边我所用的训练集样本太少。

后续优化过程可以见https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results上说明

可从如下链接获取博主所配置的工程

链接:https://pan.baidu.com/s/1t7_IBtLtzYtOJv17Ri3WuA 
提取码:9gg6

此版本对应的是9.5版本

ultralytics/yolov3训练预测自己数据集的配置过程相关推荐

  1. YOLOV3训练自己的数据集(PyTorch版本)

    由于这一段时间从事目标检测相关工作,因而接触到yolov3,进行目标检测,具体原理大家可以参考大神的博客目标检测(九)--YOLO v1,v2,v3,我就不细讲了,直接进入正题,如何利用深度学习框架P ...

  2. 『论文笔记』TensorFlow1.6.0+Keras 2.1.5+Python3.5+Yolov3训练自己的数据集!

    TensorFlow1.6.0+Keras 2.1.5+Python3.5+Yolov3训练自己的数据集! 文章目录 前期准备 一. Yolov3简要介绍 1.1. Yolov3网络结构图 1.2. ...

  3. 小白教程:Ubuntu下使用Darknet/YOLOV3训练自己的数据集

    小白教程:Ubuntu下使用Darknet/YOLOV3训练自己的数据集 YOLOV3官网教程:https://pjreddie.com/darknet/yolo/ 使用预训练模型进行检测 git c ...

  4. win10下yolov3训练自己的数据集

    在win10下用yolov3训练自己的数据集 1.  在darknet-master\build\darknet\x64 新建yolo-obj.cfg文件(可以直接复制yolov3.cfg,然后重命名 ...

  5. yolov3 训练自己的数据集 手把手教学 ubuntu 18.04 显卡1650 显存4g 跟着操作做保证学会

    yolov3 训练自己的数据集 手把手教学 ubuntu 18.04 显卡1650 显存4g 跟着操作做保证学会 这是我的训练效果,成功实现裂痕检测 演示视频:https://b23.tv/Ccmwi ...

  6. Pytorch实现YOLOv3训练自己的数据集

    1.说明: 最近一直在研究深度学习框架PyTorch,就想使用pytorch去实现YOLOv3的object detection.在这个过程中也在各大论坛.贴吧.CSDN等中看了前辈们写的文章,在这里 ...

  7. yolov3训练自己的数据集——第一次实操完整记录

    参考: yolov3 darknet yolo源码解析 bacth参数对性能影响 backpropogation算法 yolo中7*7个grid和rpn中的9个anchors darknet源码学习 ...

  8. YOLOv5训练自己的数据集之详细过程篇

    软硬件配置:Ubuntu + Tesla m40 24GB + cuda10.2 + anaconda 一.环境部署 1.源码下载 https://github.com/ultralytics/yol ...

  9. Mask R-CNN 训练自己的数据集(balloon过程+报错解释)

    因项目需要,识别带有多边形标注的图像,舍弃了速度快精度高的yolov3,使用Mask R-CNN网络.作为一名深度学习小白,在摸爬滚打中查找资料修改代码以及不断地调整训练集,途中踩了不少坑,终于达到预 ...

最新文章

  1. 小学五年级计算机进度安排,五年级下册信息技术年度教学计划
  2. 指针||指针和数组||指针和函数||指针、数组、函数 案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
  3. Pytorch自定义数据集
  4. 【干货】产品经理必知的11个微信接口
  5. JVM 调优实战--jvisualvm远程连接使用教程
  6. Excel单因素方差分析
  7. linux cd 命令案例,15个关于Linux的‘cd’命令的练习例子
  8. Spring : Spring自定义FactoryBean
  9. 第一个程序python-HelloWorld
  10. PAIP.WEB程序网站安全扫描检测工具(桌面程序)总结
  11. win7一直卡在首次使用计算机,重装win7一直停留在正在启动windows解决方法(完美解决)...
  12. H5页面跳转微信小程序
  13. 流程框图-各方框含义
  14. 股票回测Web应用开发
  15. java泛型(1) 认识泛型
  16. 基于FBX SDK的FBX模型解析与加载 -(二)
  17. 数据科学家也良莠不齐 蹩脚数据科学家的10个迹象
  18. Cisco Packet Tracer 配置交换机与路由器静态路由
  19. Retrofit @Multipart@PartMap@Part组合的一种用法
  20. 华为鸿蒙2系统harmonyOS,华为鸿蒙系统明年目标覆盖1亿台以上设备

热门文章

  1. 10的次方 各种集合 需要可以拿去用
  2. pycharm创建django项目常见问题
  3. 什么是脏读、幻读、不可重复读?要怎么处理?
  4. office project如何制定项目计划
  5. 基于Springboot的宠物医院管理系统-JAVA【毕业设计、论文、源码、开题报告】
  6. 粒子滤波算法(Matlab代码实现)
  7. 服务器运维浏览器,本机浏览器如何访问docker容器的内容_网站服务器运行维护,浏览器,docker...
  8. JAVA_HOME should point to a JDK not a JRE的解决办法
  9. c语言最小生成树,使用C语言实现最小生成树求解的简单方法
  10. Multisim14访问主数据库失败的解决方法