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

news2024/12/24 0:04:57

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

  • 一、什么是目标检测
  • 二、目标检测常用的数据集(开源)
    • (一)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.coloradmin.cn/o/1951648.html

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

相关文章

vue3前端架构---打包配置

最近看到几篇vue3配置项的文章,转载记录一下 Vue3.2 vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案-CSDN博客文章浏览阅读2k次,点赞8次,收藏9次。Vue3.2 vue/cli-service 打包 chunk-vendors.js 文件过大导致页…

苦学Opencv的第九天:模板匹配

Python OpenCV入门到精通学习日记:模板匹配 前言 模板匹配是一种最原始、最基本的识别方法,可以在原始图像中寻找特定图像的位置。模板匹配经常应用于简单的图像查找场景中,例如,在集体合照中找到某个人的位置。 #mermaid-svg-N…

Linux中,MySQL索引、事物与存储引擎

MySQL索引介绍 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分庞大的时候,索引可以大大加快查询的速度。这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访…

tinyxml2的入门教程

tinyxml2的入门教程 前言一、tinyxml2 创建xml 文件二、tinyxml2 添加数据三、tinyxml2 更改数据四、tinyxml2 删除数据五、tinyxml2 打印总结 前言 xml 是一种标记型文档,有两种基本解析方式:DOM(Document Object Model,文档对象模型)和SAX…

C++ 数字和数组解析

文章目录 1. 定义数字 2. 数学运算 3. 随机数 4. 数组 声明数组 初始化数组 5. 访问数组元素 6. 数组类型 7. 多维数组 二维数组 初始化二维数组 访问二维数组元素 8. 指向数组的指针 9. 传递数组给函数 10. 从函数返回数组 1. 定义数字 通常,当需要…

嵌入式人工智能(23-基于树莓派4B的温湿度传感器DHT11)

1、湿度传感器 目前市面上,仅测量湿度的传感器很少,普遍使用的都是温/湿度传感器,即以温/湿度一体式的探 头作为测温元件,将温度和湿度信号采集出来,再经过稳压滤波、运算放大、非线性校正、V转换、恒流及反向保护等电…

[Meachines] Lame smbd3.0-RCE

信息收集 IP AddressOpening Ports10.10.10.3TCP:21,22,139,445,3632 $ nmap -p- 10.10.10.3 --min-rate 1000 -sC -sV 21/tcp open ftp vsftpd 2.3.4 |_ftp-anon: Anonymous FTP login allowed (FTP code 230) | ftp-syst: | STAT: | FTP server status: | …

【Stable Diffusion】(基础篇五)—— 使用SD提升分辨率

使用SD提升分辨率 本系列博客笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在前期作画的…

【NoSQL数据库】Redis知识小册

一、缓存穿透 缓存穿透是先查Redis,发现缓存中没有数据,再查数据库。然而,如果查询的数据在数据库中也不存在,那么每次查询都会绕过缓存,直接落到数据库上。 解决方案一、缓存空数据 查询Redis缓存:首先查…

独立开发者系列(34)——node项目部署

本节梳理node项目的部署,搭建一个外部能正常访问的node网站。将开发好的项目搭建到系统里面。Node的部署比PHP版本要复杂一些。部署项目前要理解几个概念。Nodejs版本管理器概念。 NVM概念,我们平时开发是在本地电脑上开发,开发的时候&#x…

计算机毕业设计:基于SSM的宠物领养系统

私信获取完整代码 一、选题背景介绍 📖☕️🌊📝📚🎩🚀📣 🎩 宠物领养系统:帮助爱宠人士更好的去查看可以领养的宠物,帮助宣传相关保护宠物相关知识 &…

PHP家政系统自营+多商户独立端口系统源码小程序

家政行业的新篇章 引言:家政行业的数字化转型 近年来,随着科技的飞速发展和人们生活节奏的加快,家政服务行业也迎来了数字化转型的浪潮。为了提升服务效率、优化用户体验,越来越多的家政公司开始探索“家政系统自营多商户小程序…

Qt Designer的父子部件样式表设置学习

在Qt Designer中新建图像界面,放置两个QWidget,命名为widget_1和widget_2;两个QPushButton,pushButton_1和pushButton_2。 它们的父子从属关系如下: 设置widget_1的样式表: QWidget{ background-color: r…

lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级

定义一系列的AI行为类型和它们的优先级,以及一个映射表ai_tbl来关联每种AI行为类型与对应的脚本文件和优先级。以下是对代码的详细解释: lua 游戏架构 之 游戏 AI (一)ai_base-CSDN博客https://blog.csdn.net/heyuchang666/artic…

构建现代化农业产业服务平台的系统架构

随着全球农业产业的发展和技术的进步,农业生产管理面临着越来越复杂的挑战和机遇。建立一个现代化的农业产业服务平台系统架构,不仅能够提高农业生产效率和管理水平,还能促进农民收入增长和可持续发展。本文将探讨如何设计和实施这样一个系统…

git配置环境变量

一.找到git安装目录 打开此git安装目录下的bin文件,复制此文件路径 二.配置环境变量 2.1 右键点击此电脑的属性栏 2.2 点击高级系统配置 2.3 点击环境变量 2.4 按图中步骤进行配置 三.配置完成 win r 输入cmd打开终端 终端页面中输入 git --version 如图所示…

PySide(PyQt)的QPropertyAnimation(属性动画)

学不完,根本学不完:(,感觉逐渐陷入了学习深渊。。。 QPropertyAnimation 是 PySide(PyQt) 中一个用于在时间轴上平滑地改变对象属性的类。它常用于制作动画效果,比如移动、缩放或改变透明度等。 基本概念 QPropertyAnimation 是 Qt …

文件包含漏洞--pyload

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.PHP伪协议利用 php://协议 php://filter :用于在读取作用和写入文件时进行过滤和转换操作。 作用1:利用base64编码过滤器读取源码 通常利用文件包含执行php://filte…

17.5【C语言】static的补充说明

static &#xff08;静态的) 作用&#xff1a;修饰局部变量&#xff0c;修饰全局变量&#xff0c;修饰函数 对比两段代码 #include <stdio.h> void test() {int a 5;a;printf("%d ", a); } int main() {int i 0;for(i0; i<5; i){test();}return 0; } …

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

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