前言

 ResNet是一个比较成熟的深度学习分类模型,目前有ResNet-18、ResNet-34、ResNet-50、ResNet-101、ResNet-152,同时,该分类模型常用于RGB(三通道)彩色图像的分类任务,如在ImageNet的训练;而在单通道图像(灰度图像)的训练和测试较少。如何使ResNet在单通道图像上训练,如何修改网络模型参数和读取图像,本文将一一进行讲解。

步骤

第一步:构建数据集

  • 数据集的结构应该是这样的
  • 图像的格式:8bit,jpg格式

第二步:修改网络模型

  • 法1:直接修改定义的ResNet网络模型
     在model.py中,修改ResNet的第一层卷积层输入通道为1(彩色为3)
self.conv1 = nn.Conv2d(1, self.in_channel, kernel_size=7, stride=2,padding=3, bias=False)
  • 法2:在train.py文件中,进行如下修改,也可以达到法1的效果
model = resnet18(num_classes=3)
model.conv1 = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
model = model.to(device)

第三步:修改读取数据方式

  • 一般我们用torchvision.datasets.ImageFolder()读取数据,但在读取单通道数据时,此函数会自动将单通道图像转换为三通道图像(r=g=b),此时如果不进行其他操作,就会报错

  • 这是ImageFolder()函数的定义:留意读取的图像为PIL图像,且会转换为RGB格式

  • 修改方法:
     修改transform(图像预处理操作)
      添加transforms.Grayscale(1),将图像转换为单通道图像(经实验,图像矩阵的数据并不会发生变化)
      transforms.Normalize修改如下,第一个参数为mean,第二个参数为std,因为是单通道,所以进行Z-Score时仅需要对一个通道进行操作

data_transforms = {'train': transforms.Compose([transforms.Grayscale(1),transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.485, ], [0.229, ])]),'val': transforms.Compose([transforms.Grayscale(1),transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize([0.485, ], [0.229, ])])
}

第四步:训练分类网络并测试(注意测试时transform与‘val’方式一样)

总结

 ResNet训练单通道主要修改两个部分,一个是ResNet模型第一层卷积层的in_channels=1,另一个是transform中添加Grayscale(1)以及修改Normalize。其实很简单,只是有时忽略了ImageFolder会自动将灰度图转换为RGB图,导致出错,希望本文能帮助您!

参考资料:

可以参考这位up主github里面的Test5_resnet,并在此基础上进行上述修改,训练自己的灰度图像!
https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_learning

ResNet训练单通道图像分类网络(Pytorch)相关推荐

  1. ResNet网络结构详解,网络搭建,迁移学习

    前言: 参考内容来自up:6.1 ResNet网络结构,BN以及迁移学习详解_哔哩哔哩_bilibili up的代码和ppt:https://github.com/WZMIAOMIAO/deep-le ...

  2. 通过深度残差网络ResNet进行图像分类(pytorch网络多网络集成配置)

    通过深度残差网络进行图像分类(pytorch网络多网络集成配置) 简介 本项目通过配置文件修改,实现pytorch的ResNet18, ResNet34, ResNet50, ResNet101, R ...

  3. ResNet残差网络Pytorch实现——对花的种类进行训练

    ResNet残差网络Pytorch实现--对花的种类进行训练 上一篇:[结合各个残差块] ✌✌✌✌ [目录] ✌✌✌✌ 下一篇:[对花的种类进行单数据预测] 大学生一枚,最近在学习神经网络,写这篇文章 ...

  4. 单通道灰度图片fine-tune训练网络与caffe批量分类测试

    1. 转imdb灰度图数据 一定要加上--gray,否则训练时报如下错误: GLOG_logtostderr=1 $TOOLS/convert_imageset \--resize_height=$R ...

  5. python制作图片数据集_Pytorch自己加载单通道图片用作数据集训练的实例

    pytorch 在torchvision包里面有很多的的打包好的数据集,例如minist,Imagenet-12,CIFAR10 和CIFAR100.在torchvision的dataset包里面,用 ...

  6. LeNet图像分类网络一(Pytorch)

    原文档地址:https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#neural-networks 从官方 ...

  7. 【Pytorch分布式训练】在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练

    文章目录 普通单卡训练-GPU 普通单卡训练-CPU 分布式训练-GPU 分布式训练-CPU 租GPU服务器相关 以下代码示例基于:在MNIST数据集上训练一个简单CNN网络,将其改成分布式训练. 普 ...

  8. SwinUnet官方代码训练自己数据集(单通道灰度图像的分割)

    *************************************************** 码字不易,收藏之余,别忘了给我点个赞吧! *************************** ...

  9. 计算机视觉算法——图像分类网络总结

    计算机视觉算法--图像分类网络总结 计算机视觉算法--图像分类网络总结 1. AlexNet 1.1 网络结构 1.2 关键知识点 1.2.1 卷积和池化特征尺寸计算公式 1.2.2 ReLU非线性激 ...

  10. 使用PaddleFluid和TensorFlow实现图像分类网络SE_ResNeXt | 文末超大福利

    专栏介绍:Paddle Fluid 是用来让用户像 PyTorch 和 Tensorflow Eager Execution 一样执行程序.在这些系统中,不再有模型这个概念,应用也不再包含一个用于描述 ...

最新文章

  1. 一维码Code 93简介及其解码实现(zxing-cpp)
  2. python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料
  3. 【翻译】Programming Ruby——数组,哈希表和控制结构
  4. BlueStore——先进的用户态文件系统《一》
  5. hdu 3308 LCIS 线段树 + 区间合并
  6. CF838C-Future Failure【dp,子集卷积】
  7. java多线程调用nsq消费_spark-streaming连接消费nsq
  8. java使窗体最大化_[转]java窗体运行时最大化及关闭方法示例
  9. 服务器开机忘记密码怎么修改,服务器忘记mysql密码怎么修改?
  10. docker RUN、CMD 和 ENTRYPOINT
  11. BBS(仿博客园系统)项目01(项目分析、表结构设计、注册功能实现)
  12. 佳能打印机 Cannon G2810 维护修复方法
  13. VBB 3.8.4 XSS
  14. Arduino与Proteus仿真实例-74LS138译码器驱动仿真
  15. qq飞车手游服务器维护中,QQ飞车手游3月28日停机维护到几点_QQ飞车手游3.28停机维护时间_玩游戏网...
  16. C++中的函数原型和函数定义
  17. System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.Authe
  18. 如何用纯 CSS 实现优惠券效果
  19. cisco单交换机实现基于端口的VLAN设计----计算机网络课设(含.pkt文件)
  20. OSI 七层模型详解

热门文章

  1. war包的解压与打包
  2. HTML静态网页作业-网上花店4个页面(HTML+CSS+JS)
  3. 用python实现千图成像工具,快给你的男/女神做一个吧~
  4. 吞了1000瓶老干妈的南山头铁鹅,Python制作千图成像(附上源代码和应用程序)...
  5. win10安装steam有损计算机,Win10安装steam平台提示“steam fatal error”报错的解决方法...
  6. Bus Hound 的使用方法
  7. HDFS之存储优化纠删码原理、纠删码案例实操 、异构存储(冷热数据分离)
  8. 2020年深圳杯数学建模竞赛A题
  9. 车牌限行——条件分歧
  10. 博客程序PHP,10个开源的PHP blog 博客程序推荐