神经网络与深度学习(三):常用数据集与深度学习视觉应用
MINIST数据集主要由一些手写数字的图片和对应标签组成,是常用的手写数字识别数据集,图片共有10类,分别对应从0~9;由60000个训练样本和10000个测试样本组成,每个样本都是一张28*28像素的手写灰度数字图片。原始的MNIST数据库包含下面4个文件:在python,可以通过如下方式调用该数据集。
1.常用数据集
1.1 MNIST
MINIST数据集主要由一些手写数字的图片和对应标签组成,是常用的手写数字识别数据集,图片共有10类,分别对应从0~9;由60000个训练样本和10000个测试样本组成,每个样本都是一张28*28像素的手写灰度数字图片。
原始的MNIST数据库包含下面4个文件:

在python,可以通过如下方式调用该数据集
def load_data_fashion_mnist(batch_size, resize=None): #@save
"""下载Fashion-MNIST数据集,然后将其加载到内存中。"""
trans = [transforms.ToTensor()]
if resize:
trans.insert(0, transforms.Resize(resize))
trans = transforms.Compose(trans)
mnist_train = torchvision.datasets.FashionMNIST(
root="../data", train=True, transform=trans, download=True)
mnist_test = torchvision.datasets.FashionMNIST(
root="../data", train=False, transform=trans, download=True)
return (data.DataLoader(mnist_train, batch_size, shuffle=True,
num_workers=get_dataloader_workers()),
data.DataLoader(mnist_test, batch_size, shuffle=False,
num_workers=get_dataloader_workers()))
1.2 Fashion-MNIST数据集
Fashion-MNIST数据集是一个替代 MNIST 手写数字集的图像数据集。 它是由 Zalando旗下的研究部门提供,涵盖了来自 10 种类别的共7万个不同商品的正面图片;FashionMNIST 的大小、格式和训练集/测试集划分与原始的 MNIST 完全一致,仍为60000/10000 的训练测试数据划分,28x28 的灰度图片。下图是数据集中的类,以及每个类的十个随机图像:

1.3 CIFAR 10数据集
CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每 个类有6000个图像。有50000个训练图像和10000个测试图像,数据集分为五个训练批次和一个测试批次,每个批次有10000 个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。以下是数据集中的类,以及来自每个类的10个随机图像:

1.4 PASCAL VOC数据集
PASCAL VOC数据集是目标分类(识别)、检测、分割最常用的数据集之一。该数据集包含了20个不同的类别,包括人、动物、车辆、家具等。每个图像都标注了对象的边界框和类别标签。该数据集通常用于训练和评估目标检测和图像分割模型。
1.5 MS COCO数据集
PASCAL的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集;数据集以scene understanding为目标,主要从复杂的日常场景中截取; 包含目标分类(识别)、检测、分割、语义标注等数据集;ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆;官网:http://cocodataset.org
该数据集提供的标注类别有80 类,有超过33 万张图片,其中20 万张有标注,整个数据集中个体的数目超过150 万个。该数据集实例如下:

1.6 ImageNet数据集与ILSVRC
ImageNet数据集始于2009年,李飞飞与Google的合作: “ImageNet: A Large-Scale Hierarchical Image Database”,其中总图像数据:14197122;总类别数:21841;带有标记框的图像数:1034908。

ISLVRC 2012子数据集的训练集:1281167张图片+标签;类别数:1000;验证集:50000张图片+标签;测试集:100000张图片。

2. 深度学习视觉应用
2.1 算法评估
2.1.1 算法评估相关概念
TP:被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数;
FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。
P(精确率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑃),标识“挑剔”的程度
R(召回率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑁)。召回率越高,准确度越低 标识“通过”的程度
精度(Accuracy): (𝑇𝑃 + 𝑇𝑁)/(𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁)
P-R的关系曲线图,表示了召回率和准确率之间的关系,精度(准确率)越高,召回率越低。

可以通过改变阈值,来选择让系统识别能出多少个图片,当然阈值的变化会导致Precision与 Recall值发生变化。
2.1.2 AP计算
mAP:均值平均准确率

其中𝑁代表测试集中所有图片的个数,𝑃(𝑘)表示在能识别出𝑘个图片的时候 Precision的值,而 Δ𝑟(𝑘)则表示识别图片个数从𝑘 − 1变化到𝑘时(通过调整阈 值)Recall值的变化情况。
AP计算的基本步骤如下:
对于每个可能的类别或标签,计算精确率-召回率曲线(Precision-Recall Curve)。这通常涉及到对模型的预测结果进行排序,并计算在不同召回率水平下的精确率;
对于每个类别,计算该曲线下的面积(Area Under Curve, AUC),即AP值。这可以通过对精确率-召回率曲线进行积分来实现;
如果有多个类别,通常还会计算所有类别的平均AP值(mAP,mean Average Precision),以便对整个模型的性能进行总体评估。
2.2 目标检测与YOLO
2.2.1 目标检测
目标检测是在给定的图片中精确找到物体所在位置,并标注出物体的类别。 物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图 片的任何地方,并且物体还可以是多个类别。
目标检测的基本思路:滑动窗口,两步法:可以确定那些更有可能出现目标的位置,再有针对性的用CNN进 行检测。但是仍存在费时的问题,进一步减少出现目标的位置,而且将目标分类检测和定位问题合在一个网络里——一步法(YOLO)
2.2.2 YOLO
一种实时目标检测算法,由Joseph Redmon等人在2015年提出。YOLO的核心思想是将目标检测任务看作一个回归问题,从而实现了端到端的目标检测,极大地提高了检测速度。

网络结构包含24个卷积层和2个全连接层;其中前20个卷积层用来做预训练,后面4个是随机初始化的卷积层,和2个全连接层。
YOLO v1在PASCAL VOC数据集上进行的训练,因此输入图片为 448 × 448 × 3。实际中如为其它尺寸,需要resize或切割成 要求尺寸。输出结果为 个7 × 7 × 30的张量,对应 7 × 7个cell。每个cell对应2个包围框(bounding box, bb),预测不同大小和宽高比, 对应检测不同目标。每个bb有5个分量, 分别是物体的中心位置(𝑥, 𝑦)和它的高 (ℎ) 和宽 (𝑤) ,以及这次预测的置信度。

更多推荐





所有评论(0)