创建日期: 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. Hadoop的安装配置(一)

    一.Hadoop的安装①Hadoop运行的前提是本机已经安装了JDK,配置JAVA_HOME变量②在Hadoop中启动多种不同类型的进程        例如NN,DN,RM,NM,这些进程需要进行通信 ...

  2. Switch语句的条件只能接受什么类型的值

    switch语句只能针对基本数据类型使用,这些类型包括int.char.枚举.bool等.对于其他类型,则必须使用if语句. 在一个 switch 中可以有任意数量的 case 语句.每个 case ...

  3. request表示HttpServletRequest对象?

    request表示HttpServletRequest对象.它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法. response表示 ...

  4. su 和 sudo的区别

    su是一个命令,可切换其他用户进行操作:而 '-' 号则是代表是否完全切换指定的用户环境信息 sudo是一个服务,可通过/etc/sudoers进行配置文件,让被限制的用户只能执行被授予的命令操作.

  5. springboot使用自定义注解和反射实现一个简单的支付

    优点: 未使用if else,就算以后增加支付类型,也不用改动之前代码 只需要新写一个支付类,给添加自定义注解@Pay 首先: 定义自定义注解 Pay 定义 CMBPay ICBCPay 两种支付 根 ...

  6. springboot+shiro 01 - 实现权限控制

    sb_shiro_session <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  7. 单总线协议DS1820

    一. DS18B20简介 DS18B20数字温度传感器接线方便,封装后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式.主要根据应用场合的不同而改变其外观.封装后的DS18B20可用于电缆 ...

  8. Pandas查询数据的几种方法

    Pandas查询数据 Pandas查询数据的几种方法 df.loc方法,根据行.列的标签值查询 df.iloc方法,根据行.列的数字位置查询 df.where方法 df.query方法 .loc既能查 ...

  9. Vue-router实现单页面应用在没有登录情况下,自动跳转到登录页面

    这是我做前端一来的第一篇文章,都不知道该怎么开始了.那就直接奔主题吧.先讲讲这个功能的实现场景吧,我们小组使用vue全家桶实现了一个单页面应用,最初就考虑对登录状态做限制.比如登录后不能后退到登录页面 ...

  10. IO流入门

    @ 目录 总结内容 1. IO流是什么 2. 字符流和字节流 3. File常用API(前面类型为返回类型) 4. 编码转换 5. IO流实现流程 6. 输入输出流简单实现 7. 输入输出流简单实现 ...