基于Pytorch肺部感染识别案例(采用ResNet网络结构)

2023-11-23 08:30

本文主要是介绍基于Pytorch肺部感染识别案例(采用ResNet网络结构),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、整体流程

1. 数据集下载地址:https://www.kaggle.com/paultimothymooney/chest-xray-pneumonia/download

2. 数据集展示

案例主要流程:

第一步:加载预训练模型ResNet,该模型已在ImageNet上训练过。

第二步:冻结预训练模型中低层卷积层的参数(权重)。

第三步:用可训练参数的多层替换分类层。

第四步:在训练集上训练分类层。

第五步:微调超参数,根据需要解冻更多层。

ResNet 网络结构图

二、显示图片功能

#1加载库
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
from torchvision import datasets, transforms
import os
from torchvision.utils import make_gridfrom torch.utils.data import DataLoader
#2、定义一个方法:显示图片
def img_show(inp, title=None):plt.figure(figsize=(14,3))inp = inp.numpy().transpose((1,2,0)) #转成numpy,然后转置mean = np.array([0.485, 0.456, 0.406])std = np.array([0.229, 0.224,0.225])inp = std * inp + meaninp = np.clip(inp, 0, 1)plt.imshow(inp)if title is not None:plt.title(title)plt.pause(0.001)plt.show()
def main():pass#3、定义超参数BATCH_SIZE = 8DEVICE = torch.device("gpu" if torch.cuda.is_available() else "cpu")#4、图片转换    使用字典进行转换data_transforms = {'train': transforms.Compose([transforms.Resize(300),transforms.RandomResizedCrop(300) ,#随机裁剪transforms.RandomHorizontalFlip(),transforms.CenterCrop(256),transforms.ToTensor(), #转为张量transforms.Normalize([0.485, 0.456, 0.406],[0.229, 0.224, 0.225]) #正则化]),'val': transforms.Compose([transforms.Resize(300),transforms.CenterCrop(256),transforms.ToTensor(), #转为张量transforms.Normalize([0.485, 0.456, 0.406],[0.229, 0.224, 0.225]) #正则化])}#5、操作数据集# 5.1、数据集路径data_path = "D:/chest_xray/"#5.2、加载数据集的train valimg_datasets = { x : datasets.ImageFolder(os.path.join(data_path,x),data_transforms[x]) for x in ["train","val"]}#5.3、为数据集创建一个迭代器,读取数据dataloaders = {x : DataLoader(img_datasets[x], shuffle=True,batch_size= BATCH_SIZE) for x in ["train","val"]}# 5.4、训练集和验证集的大小(图片的数量)data_sizes = {x : len(img_datasets[x]) for x in ["train","val"]}# 5.5、获取标签类别名称 NORMAL 正常 -- PNEUMONIA 感染target_names = img_datasets['train'].classes#6 显示一个batch_size 的图片(8张图片)#6.1 读取8张图片datas ,targets = next(iter(dataloaders['train'])) #iter把对象变为可迭代对象,next去迭代#6.2、将若干正图片平成一副图像out = make_grid(datas, norm = 4, padding = 10)

这篇关于基于Pytorch肺部感染识别案例(采用ResNet网络结构)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/416654

相关文章

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不