经典卷积架构:NiN
...
经典卷积架构:VGG系列
VGGVGG的提出者所在实验室名字为Visual Geometry Group ,因此就地取名,VGG诞生了。 VGG通过堆叠大量的VGG块,实现了更深的网络结构。 这里的VGG块,包含了多个卷积层一个池化层: 卷积层的卷积核尺寸为3*3,stride为1,padding为1;这种结构保证了输入图片(或特征图)经过卷积后得到的特征图的尺寸与输入尺寸是一样的。也就是或,卷积仅仅改变通道数,而不改变图像(特征图)的尺寸。 池化层的池化窗口尺寸和stride都是2,从而使得特征图的尺寸减半。 在堆叠的多个VGG块之后,是一些全连接层,负责最后的分类结果输出。 根据网络层数的不同,VGG有多个版本,如下图: 可以看出,不同版本之间的差异体现在卷积层(VGG...
经典卷积架构:AlexNet
AlexNet在2012年的Imagenet竞赛中,AlexNet以低于第二名10.8个百分点的top-5错误率赢得了冠军,自此以后,基于CNN的图像分类算法开始流行起来,深度学习时代到来了。 AlexNet的网络结构如上图所示。相比于之前的LeNet-5,AlexNet堆叠了更多的卷积块,从而网络更深。同时,它还引入了Dropout的技巧,以及ReLU激活函数等。 在AlexNet刚被提出时,受限于当时的算力,作者采用了多个GPU进行训练。而随着技术的发展,现在的算力已经可以在单卡上训练AlexNet了,且显存绰绰有余。 更多细节,将在代码实现中体现。 PyTorch...
经典卷积架构:LeNet-5
LeNet-5LeNet-5作为CNN的开山之作,在如今看来并不复杂,但在当时可以称得上是开创性的成就,并且其之后出现的许多卷积架构基本遵循LeNet-5的思想。LeNet-5的网络结构如上图所示,它最开始被用于解决手写数字识别问题。 对于一张32*32单通道手写数字图片,首先经过卷积(kernel_size: 5)得到6张28*28的特征图,然后做下采样(池化,kernel_size=2,stride=2)将特征图尺寸减半;接着经过一顿卷,得到120张1*1的特征图;将其展平,得到120维的向量,经过两个全连接层,输出10维的向量,代表该图片中的数字取值的概率(取值集合为0到9)。 当然,卷积与池化操作之间做了激活操作,在当时用的Simoid和Tanh。在稍后的代码实现中,我们会改成现在更常用的ReLU。更多细节,将在代码实现中体现。 PyTorch 实现LeNet-5123456789101112131415161718192021222324252627282930import torchimport torch.nn as nnclass...
图像数据的标准化
...
目标检测中的非极大抑制+PyTorch实现
什么是非极大抑制?在目标检测中,为了提升召回率,通常的检测结果中会出现一个目标对应多个框的结果。 每个框对应的数字代表置信度,通俗来说,就是代表有多大把握确定框内有目标,取值越大,说明越有把握。 但是,对于我们来说,每个目标只需要一个对应框就足够了,因此需要从这么多框中选出最好的,非极大抑制(NMS)就是用来解决这个问题的。 对于只含有一类目标的图片来说,非极大抑制的步骤如下: (0)设定一个置信度阈值thres和一个IoU阈值iou_thres,删除置信度小于thres的框; (1)按照置信度对这些框从大到小排序; (2)取出置信度最大的框放在一边,并将此框与其余的框求IoU,对于其余的框,只保留IoU小于IoU_thres的框; (3)...
目标检测中的IoU理论讲解+代码实现
IoU 理论讲解在计算机中,图像的坐标系是以左上角为原点,原点向右(x轴)和向下(y轴)分别作为两个坐标轴构成的,分别代表图像的宽度(width)和高度(height)。 下面的图片中,红色框是标注好的框(Ground...
手把手教你打造一个汽车检测器!
本文将带你打造一个汽车检测器,使用的算法是PyTorch版本的YOLOV3。本文不会讲解该算法的细节,而是专注于如何去实现自己的汽车检测器,主要包括数据下载,数据清洗,数据集制作以及训练和检测(图片检测,视频检测)等过程。即使你不知道YOLOV3是什么也没关系,这对于阅读本文几乎毫无影响。 数据集下载为了检测汽车,首先需要获取含有汽车的标注好的数据集,这里我选择了KITTI。由于官网下载太慢,推荐使用下面的百度云链接进行下载。 下载KITTI数据集:https://pan.baidu.com/s/1t3TXXkqVR4NGqZwQiGEIzg提取码:cw35...
魔改交叉熵
...














