目录
目标检测
01 相关概念
什么是目标检测?输入图片,检测出目标位置与类别
什么是目标?在应用场景中抽象出目标。
eg:人脸检测——人脸-目标
文字检测——文字-目标
主流的目标检测,都是以矩阵框的形式进行输出的。更高精度的通常叫做语义分割。
02 数据集
开源数据集
①VOC数据集,常用VOC2007和VOC2012
下载方式:
1>官网 :http://host.robots.ox.ac.uk/pascal/VOC
2>Pytorch dataset
数据集标注:
Annotations:包含了.xml文件,描述了图片的各种信息,特别是目标的位置坐标
ImageSet:主要关注Main文件夹的内容,里面的文件包含了不同类别目标的训练/验证数据集图片名称
JPEGImages:原图片
SegmentationClass/Object:用于语义分割
②COCO数据集,常用COCO2017
官网:https://cocodataset.org
数据集标注:
.json文件
更正:在COCO标注中,bbox中后两个数值不是右下角坐标,而是标注框的宽度和高度
标注自己的数据集
在线标注数据集工具:
(网站)比较推荐,可以使用model自动标注
www.makesense.ai
Computer Vision Annotation Tool (http://cvat.org)
(本地)软件安装比较麻烦,且有一定限制
精灵标注助手 只能导出voc格式
vott
03 Pytorch加载数据集
前提:
1.Pytorch环境配置
2.了解Pytorch的数据结构
元组 a=(1,2) a[0]
字典 b={'gzh':'hygge','username':'zz'} b['username']
数组c=[1,2,3] c[1]
用Pytorch读取COCO数据集
import torchvision
from PIL import ImageDraw
coco_dataset=torchvision.datasets.CocoDetection(root=r"D:\\XunLei_Download\\COCO2017\\val2017",
annFile=r"D:\\XunLei_Download\\COCO2017\\annotations\\instances_val2017.json")
print(coco_dataset[0])
# coco_dataset返回一个元组,元组当中有两个元素。
# 第一个元素是图片 第二个元素是标注
image,info=coco_dataset[0]
image.show()#原始图片
Image_handler=ImageDraw.ImageDraw(image) #PIL库提供的ImageDraw画出图片标注
#info是一个数组 其中含有20个元素
for annotation in info: #annotation是一个字典dict
x_min,y_min,width,height=annotation['bbox']
#'bbox'对应的值是list数组 [x_min,y_min,width,height]
Image_handler.rectangle(((x_min,y_min),(x_min+width,y_min+height)))
image.show()#带有目标标注框的图片
注:由于python=3.9环境下没有相应的pycocotools-windows版本下载,降低python版本可能会导致之前安装的一些包出现不匹配问题,故无法在本地debug、运行观察。
用Pytorch读取自己标注的数据集
按照之前标注数据集的方式,将自己数据集的原始图片文件夹路径与标注路径替换上述代码路径即可