Pytorch实现DenseNet

本文主要将Pytorch实现的DenseNet用于自己制作的数据集进行图像分类,如果要复现DenseNet在经典数据集如Cifar10上的性能请移步github,另外本文不会涉及详细的论文解读。

本文主要讲解如何利用Pytorch实现DenseNet,并且将Pytorch实现的DenseNet用于自己制作的数据集进行图像分类,以并以17 Flowers(17 Category Flower Dataset)为案例进行实战。
本案例主要取 Daffodil、LilyValley、Snowdrop三个类别进行分类,每个类别前10张图片作为验证集,后70张图片作为训练集。(这一篇博客讲解了如何组织数据集)
在这里插入图片描述

0. 理论回顾

  1. 什么是Bottleneck(DenseNet-B)? It has been noted in [37, 11] that a 1×1 convolution can be introduced as bottleneck layer before each 3×3 convolution to reduce the number of input feature-maps. 所以Bottleneck只是3×3卷积层前面用于降低维度的1×1卷积层,但这个代码中将两个卷积合并放在Bottleneck类中了。
  2. 什么是Compress(DenseNet-C)? If a dense block contains m feature-maps, we let the following transition layer generate θ*m output feature-maps, where 0 <θ ≤1 is referred to as the compression factor. 所以Compress只是为了在Transition层减少channels数量。
  3. 如何计算DenseNet网络结构中的层?每个Bottleneck包含了两个卷积层,每个Transition包含一个卷积层,总共有4+4+4+4=16个Bottleneck和3个transition,也就是35个卷积层,再加上最前面的卷积层和最后的全连接层,最后总共有37层。(那么自定义层数改动 nblocks 参数就可以了)

1. 项目架构

先看项目架构:
在这里插入图片描述

2. 文件说明

文件功能
data /train存放训练集图片(70)
data / test存放验证集图片(10)
model.py定义了 DenseNet 的网络结构
main.py项目的主程序,包含训练与评估过程

3. 训练过程

直接运行 main.py 文件即可
在这里插入图片描述
在这里插入图片描述

注:本文只对数据集进行了粗糙的处理(裁剪成3 * 32 * 32),如果想进一步提高分类性能,需要读者自行对数据集进行一些优化的预处理操作。

4. 项目源码

https://github.com/dhuQChen/DenseNet

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值