创建日期: 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. Java中hashCode、equals、==的区别

    ref:http://www.cnblogs.com/skywang12345/p/3324958.html 1.==作用: java中的==用来判断两个对象的地址是否相等:当对象是基本数据类型时,可 ...

  2. ConcurrentHashMap 的并发度是什么 ?

    ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16,这意味着最多同时可以有 16 条线程操作 ConcurrentHashMap,这也是ConcurrentHash ...

  3. SQLAlchemy 使用教程

    前戏: ​ 不用怀疑,你肯定用过Django中的orm,这个orm框架是django框架中自己封装的,在Django中配置和使用较为简单,但是并不适用于其他web框架,而今天说的sqlalchemy是 ...

  4. 学习Python(一)

    一.Python的基础 1.Python是怎样的语言? 2.Python的安装 Linux安装(python3) yum install -y make zlib zlib-devel gcc-c++ ...

  5. CommonCollection1反序列化学系

    CommonsCollection1 1.前置知识 1.1.反射基础知识 1.1.1. 对象与类的基础知识 类(class),对象(object) 对象是类的实例化,中华田园犬(object)是狗(c ...

  6. (stm32f103学习总结)—待机唤醒实验

    一.STM32待机模式介绍 1.1 STM32低功耗模式介绍 很多单片机具有低功耗模式,比如MSP430.STM8L等,我们的STM32 也不例外.默认情况下,系统复位或上电复位后,微控制器进入运行模 ...

  7. 视觉SLAM十四讲:从理论到实践 两版 PDF和源码

    视觉SLAM十四讲:从理论到实践 第一版电子版PDF 链接:https://pan.baidu.com/s/1SuuSpavo_fj7xqTYtgHBfw提取码:lr4t 源码github链接:htt ...

  8. 顺利通过EMC实验(10)

  9. 纯CSS实现扁平化风格开关按钮

    开关样式预览图 前言 最近在基于bootstrap框架开发一个网站,在填写表单一项需要用户填写是否选择某一选项,本来想引用bootstrap框架自带的一个按钮插件,结果在引用js的时候总是出错,就找了 ...

  10. ES6实战:新数字方法

    本文翻译自:https://www.sitepoint.com/es6... 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 本文介绍了ES6中全新的数字方 ...