总结3-常见深度学习网络入门:pytorch实例

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个主要内容:

  1. Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
  2. Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals。
  3. Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
  4. 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)

猜你喜欢

转载自blog.csdn.net/qimo601/article/details/126705387