创建日期: 2020-07-04 17:19:39

简介:卷积神经网络非常适合处理图像相关任务,其优势一是权值共享策略,降低了模型复杂度和参数量,本质上也对应着生物视觉神经的感受野。二是其强大的特征提取能力,这也是目前视觉感知任务(分类检测分割等)性能提升的关键。而CNN模型的Bacebone(主干网络)主要负责的就是特征提取。特征提取能力的强弱直接决定了后面head的性能(head模块在的不同的任务下是不同的,简单的分类任务的head是最后接到全连接层上的,而分割任务的head是输出一组feature map,另外的检测任务则是输出bbox坐标)。本文主要工作是:测试不同Backbone在Cifar10数据集上的分类能力。用以初步判定不同Backbone的特征提取能力。github链接:https://github.com/lee-zq/CNN-Backbone

1. 项目介绍

cv任务种类繁多,但特征提取网络目前基本都是基于CNN来做。从最初的98年LeNet提出至今,网络特征提取能力越来越强,如ResNet,denseNet,mobileNet,efficientNet等等,相比于之前的AlexNet、VGGNet都要优秀很多。之前在一篇文章中提到过,一般论文里面提出的模型结构创新,较为低级的是用已有模块搭积木,而较为高级的,就是提出新的Backbone,再高级的那就是各大实验室的大佬们来做的工作了,如胶囊网络、图神经网络、动态卷积这些,直接从底层上改进卷积。言归正传,我做的这个项目是属于最低级的[23333],就是把别人的backbone拿过来做分类。我的出发点是对比目前提出的经典网络在Cifar10上的分类性能,用以鉴别网络的特征提取能力。建立对不同Backbone的理解,以及用pytorch实现的方法,从而在我自己的任务中能够灵活运用。

2. pytorch实现

Github链接:https://github.com/lee-zq/CNN-Backbone

这部分你可以直接参看项目的README,我在这里不再重复。主要就是下载Cifar10数据集和训练模型两部分。(模型我都定义在models文件夹下,在选择模型的时候,你只需要在train.py里面修改模型定义,并在命令行参数解析器里面修改保存路径即可)

目前已加入的模型有LeNet,DensenNet, ResNet, GhostNet。还有一些我基于一些新模块写的模型,有可变形卷积实现的DeformLeNet,有基于八度卷积(Octconv)实现的OctNet和OctResNet。

Tips:

  1. 测试代码未实现,我都是直接对比验证Accuracy的。(因为我直接用的cifar10的testset做的验证)

  2. 代码写的很naive,因为这是我从刚开始入门cv的时候就陆续写起来的,并没有设置很多接口,也写了很多注释,所以也很适合入门。

3. 更新记录

(这里记录一些我新加入的Backbone)

2020.07.04更新: 发现一样的工作有位大佬在两年前就开始做了,而且做的很详细(https://github.com/kuangliu/pytorch-cifar),参考了其中的transforms更新了我的代码。后续在此基础上加新模型。

4. To Do

(后续计划要加入的Backbone)

  1. HRNet
  2. ACNet
  3. ShuffleNet系列
  4. MobileNet系列

CNN-Backbone的Pytorch实现的更多相关文章

  1. Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维

    引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从 ...

  2. 从卷积拆分和分组的角度看CNN模型的演化

    博客:博客园 | CSDN | blog 写在前面 如题,这篇文章将尝试从卷积拆分的角度看一看各种经典CNN backbone网络module是如何演进的,为了视角的统一,仅分析单条路径上的卷积形式. ...

  3. ICCV2021 | 用于视觉跟踪的学习时空型transformer

    ​  前言  本文介绍了一个端到端的用于视觉跟踪的transformer模型,它能够捕获视频序列中空间和时间信息的全局特征依赖关系.在五个具有挑战性的短期和长期基准上实现了SOTA性能,具有实时性,比 ...

  4. ONNXRuntime学习笔记(三)

    接上一篇完成的pytorch模型训练结果,模型结构为ResNet18+fc,参数量约为11M,最终测试集Acc达到94.83%.接下来有分两个部分:导出onnx和使用onnxruntime推理. 一. ...

  5. recurrent model for visual attention

    paper url: https://papers.nips.cc/paper/5542-recurrent-models-of-visual-attention.pdf year: 2014 abs ...

  6. 论文笔记:Auto-ReID: Searching for a Part-aware ConvNet for Person Re-Identification

    Auto-ReID: Searching for a Part-aware ConvNet for Person Re-Identification 2019-03-26 15:27:10 Paper ...

  7. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

  8. 基于pytorch的CNN、LSTM神经网络模型调参小结

    (Demo) 这是最近两个月来的一个小总结,实现的demo已经上传github,里面包含了CNN.LSTM.BiLSTM.GRU以及CNN与LSTM.BiLSTM的结合还有多层多通道CNN.LSTM. ...

  9. MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前两篇文章MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网 ...

  10. (原)CNN中的卷积、1x1卷积及在pytorch中的验证

    转载请注明处处: http://www.cnblogs.com/darkknightzh/p/9017854.html 参考网址: https://pytorch.org/docs/stable/nn ...

随机推荐

  1. Spring Boot 的配置文件有哪几种格式?它们有什么区别?

    .properties 和 .yml,它们的区别主要是书写格式不同.    1).properties    app.user.name = javastack    2).yml    app:   ...

  2. springboot user guide hand book

    手册: https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/html/getting-started-first-appli ...

  3. Redis 的数据类型?

    Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表), set(集合)及 zsetsorted set:有序集合). 我们实际项目中比较常用的是 string,ha ...

  4. Linux 安装jdk1.8

    Linux安装jdk1.8 总结一句话就是:下载jdk1.8 ==> 解压 ==> 配置环境变量. 一.  jdk的下载,这里有两种方法: 1.去Oracle官网下载. 2.jdk1.8的 ...

  5. (stm32f103学习总结)—GPIO结构

    一.GPIO基本结构 二.GPIO工作模式 输入模式 输入浮空 输入上拉 输入下拉 模拟输入 输出模式 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能 库函数中所对应的代码 1 typedef e ...

  6. canvas —— globalCompositeOperation

    globalCompositeOperation 属性设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上. 源图像 = 您打算放置到画布上的绘图. 目标图像 = 您已经放置在画布上的绘图. ...

  7. 控制器全屏显示.不展示导航栏navigationbar

    有些时候需要 让控制器全屏显示 ,不需要导航栏,或者说是在导航栏底部 基本情况: >控制器全屏 ``` if (@available(iOS 11.0, *)) { self.tableView ...

  8. SLF4J 报错解决:No SLF4J providers were found

    1.解决SLF4J报错 我们在自己的项目中使用了SLF4J,或者引入了某开源项目时,他的项目中用了SLF4J,运行时会报如下的错误: SLF4J: Failed to load class " ...

  9. [转]Fabric2.3中使用test-network搭建测试网络

    这个测试网络一方面可以用来学习Fabric,另一方面也可以让一些更有经验的开发者来测试他们的智能合约和应用,但是不建议用于生产环境,在2.0版本后,这个测试网络也取代了原来的"first-n ...

  10. 【Oracle】EXPDP和IMPDP数据泵进行导出导入的方法

    一.expdp/impdp和exp/imp 客户端工具 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 服务端工具 2.expdp和impdp是服务端的工具程序,他们 ...