创建日期: 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. NULL 是什么意思 ?

    NULL 这个值表示 UNKNOWN(未知):它不表示""(空字符串).对 NULL 这 个值的任何比较都会生产一个 NULL 值.您不能把任何值与一个 NULL 值进行比 较,并 ...

  2. 学习Kvm(三)

    虚拟化(将一个物理硬件平台虚拟成多个) vmware(模拟出一堆硬件设备,每一个硬件设备都是独立平台) 虚拟化要解决的问题(硬件之上的OS,有用户空间.内核空间:vmware虚拟机所模拟出的多个硬件平 ...

  3. 单片机ram和rom的区别

    单片机运行时需要调用某个程序/函数/固定数据时就需要读取ROM,然后在RAM中执行这些程序/函数的功能,所产生的临时数据也都存在RAM内,断电后这些临时数据就丢失了.ROM:(Read Only Me ...

  4. 制作任意波形发生器MAX038

  5. mpvue打包没有app.json等配置文件的解决方法

    问题 一早上折腾了1个小时,小程序始终提示查找不到'app.json'文件.mpvue重新打包,光生成内容文件无配置文件. 解决办法 出错原因:版本问题 只需要把packpage.json里的mpvu ...

  6. 利用angular4和nodejs-express构建一个简单的网站(七)—用户注册之ReactiveForm

    这一节对用户注册组件进行分析.用户注册组件主要涉及angular4表单的操作.Angular提供了两种构建表单的技术:响应式表单和模板驱动表单. 这两项技术都属于@angular/forms库,并且共 ...

  7. Idea运行时Scala报错Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

    一.情况描述 使用idea +scala+spark,运行程序代码如下: package cn.idcast.hello import org.apache.spark.rdd.RDD import ...

  8. tomcat 安装配置及问题解决

    最近没写程序 刚想运行一个jsp程序发现tomcat出现一些问题,然后就重新装了程序,重新配置 总结经验就是不要怕报错,把错误复制下来,百度里面都有解决办法 要安装与自己jdk版本相匹配的tomcat ...

  9. PyQt5 基本语法(五)

    目录 2. 输入控件(二) 2.2 步长调节 2.2.1 QAbstractSpinBox 2.2.1.1 描述 2.2.1.2 功能作用 2.2.1.2.1 使用 2.2.1.2.2 主要功能 2. ...

  10. Python入门-pip模块管理工具

    安装 # 在线安装 pip install <包名> 安装后,该模块文件会在安装python环境目录:lib/packages目录下 # 安装本地安装包 pip install <目 ...