1、PyTorch实例入门(1):图像分类
1)利用Pytorch,搭建最基本网络Lenet,实现图像分类。该例子麻雀虽小,五脏俱全,入门非常合适。Lenet 是由 Yann LeCun 等人在 1990 年《Handwritten Digit Recognition with a Back-Propagation Network》中提出,是卷积神经网络的 HelloWorld。
2)讲解,参考文章《PyTorch实例入门(1):图像分类》,可运行代码参考《完整代码链接》。
3)我们使用CIFAR-10作为数据集,包含了10个类别60000张图片,每张图片的大小为32x32,其中训练图片50000张,测试图片10000张。下图是一些示例:
2、pytorch动手实践:pytorch车型细分类网络
1)讲解,代码,主要参考知乎文章《pytorch车型细分类网络》,代码规范,容易读懂,但是原文代码跑不通。我调试修改了一下可以跑通了,小白可参考这篇《车型细分类的源码》。
2)本项目是关于车型分类,resnet50网络,可供基础学习使用。
3)下载数据:下载链接《10类汽车类型识别数据集》,汽车公共数据集,训练模型,用于车辆识别,车型分类。,使用提供的2000张,标注了10类汽车的车辆场景分类的高分辨率图片。标签信息: bus,taxi,truck,family sedan,minibus,jeep,SUV,heavy truck,racing car,fire engine.
3、常见卷积神经网络
1)[Lenet](卷积神经网络之Lenet - 知乎 (zhihu.com))
2)[Alexnet](卷积神经网络之Alexnet - 知乎 (zhihu.com))
3)[VGG](卷积神经网络之VGG - 知乎 (zhihu.com))
4、目标检测
1)、《一文读懂Faster RCNN》
经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster RCNN已经将特征抽取(feature extraction),proposal提取,bounding box regression(rect refine),classification都整合在了一个网络中,使得综合性能有较大提高,在检测速度方面尤为明显。
图1 Faster RCNN基本结构(来自原论文)
依作者看来,如图1,Faster RCNN其实可以分为4个主要内容:
- Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
- Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals。
- Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
- Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。
图2展示了python版本中的VGG16模型中的faster_rcnn_test.pt的网络结构,可以清晰的看到该网络对于一副任意大小PxQ的图像:
- 首先缩放至固定大小MxN,然后将MxN图像送入网络;
- 而Conv layers中包含了13个conv层+13个relu层+4个pooling层;
- RPN网络首先经过3x3卷积,再分别生成positive anchors和对应bounding box regression偏移量,然后计算出proposals;
- 而Roi Pooling层则利用proposals从feature maps中提取proposal feature送入后续全连接和softmax网络作classification(即分类proposal到底是什么object)。
图2 faster_rcnn_test.pt网络结构 (pascal_voc/VGG16/faster_rcnn_alt_opt/faster_rcnn_test.pt)
2)、《捋一捋pytorch官方FasterRCNN代码》
3)、非极大值抑制(Non-Maximum Suppression,NMS):
NMS算法是目标检测中取出冗余检测框的常用算法,简单来讲,就是某一个区域内只保留某个类最好的那个结果,其余结果抑制掉(屏蔽掉)。同一个类别中,以置信度为首选,置信度高的,抑制(删除)周围交集大的置信度低的框。参考文章:《深度学习基础(二)---NMS》、《NMS算法实现》《NMS总结理论推导》
4)、《目标检测任务、多分类任务的评价指标》
另外,很有用的参考文章《目标检测mAP、ROC指标计算方式》。
5)、【目标检测(Faster RCNN)】原理 | Pytorch官方源码解释| VGG | ResNet | ResNet50 FPN | ReXNets
6)、陈云的《从编程实现角度学习Faster R-CNN(附极简实现》
7)、一篇英文的原理解释,也很不错。
《Faster R-CNN: Down the rabbit hole of modern object detection》
8)霹雳吧啦Wz的bilibili,合集和视频列表:《深度学习-目标检测篇》
9)bilibili视频讲解:《1.1Faster RCNN理论合集》
10)bilibili视频讲解:《1.2Faster RCNN源码解析(pytorch)》
博主说的安装环境,无法安装pycocotools成功:
pycocotools(Linux:pip install pycocotools
; Windows:pip install pycocotools-windows
(不需要额外安装vs))
最后采用anoconda的环境成功安装:conda install pycocotools
对应的github源码,《faster_rcnn的github源码和讲解》
11)