一、概述:

1. 在GitHub上下载SSD模型代码

2. 准备自己的VOC数据集

3. 搭建Pytorch环境

4. 用Pytorch框架在Pycharm中跑模型

5. 遇到的问题和解决方法

6. 模型预测效果的检验和检测指标的查看

二、本文使用电脑配置:

硬件:联想拯救者R9000P 2021(R7 5800H/16GB/512GB/RTX3070)

软件:Win10系统、Anaconda3、Python3.8.0、pycharm

Pytorch配置:pytorch1.7.1和torchvision0.8.2

三、详细步骤:

1. 在GitHub上下载SSD模型代码

链接:https://github.com/bubbliiiing/ssd-pytorch

首先前往Github下载对应的仓库,下载完后利用解压软件解压,之后用编程软件打开文件夹。
注意打开的根目录必须正确,否则相对目录不正确的情况下,代码将无法运行。

一定要注意打开后的根目录是文件存放的目录。

2. 准备自己的VOC数据集

本文使用VOC格式进行训练,训练前需要自己制作好数据集,如果没有自己的数据集,可以通过Github连接下载VOC12+07的数据集尝试下。

VOC12+07的数据集链接:
①训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。

②训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

然后是数据集的处理:
在完成数据集的摆放之后,我们需要对数据集进行下一步的处理,目的是获得训练用的2007_train.txt以及2007_val.txt,需要用到根目录下的voc_annotation.py。

voc_annotation.py里面有一些参数需要设置。
分别是annotation_mode、classes_path、trainval_percent、train_percent、VOCdevkit_path,第一次训练可以仅修改classes_path,对应指向我们在model_data文件夹中新建的cls_classes.txt(内容就是我们要训练的类标签)

3. 搭建Pytorch环境

这里我用的Pytorch配置为pytorch1.7.1和torchvision0.8.2,具体配置方法,见下面这篇博客,链接:

(24条消息) 手把手教你配置Pytorch环境并使用(Win10系统下基于Anaconda完成的pytorch1.7.1和torchvision0.8.2的Pytorch深度学习环境搭建)_m0_54111890的博客-CSDN博客

4. 用Pytorch框架在Pycharm中跑模型

环境配置好以后就可以打开Pycharm进行模型的训练啦!

训练第一步:导入自己的数据集

训练第二步:修改模型参数

训练第三步:Debug

训练第四步:开始训练

训练第五步:训练完成后对模型检测精度的检测

具体步骤见我的另一篇博客,

或者在BliBli中跟着Bubbliiiing进行学习~

Pytorch 搭建自己的SSD目标检测平台(Bubbliiiing 深度学习 教程)_哔哩哔哩_bilibili

5. 遇到的问题和解决方法

这里就是上一步中提到的Debug环境啦!

问题一:在第一轮训练未开始就失败,或者训练几轮(此时的训练数据加载得会特别慢)然后失败,报错均为如下情况:RuntimeError: CUDA out of memory. Tried to allocate  2.14 GiB (GPU 0; 8.00 GiB total capacity; 279.45 MiB already allocated; 5.81 GiB free; 338.00 MiB eserved in total by PyTorch)
提醒:出现内存够,但是运行内存超出的情况。

解决:按下述方式修改输入的图片尺寸,并改小Batch_Size。

①修改utils_u.py中的img_min_side为224

②修改dataloader.py中的input_shape为[224,224]

③修改train.py中的input_shape为[224,224],并改小batch_size,此相处我改成了1。

再次运行,问题解决可以训练了!

问题二:训练进行了一段时间,又出现了如下报错:

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

解决:

在train.py文件中添加如下代码:

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

再次训练中途就没有出现报错啦,问题解决!

6. 模型预测效果的检验和检测指标的查看

模型预测效果的检验:

修改predict.py文件

指标的查看方法:

Pytorch 搭建自己的SSD目标检测平台(Bubbliiiing 深度学习 教程)_哔哩哔哩_bilibili

①修改frcnn.py文件中的model_path,使其指向logs文件夹中由训练新生成的.pth文件,修改classes_path,使其指向model_data文件夹下的cls_classes.txt。

②修改get_map.py文件中的classes_path为model_data文件夹下的cls_classes.txt。

③运行get_map.py。就可以在新生成的文件下的result中查看模型的训练精度等各种参数了。

目标检测——手把手带你实现SSD(Single Shot MultiBox Detector)训练和检测自己的数据集相关推荐

  1. SSD(Single shot multibox detector)目标检测模型架构和设计细节分析

    先给出论文链接:SSD: Single Shot MultiBox Detector 本文将对SSD中一些难以理解的细节做仔细分析,包括了default box和ground truth的结合,def ...

  2. 目标检测--SSD: Single Shot MultiBox Detector

    SSD: Single Shot MultiBox Detector ECCV2016 https://github.com/weiliu89/caffe/tree/ssd 针对目标检测问题,本文取消 ...

  3. 目标检测方法简介:RPN(Region Proposal Network) and SSD(Single Shot MultiBox Detector)

    原文引用:http://lufo.me/2016/10/detection/ 最近几年深度学习在计算机视觉领域取得了巨大的成功,而在目标检测这一计算机视觉的经典问题上直到去年(2015)才有了完全使用 ...

  4. 目标检测 SSD: Single Shot MultiBox Detector - SSD在MMDetection中的实现

    目标检测 SSD: Single Shot MultiBox Detector - SSD在MMDetection中的实现 flyfish 目标检测 SSD: Single Shot MultiBox ...

  5. 目标检测 - 基于 SSD: Single Shot MultiBox Detector 的人体上下半身检测

    基于 SSD 的人体上下半身检测 这里主要是通过将训练数据转换成 Pascal VOC 数据集格式来实现 SSD 检测人体上下半身. 由于没有对人体上下半身进行标注的数据集, 这里利用 MPII Hu ...

  6. 深度学习之 SSD(Single Shot MultiBox Detector)

    目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型: (1)two-stage方法,如R-CNN系算法,其主要思路是先通过启发式方法(selective search)或者CNN网络(R ...

  7. SSD论文阅读(Wei Liu——【ECCV2016】SSD Single Shot MultiBox Detector)

    本文转载自: http://www.cnblogs.com/lillylin/p/6207292.html SSD论文阅读(Wei Liu--[ECCV2016]SSD Single Shot Mul ...

  8. ssd网络结构_封藏的SSD(Single Shot MultiBox Detector)笔记

    关注oldpan博客,侃侃而谈人工智能深度酝酿优质原创文! 阅读本文需要xx分钟 ? 前言 本文用于记录学习SSD目标检测的过程,并且总结一些精华知识点. 为什么要学习SSD,是因为SSD和YOLO一 ...

  9. SSD( Single Shot MultiBox Detector)关键源码解析

    SSD(SSD: Single Shot MultiBox Detector)是采用单个深度神经网络模型实现目标检测和识别的方法.如图0-1所示,该方法是综合了Faster R-CNN的anchor ...

  10. SSD: Single Shot MultiBox Detector 之再阅读

    SSD: Single Shot MultiBox Detector SSD 一句话就是速度快,效果好! 第一版 8 Dec 2015,第二版是30 Mar 2016 主要改进是内容更加详实,实验更加 ...

最新文章

  1. 多项式回归、分位数回归(Quantile Regression)、保序回归(Isotonic Regression)、RANSAC回归、核岭回归、基准回归模型(baseline)
  2. 搜索引擎solr系列---多字段匹配的实现方法
  3. 工厂方法模式(Factory Method)简介
  4. Git学习记录 力做全网最强入门教程
  5. ITK:创建Image
  6. 字符串中最后一个词组的长度 Length of Last Word
  7. node-webki NATIVE UI API概览
  8. linux基础知识3
  9. pass样本量_年度质量回顾-样本量
  10. React系列--jsx语法及虚拟dom,渲染
  11. 干货:io流带时间的聊天室【客户端与服务端】
  12. 冷血格斗场和热血格斗场
  13. android语音识别sdk接入收费吗,百度语音识别开放平台SDK使用方法
  14. 2022-03-15 工作记录--PHP-判断数组的长度 + 展示数组的长度
  15. Keep 移动健身专家
  16. 【Proteus仿真】51单片机在线版电子锁案例
  17. java调用espeak_espeak-example Java for windows文本转语音,用 引擎 Other systems 其他 244万源代码下载- www.pudn.com...
  18. 企业税收完税证明模板
  19. 定位云原生数据中台,「智领云」获数千万元A轮融资
  20. matlab 素数积,素数之美1:所有素数之积

热门文章

  1. java中的Cipher类
  2. Android学习笔记---集成百度语音合成的坑与坑
  3. oracle导出自增设置,教程方法;oracle中如何设置自增主键电脑技巧-琪琪词资源网...
  4. api.php(260x260),Restful Api文档 -V3-教程
  5. Python常用第三方库大全, 值得收藏!
  6. 生成SQLite的db文件
  7. 解决手机刷机卡在开机谷歌验证
  8. Win11小键盘无法使用怎么办?
  9. supp 和rdomain连接
  10. [论坛专贴]关于接口