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

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

  • 一、什么是目标检测
  • 二、目标检测常用的数据集(开源)
    • (一)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,一经查实,立即删除!

相关文章

chrome 接口请求等待时间(installed 已停止)过长问题定位

参考: 解决实际项目中stalled时间过久的问题 背景: 测试反馈系统开 6 个标签页后, 反应变的很慢 定位: 看接口请求瀑布流, 已停止时间很长, 后端返回速度很快, 确定是前端的问题 推测是并发请求窗口数量的问题, 屏蔽部分一直 pending 的接口, 发现速度正常了, 搜到上面的参…

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

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

ios 语言基础初探Xcode 工具

iOS语言基础&初探Xcode工具 导言: 随着智能手机的普及,iOS操作系统成为了一个非常受欢迎的移动开发平台。而iOS应用的开发需要掌握相关的编程语言和开发工具。本文将介绍iOS开发的基础知识,包括iOS开发的编程语言和开发工具,…

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

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

python实现建立一个智能小车路径规划

在Python中实现一个智能小车的路径规划系统,你可以采用多种方法和库。这里,将给出一个基于图搜索算法(如A*算法)的简单示例,并结合一些Python库如networkx来处理图的操作,以及matplotlib来可视化路径。 步…

如何在Html界面内实现类似ChatGpt的打字效果

为了在你的代码中添加打字机效果,你可以创建一个函数来逐字展示内容。这个函数会将内容分解成单个字符,然后逐渐显示在页面上。下面是如何实现这个效果的步骤: 1. 定义打字机效果的函数 首先,你需要一个函数来逐步显示文本内容。…

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

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

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…

Vite 常用插件配置:自动导入+自动注册组件+动态创建图标+设置组件名

创建 Vue3Vite 项目 创建 Vue3 项目 $ pnpm create vuelatest通过脚手架选择开启以下功能 ✔ Project name: … <your-project-name> ✔ Add TypeScript? … No / Yes ✔ Add JSX Support? … No / Yes ✔ Add Vue Router for Single Page Application development?…

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

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

MATLAB粒子群算法求解同时取送货的充电电动车辆路径规划EVRPSPD代码实例

MATLAB粒子群算法求解同时取送货的充电电动车辆路径规划EVRPSPD代码实例 MATLAB粒子群算法求解同时取送货的充电电动车辆路径规划EVRPSPD代码实例

数学基础 -- 三角函数的常见极限与常见导数

三角函数的极限与导数 三角函数在微积分中有着广泛的应用&#xff0c;特别是在极限和导数的计算中。以下是一些关于三角函数极限与导数的基础知识。 一、三角函数的极限 常见极限公式 lim ⁡ x → 0 sin ⁡ x x 1 \lim_{x \to 0} \frac{\sin x}{x} 1 limx→0​xsinx​1 li…

C++ 类和对象 终篇

一 static成员&#xff1a; 静态成员变量是属于整个类的&#xff0c;而不是某个特定对象的。也就是说&#xff0c;所有对象共享同一个静态成员变量。它的特点包括&#xff1a; 非静态成员变量&#xff1a; class A { public:int _x; // 非静态成员变量 };int main() {A a1…

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…

aiohttp 异步爬虫实战

案例介绍 本次为我们要爬取一个数量相对大一点的网站&#xff0c; 链接为&#xff1a; https://spa5.scrape.center/ 这是一个图书网站&#xff0c;整个网站包含数千本图书信息&#xff0c;网站数据是 JavaScript 渲染而得&#xff0c;数据可以通过 Ajax 接口获取&#xff0…