主要目标
- 准备好Pytorch环境
- 了解目标检测的一些基本概念,包括目标框的两种表示形式,IoU等
- 下载好VOC数据集
- 学习了解VOC数据集的格式,以及如何用代码读取VOC数据集,构建DataLoader
学习内容
分别对应《动手学CV-Pytorch》的3.1和3.2两节
我的基础
- 已经使用过pytorch进行目标检测项目并看过一些目标检测框架源码
- 熟悉目标检测基础原理,但需要巩固
笔记
-
用来表达bbox的格式通常有两种,(x1, y1, x2, y2) 和 (c_x, c_y, w, h),两者可以互相转换
-
IOU交并比Intersection over union: 衡量框的重叠程度
-
IOU的计算流程:
1)获取两个框的左上和右下坐标(red_x1, red_y1),(red_x2, red_y2),(green_x1, green_y1),(green_x2, green_y2)
2)计算左上点最大值,右下点最小值。这里注意左上第一个像素为(0,0),所以数值越大越向右下。
3) 利用2中获得的两个点计算黄色矩形面积,这就是intersection。
4)用3中获得的intersection加上两个矩形的面积之和减去intersection(因为这部分在面积和中算了两次),这就是Union了
-
VOC主要信息: filename, size, depth, object([xmin,ymin,xmax,ymax])
-
文中提到xml的提取方法,这个很多地方有介绍,就不在这里记录了。
-
首先需要实例化PascalVOCDataset类得到train_dataset,然后将train_dataset传入torch.utils.data.DataLoader,进而得到train_loader。
-
文中最后介绍了VOC转换成dataloader和数据增强transform