深度学习目标检测入门实战

深度学习目标检测入门实战

  • 一、什么是目标检测
  • 二、目标检测常用的数据集(开源)
    • (一)VOC数据集
      • (1)背景知识
      • (2)数据集的下载
      • (3)VOC2007 数据集的标注
      • (4)VOC2012 数据集的标注
    • (二)COCO 数据集
      • (1)背景知识
      • (2)数据集的下载
      • (3)COCO2017 数据集的标注
  • 三、如何标注自己的数据集
    • (一)MakeSense(在线)
    • (二)CVAT(在线)(强推!)
    • (三)Labelimg(虚拟环境)
    • (四)精灵标注助手(本地)
  • 四、如何用Pytorch读取COCO数据集
  • 五、如何用自己的数据集标注成COCO的数据格式

一、什么是目标检测

(一)目标检测:位置 + 类别
主流的目标检测,都是矩阵框的形式输出
在这里插入图片描述

人脸检测:目标-人脸
文字检测:目标-文字

(二)语义分割:更高精度
在这里插入图片描述


二、目标检测常用的数据集(开源)

(一)VOC数据集

官网:http://host.robots.ox.ac.uk/pascal/VOC/

(1)背景知识

  • 很多领域数据集的开源往往都伴随着竞赛的产生,VOC就是PASCAL竞赛中所使用的数据集
    比赛形式:
    在这里插入图片描述
    在这里插入图片描述

数据集在这里插入图片描述
评分系统在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • VOC 2005 ~ 2012 发展历史在这里插入图片描述
    在这里插入图片描述
    所以大家更偏向于使用 VOC2007、VOC2012 数据集

(2)数据集的下载

强烈建议把数据集链接复制到迅雷中下载!!!
除了原始官方的下载路径,还有P2P资源,其他人下载此文件,迅雷开着,也愿意分享,我们就可以从这些地方获得资源,可大大提升下载速度

法一:用VOC官网

  1. 进入不同年份的竞赛
    在这里插入图片描述
  2. 在 Development Kit 中下载
    在这里插入图片描述
    法二:用Pytorch中的库
    在这里插入图片描述
    在这里插入图片描述

这里我们就以下载 VOC2007 和VOC2012为例
在这里插入图片描述
.tar是Linux上面的压缩格式,右键解压即可
在这里插入图片描述

(3)VOC2007 数据集的标注

  • VOC2007中的文件
    在这里插入图片描述
  • Annotations:其文件夹底下包含了.xml 文件,描述了图片的各种信息,特别是目标的位置坐标
    在这里插入图片描述
  • ImageSets:主要关注Main文件夹底下的内容,里面的文件包含了不同类别目标的训练/验证数据集图片名称
    在这里插入图片描述
    在这里插入图片描述
  • JPEGImages:原图片
    在这里插入图片描述
  • SementationClass/Object:用于语义分割,我们不关注
    在这里插入图片描述

(4)VOC2012 数据集的标注

会发现文件夹的结构目录和 VOC2007 的一样,唯一不同的可能就是文件夹中图片的命名方式:年份_图片标号

在这里插入图片描述

  • 对于先前以2008年为分界线,数据集不同的解释
    在这里插入图片描述
  • 复习解读
    在这里插入图片描述

(二)COCO 数据集

官网:https://cocodataset.org/#home

(1)背景知识

在这里插入图片描述
在这里插入图片描述

Explore:
在这里插入图片描述
在这里插入图片描述

Download
在这里插入图片描述

我们常用的数据集是 COCO2017

(2)数据集的下载

在这里插入图片描述
Train Images 和 Val Images 是一样的目录结构,训练数据集太大了,这里就只下验证集和标注

在这里插入图片描述

(3)COCO2017 数据集的标注

  • val2017文件夹下
    在这里插入图片描述
  • annotations文件夹下
    在这里插入图片描述
    从instances_val2017.json 中截取的一部分在这里插入图片描述
    在这里插入图片描述
  • 格式化代码的方法
    在这里插入图片描述

三、如何标注自己的数据集

(一)MakeSense(在线)

链接:https://www.makesense.ai/
在这里插入图片描述
1. 上传图片
在这里插入图片描述
2. 打标
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3. 导出
在这里插入图片描述

  • 导出成 VOC 格式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 导出成 YOLO 格式
    在这里插入图片描述
    在这里插入图片描述

4. 用 AI 标注的方法(这个网站这个功能加载的好慢)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(二)CVAT(在线)(强推!)

官网:https://www.cvat.ai/,可以进行多人协作,可以更好的处理大型项目,推荐!
1. 创建Project
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2. 创建task

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
3. 进入task中打标
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4. 导出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5. 下载到本地打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

另:

  • 从这里导出task和在打标界面导出效果相同
    在这里插入图片描述
  • CVAT还支持将整个项目直接导出
    在这里插入图片描述

(三)Labelimg(虚拟环境)

(1)在虚拟环境中安装+启动

# 安装
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
# 启动
labelimg

(2)标注
在这里插入图片描述
(3)常见报错

QMimeDatabase: Error loading internal MIME dataAn error has been encountered at line

原因:直接使用了anaconda的base环境(python>3.10),安装labelimg。安装labelimg的python环境必须低于3.10,否则labelimg会出现闪退

(四)精灵标注助手(本地)

如果是自制数据集,担心自己数据集的安全性,可以考虑本地,但更推荐用网站在线标注
下载链接:http://www.jinglingbiaozhu.com/
在这里插入图片描述
1. 导入图片
在这里插入图片描述
2. 打标
在这里插入图片描述
在这里插入图片描述
3. 导出
在这里插入图片描述
4. 格式化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、如何用Pytorch读取COCO数据集

(1)准备工作
配环境
在这里插入图片描述
了解读取COCO数据集所用函数
在这里插入图片描述
(2)便调试边写代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

import torchvision
from PIL import ImageDraw# 路径的正确写法
# 1、加 r (加个 r 可代表不进行转义)   2、把 /写成 //   3、把 /写成 \
coco_dataset = torchvision.datasets.CocoDetection(root=r"D:\Python\COCO_Debug\val2017",annFile=r"D:\Python\COCO_Debug\annotations\instances_val2017.json")
image,info = coco_dataset[0]
# 想要画出框,要获得图片的 handler(句柄)
image_handle = ImageDraw.ImageDraw(image)
for annotation in info:x_min,y_min,width,height = annotation['bbox']image_handle.rectangle(((x_min,y_min),(x_min+width,y_min+height)))image.show()

五、如何用自己的数据集标注成COCO的数据格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

import torchvision
from PIL import ImageDraw# 路径的正确写法
# 1、加 r (加个 r 可代表不进行转义)   2、把 / 写 //   3、把 / 写成 \
coco_dataset = torchvision.datasets.CocoDetection(root=r"MyDataset",annFile=r"MyDataset/mydataset_coco/annotations/instances_default.json")
image,info = coco_dataset[0]
# 想要画出框,要获得图片的handler(句柄)
image_handle = ImageDraw.ImageDraw(image)
for annotation in info:x_min,y_min,width,height = annotation['bbox']image_handle.rectangle(((x_min,y_min),(x_min+width,y_min+height)))image.show()

为什么喜欢把数据集的标注导出成标准的数据集格式,就是为了方便我们使用这些API,后面写代码的时候,替换一下路径即可


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/50613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++从入门到起飞之——初始化列表类型转换static成员 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、初始化列表 2、 类型转换 3. static成员 4、完结散花 1、初始化列表 • 之前我们实现构造函数…

[Unity] ShaderGraph实现DeBuff污染 溶解叠加效果

本篇是在之前的基础上,继续做的功能衍生。 [Unity] ShaderGraph实现Sprite消散及受击变色 完整连连看如下所示:

简洁高效的设备稼动率采集系统(一)

前言: 在自动化生产行业,每个公司都需要一款高效的生产设备,那我们怎么体现出设备的高效呢? 可以采集设备的状态,经过成熟的算法,得到设备的稼动率。设备稼动率是衡量生产设备在一定时间内真正处于生产状态…

Django学习(二)

get请求 练习: views.py def test_method(request):if request.method GET:print(request.GET)# 如果链接中没有参数a会报错print(request.GET[a])# 使用这个方法,当查询不到参数时,不会报错而是返回你设置的值print(request.GET.get(c,n…

ElasticSearch(三)—文档字段参数设置以及元字段

一、 字段参数设置 analyzer: 指定分词器。elasticsearch 是一款支持全文检索的分布式存储系统,对于 text类型的字段,首先会使用分词器进行分词,然后将分词后的词根一个一个存储在倒排索引中,后续查询主要是针对词根…

echarts使用案例

1.配置legend icon 根据点击事件动态更换样式 <template><div ref"chart" style"width: 600px; height: 400px;"></div></template><script>import * as echarts from echarts;export default {name: EchartsExample,data(…

C语言第三天笔记

变量 概念 表面&#xff1a;程序运行过程中取值可以改变的数据 实质&#xff1a;变量其实代表了一块内存区域/单元/空间。变量名可视为该区域的标识。 整个变量分为三部分&#xff1a; 变量名&#xff1a;这个只是变量的一个标识&#xff0c;我们借助变量名来存取数据。 变…

Element快速学习

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;JavaWeb关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 什么是Element&#xff1f; Element&#xff1a;它是由饿了么团队开发的一个…

盛元广通实验室自动化生物样本库质量控制管理系统

随着我国生物医学研究的不断深入和精准医疗的快速发展&#xff0c;对高质量生物样本的需求日益增长。近年来&#xff0c;我国生物样本库建设取得了显著进展。各级政府、高校和医院纷纷投入资源建设生物样本库&#xff0c;推动了生物样本资源的有效整合和利用。生物样本库的质量…

Footprint Analytics 助力 Core 区块链实现数据效率突破

Core 是一个基于比特币并兼容 EVM 的 Layer 1 区块链&#xff0c;正通过其创新解决方案引革新特币金融。作为首个引入非托管 BTC 质押协议及全球首个发行收益型 BTC ETP 产品的区块链&#xff0c;Core 站在了区块链技术的最前沿。通过利用超过 50% 的比特币挖矿哈希算力&#x…

QEMU源码全解析 —— CPU虚拟化(11)

接前一篇文章: 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM》源码解析与应用 —— 李强,机械工业出版社 《深度探索Linux系统虚拟化原理与实现》—— 王柏生 谢广军, 机械工业出版社 特此致谢! 前边几回又再次讲了一下VMX,本回开始讲解VCPU…

vue3 使用Mock

官网: http://mockjs.com/ 安装 npm install mockjs -Dsteps1: main.js 文件引入 import /api/mock.jssteps2: src/api/mock.js import Mock from mockjs import homeApi from ./mockData/home /*** 1.拦截的路径:mock拦截了正常NetWork/网络请求,数据正常响应* 2.方法* …

【苍穹】完美解决由于nginx更换端口号导致无法使用Websocket

一、报错信息 进行到websocket开发的过程中&#xff0c;遇到了前端报错&#xff0c;无法连接的提示&#xff1a; 经过F12排查很明显是服务端和客户端并没有连接成功。这里就涉及到之前的坑&#xff0c;现在需要填上了。 二、报错原因和推导 应该还记得刚开苍穹的第一天配置前…

Java集合——Array、ArrayList、LinkedList

1. ArrayList和Array的区别 1. 大小和自动扩容 Array&#xff1a;创建时指定大小&#xff0c;大小固定。若数组被创建&#xff0c;其大小不能更改 ArrayList&#xff1a;动态数组实现&#xff0c;可以动态增长或缩小。在不断添加元素时&#xff0c;ArrayList会自动进行扩容 …

MySQL大框架总结

1.DDL,DML,DQL,DCL的区别 &#xff08;由于DCL是关乎用户的&#xff0c;以下内容重点讲述数据库&#xff0c;表与数据的操作&#xff0c;所以对DCL不详细赘述&#xff09; DDL DML DQL DCL 中文/英文 数据库定义语言 data definition language 数据库操作语言 data mani…

为什么多数大数据治理项目都是失败的?Gartner调查失败率超过90%

引言&#xff1a;随着数据规模的爆发式增长、数据价值的凸显以及数据治理的必要性。在政策的推动、市场需求的拉动以及技术进步的支撑下&#xff0c;大数据治理正成为推动企业数字化转型、提升数据价值的重要手段。企业希望通过大数据治理提升数据利用率和数据价值&#xff0c;…

19 Python常用内置函数——range()

range() 是 Python 开发中非常常用的一个内置函数。该函数返回具有惰性求值特点的 range 对象&#xff0c;其中包含左闭右开区间 [start, end) 内以 step 为步长的整数。 参数 start 默认为 0&#xff0c;step 默认为 1。 print(range(5)) print(list(range(5))) print(list(r…

2024中国大学生算法设计超级联赛(2)

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 &#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 A - 鸡爪解题思…

华为高品质万兆园区体验保障技术白皮书

华为高品质万兆园区体验保障技术白皮书 - 华为企业业务 re 音视频会议已经成为企业办公的核心应用系统&#xff0c;尤其是高层会议的质量对企业的运营效率有很大影响&#xff0c;相 关的体验问题也是员工投诉的重灾区。但不同于传统的网络通断类问题,体验类问题涉及的范围大、…

vue3 暴露网络地址,以及修改端口号

一般情况下这里的地址是隐藏的 这里加上 --host 可以暴露网络地址&#xff0c;再加上 --8080 就可以将端口号修改为8080&#xff08;修改为其它的当然也可以&#xff09;