痤疮分级实验笔记-ResNet

组织数据集

方式1:根据txt文件分类的数据集组织形式(放弃)

你可以使用Python来读取txt文件中的训练集图片信息,并将这些图片从原始文件夹复制到目标文件夹中。

当程序无法找到标签对应的图片或者目标文件夹中已经存在同名图片时,你可以使用异常处理来跳过这些情况并继续复制粘贴其他满足要求的图片。以下是经过优化的代码示例:

import os
import shutil

# 定义原始文件夹和目标文件夹的路径
original_dir = '原始文件夹路径'
target_dir = '目标文件夹路径'

# 定义包含训练集图片信息的txt文件路径
txt_file = '训练集图片信息的txt文件路径'

# 读取txt文件
with open(txt_file, 'r') as f:
    lines = f.readlines()

# 遍历每一行图片信息
for line in lines:
    # 去除换行符
    line = line.strip()
    # 根据空格分割图片名称和其他文字内容
    image_name, _ = line.split(' ', 1)
    
    # 构建图片的完整路径
    image_path = os.path.join(original_dir, image_name)
    
    # 检查图片是否存在于原始文件夹中
    if not os.path.exists(image_path):
        print(f"图片 {image_name} 不存在于原始文件夹中,跳过该图片")
        continue
    
    # 构建目标文件夹中图片的完整路径
    target_image_path = os.path.join(target_dir, image_name)
    
    # 检查目标文件夹中是否已经存在同名图片
    if os.path.exists(target_image_path):
        print(f"目标文件夹中已存在同名图片 {image_name},跳过该图片")
        continue
    
    # 复制图片到目标文件夹
    shutil.copy(image_path, target_dir)

方式2:文件名作为分类标签(成功)

分类1-8:当前文件夹有一个放有很多图片的文件夹和一个其对应的标签txt文件(txt文件中的每一行是图片文件夹中的文件名+一个空格+该图片对应的类:1到8)。在当前文件夹下建立名为“1”到“8”的八个文件夹。请写一个python文件,在当前文件夹下根据txt文件中的每一行的信息以及将图片文件夹里的图片分类,分别放入新建立的八类文件夹下:

import os
import shutil

# 图片文件夹路径
image_folder = './train_image'

# 标签文件路径
label_file = './train.txt'

# 创建八个类别文件夹
for i in range(1, 9):
    folder_path = str(i)
    os.makedirs(folder_path, exist_ok=True)

# 读取标签文件
with open(label_file, 'r',encoding='utf-8') as file:
    lines = file.readlines()

# 遍历每一行,将图片分类到对应的文件夹
for line in lines:
    line = line.strip()
    filename, label = line.split(' ')
    src_path = os.path.join(image_folder, filename)
    dst_path = os.path.join(label, filename)
    shutil.move(src_path, dst_path)

print('分类完成!')

模型加载与保存(参数)

本次实验保存成功的方式:

加载预训练模型

 net = resnet34()
 # load pretrain weights
 # download url: https://download.pytorch.org/models/resnet34-333f7ec4.pth
 model_weight_path = "./resnet34-pre.pth"
 assert os.path.exists(model_weight_path), "file {} does not exist.".format(model_weight_path)
 net.load_state_dict(torch.load(model_weight_path, map_location='cpu'))

模型保存

训练前:

save_path = './resNet34.pth'

训练时: 

        if val_accurate > best_acc:
            best_acc = val_accurate
            torch.save(net.state_dict(), save_path)

加载训练好的模型

    # create model
    model = resnet34(num_classes=8).to(device)

    # load model weights
    weights_path = "./resNet34.pth"
    assert os.path.exists(weights_path), "file: '{}' dose not exist.".format(weights_path)
    model.load_state_dict(torch.load(weights_path, map_location=device))

模型训练

深度学习模型训练时,model.train()个别模型可调用,是什么意思?

在深度学习模型训练过程中,调用 model.train() 是为了将模型设置为训练模式。这个方法主要用于区分模型在训练和评估(推理)阶段的行为。

当调用 model.train() 时,模型的行为会发生变化,具体包括:

  1. Batch Normalization 和 Dropout 层会处于训练模式:Batch Normalization 层在训练和推理阶段有不同的行为,训练时会计算每个批次的均值和方差,并使用批次统计信息进行标准化。Dropout 层在训练时会随机丢弃一部分神经元,以减少过拟合。

  2. 梯度计算和参数更新:在训练模式下,模型会计算损失函数关于参数的梯度,并使用优化算法(如随机梯度下降)更新模型的参数,以最小化损失函数。

相反,当调用 model.eval() 时,模型会被设置为评估模式。在评估模式下,模型的行为会发生以下变化:

  1. Batch Normalization 和 Dropout 层会处于评估模式:Batch Normalization 层使用保存的移动平均值和方差进行标准化,而不是使用当前批次的统计信息。Dropout 层在评估时不会丢弃神经元,以保留所有的特征。

  2. 梯度计算和参数更新被禁用:在评估模式下,模型不会计算梯度,也不会更新参数。这是因为在评估阶段我们只关心模型的预测结果,而不需要进行反向传播和参数更新。

总结起来,调用 model.train() 将模型设置为训练模式,启用了一些训练特定的行为,如 Batch Normalization 和 Dropout 的训练行为以及参数更新。而调用 model.eval() 将模型设置为评估模式,禁用了一些训练特定的行为,以保证在评估阶段的一致性和稳定性

终端命令

Linux命令

autodl使用的Linux系统

ls

 -l:以列表的方式去显示
 -a:显示隐藏文件
 -h: 显示文件大小的单位
 -al:显示隐藏文件并且以列表方式显示
 -lh:以列表的方式去显示并且显示文件的大小

tree:以目录树方式显示当前文件夹信息

tree /:以目录树方式显示指定路径的文件信息

cd:切换目录

 cd 目录名:切换到指定目录
 cd .:切换到当前目录
 cd …:切换到上一级目录

绝对目录:从根目录算起的路径叫做绝对路径,比如:/home/python
自动补全:两次tab键
pwd:相看目录所在的路径

Window命令

DIR [目录名或文件名]


参数:
/s 查找子目录
/w 只显示文件名
/p 分页
/a 显示隐藏文件

python命令

os.getcwd() 返回当前进程的工作目录,并非当前文件所在的目录
python使用seedir查看文件目录结构
import seedir as sd
path = './Test5_resnet'
sd.seedir(path, style='lines',itemlimit=10,depthlimit=2,exclude_folders='.git')

一些Bug

pycharm中ctrl+左键进入不了源码

python解释器可以进入源码,Anoconda解释器点击无效

Found no valid file for the classes .ipynb_checkpoints。

遇到这个问题只需要删除掉隐藏文件.ipynb_checkpoints即可,步骤如下
1.先通过 cd 到主目录下
在这里插入图片描述
2.通过ls -a列出目录下所有文件
在这里插入图片描述
3.通过rm -rf .ipynb_checkpoints删除掉该隐藏文件,再通过ls -a检查
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/180883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

技术细分|推荐系统——推荐系统中的数据去偏方法

本篇的主要脉络同样依据中科大何向南教授、合工大汪萌教授联合在 TKDE 上的一篇综述文章展开:Bias and Debias in Recommender System: A Survey and Future Directions。 下面按照前导文章中介绍的数据偏差 Selection Bias、Conformity Bias、Exposure Bias、Posit…

洛谷P1036 [NOIP2002 普及组] 选数【回溯搜索+素数】

P1036 [NOIP2002 普及组] 选数 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题目分析注意事项 代码后话王婆卖瓜 题目来源 前言 期中考逆天大作业,都快没时间写了。不过还是得抽空写一下题目,今天还是做搜索的题单,一题…

【0基础学Java第十一课】-- 认识异常

11. 认识异常 11.1 异常的概念与体系结构11.1.1 异常的概念11.1.2 异常的体系结构11.1.3 异常的分类 11.2 异常的处理11.2.1 防御式编程11.2.2 异常的抛出 throw11.2.3 异常的捕获异常声明throwstry-catch捕获并处理finally问题:既然 finally 和 try-catch-finally …

运动规划Motion-Planning随笔

online verification技术 实时安全校验技术:留一手 首先计算能否通过刹车这种方式得到一条安全轨迹,(让速不让道),当刹车有可能碰撞到行人或其他车辆时,则判断变道是否会产生碰撞。如果能变道&#xff0…

Mapbox中点图层和面图层点击事件重叠,禁止点击穿透方案

使用mapbox的小伙伴们可能都遇到过这个问题,就是当地图上有两个图层,一个面图层一个点图层,二者相重合的时候。假设我们想点击点位弹窗展示一些内容,也想点击面图层的时候弹窗展示一些内容,这时候一个有意思的问题就产生了,就是点击点位弹窗的时候面图层对应的弹窗也会弹…

几款Java源码扫描工具(FindBugs、PMD、SonarQube、Fortify、WebInspect)

说明 有几个常用的Java源码扫描工具可以帮助您进行源代码分析和检查。以下是其中一些工具: FindBugs:FindBugs是一个静态分析工具,用于查找Java代码中的潜在缺陷和错误。它可以检测出空指针引用、资源未关闭、不良的代码实践等问题。FindBu…

项目经理只需要有PMP证书就行?

就目前而言,大部分人对于项目经理的认识还停留在:有项目管理经验,有对应的工作年限,有PMP证书。所以绝大多数人都认为只要报考了PMP项目管理,取得PMP证书,即可加入项目经理的圈子,薪资翻倍。 但…

没有PDF密码,如何解密?

PDF文件有两种密码,一个打开密码、一个限制编辑密码,因为PDF文件设置了密码,那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密? PDF和office一样,可以对文件进行加密,但是没有提供恢复密码的功…

Linux CentOS+宝塔面板工具结合内网穿透实现网站发布至公网可访问

使用Typecho搭建个人博客网站,并内网穿透实现公网访问 文章目录 使用Typecho搭建个人博客网站,并内网穿透实现公网访问前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 …

C++ 简介、基本语法、数据类型、变量、常量

一、C简介: C是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言。支持过程化编程、面向对象编程和泛型编程。C是C的一个超集,任何合法的C程序都是合法的C程序。 面向对象开发的四大特性: ◆ 封装(Encapsulat…

vue项目使用easyplayer播放m3u8直播推流

官网 青犀视频 代码库 / 示例 / demo EasyPlayer 示例效果: 项目背景如图 后端给了m3u8的直播地址 协议是 hls / flv 市面上很多第三方热门播放库都可以完成该多屏播放方式 如Video.js 问题在于 分多屏时 会存在性能问题 并且关闭播放器后 即便删除Dom或调用停…

【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示)

本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、htmlcss、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。 Python全套笔记直接地址…

鸿蒙开发-ArkTS 语言

鸿蒙开发-ArkTS 语言 1. 初识 ArkTS 语言 ArkTS 是 HarmonyOS 优选主力开发语言。ArkTS 是基于 TS(TypeScript)扩展的一门语言,继承了 TS 的所以特性,是TS的超集。 主要是扩展了以下几个方面: 声明式UI描述和自定义组件: ArkTS允…

从裸机启动开始运行一个C++程序(十三)

前序文章请看: 从裸机启动开始运行一个C程序(十二) 从裸机启动开始运行一个C程序(十一) 从裸机启动开始运行一个C程序(十) 从裸机启动开始运行一个C程序(九) 从裸机启动开…

2. OpenHarmony源码下载

OpenHarmony源码下载(windows, ubuntu) 现在的 OpenHarmony 4.0 源码已经有了,在 https://gitee.com/openharmony 地址中,描述了源码获取的方式。下来先写下 windows 的获取方式,再写 ubuntu 的获取方式。 获取源码前,还需要的准…

咖啡馆管理系统点餐外卖小程序效果如何

咖啡一直是很多人喜欢的饮品,比如有些地区的人非常喜欢,熬夜加班醒脑等,咖啡领域市场规模逐年增加,相应的从业商家也在增加,近些年随着线上生态崛起,传统线下咖啡馆经营痛点显露出来。 通过【雨科】平台搭建…

使用sqlserver备份还原,复制迁移数据库

文章目录 前言一、备份数据库二、还原数据库三、其他 前言 当初学sqlserver复制数据库的时候,老师只教了右键数据库生成sql脚本,没说数据库非常大的时候咋搞啊,分离数据库复制一份后在附加上去太危险了 百度一下备份还原数据库针对小白的资料…

嵌入式单片机方向和Linux驱动开发方向哪个发展前景好?

嵌入式单片机方向和Linux驱动开发方向哪个发展前景好? 在某些平台上看到很多人鼓吹嵌入式Linux开发比单片机开发要好,让所有人都去做嵌入式Linux开发。说这种话的人大多数是嵌入式Linux的培训机构,或者是一开始就以嵌入式Linux入门的那一批人…

TIDB基础

TIDB整个逻辑架构跟MYSQL类似,如下: TIDB集群:相当于MYSQL的数据库服务器,区别是MYSQL数据库服务器为单进程的,TIDB集群为分布式多进程的。 数据库:同MYSQL数据库,数据库属于集群,…

Sam Altman回归OpenAI,新董事会成员曝光!

11月22日下午,OpenAI在社交平台宣布,在原则上已达成协议,让 Sam Altman重返 OpenAI担任首席执行官,并重组董事会。稍后会公布更详细的内容。 初始董事会成员包括前Salesforce联合首席执行官Bret Taylor(担任主席&…