OOD分类项目训练

一、项目地址

GitHub - LooKing9218/UIOS

二、label制作

      将训练、验证、测试数据的分类信息转换入.csv文件中,运行如下脚本即可:

import os
import csv#要读取的训练、验证、测试文件的目录,该文件下保存着以各个类别命名的文件夹和对应的分类图片
root_path=r'/media/*********************/train' 
#类别种类
classes=['cls1','cls2']def get_Write_file_infos(path):# 文件信息列表file_infos_list=[]typeclothes=os.listdir(path)for ii in typeclothes:everyfile=os.path.join(path , ii)for root, dirnames, filenames in os.walk(everyfile):for filename in filenames:file_infos = {}dirname=root#根据自己的需求更改路径地址filename1 ='train/'+ii+'/'+ filename#.split('.jpg')[0]flag = filename1[-1]file_infos["ImageId"] = filename1file_infos["Flag"] = classes.index(ii)#将数据追加字典到列表中file_infos_list.append(file_infos)return file_infos_list#写入csv文件
def write_csv(file_infos_list):with open('train_label.csv','a+',newline='') as csv_file_train:csv_writer = csv.DictWriter(csv_file_train,fieldnames=['ImageId','Flag'])csv_writer.writeheader()for each in file_infos_list:print(each)csv_writer.writerow(each)def main():file_infos_list =get_Write_file_infos(root_path)write_csv(file_infos_list)if __name__ == '__main__':main()print('The End!')

生成情况如下:

三、运行程序

     (1)修改参数文件 utils/config.py

# -*- coding: utf-8 -*-
class DefaultConfig(object):net_work = 'ResUnNet50'num_classes = 2num_epochs = 100batch_size = 256validation_step = 1root = "/media/code/"train_file = "train_label.csv"val_file = "val_label.csv"test_file = "test_label.csv"lr = 1e-4lr_mode = 'poly'momentum = 0.9weight_decay = 1e-4save_model_path = './Model_Saved'.format(net_work,lr)log_dirs = './Logs_Adam_0304'pretrained =True# Falsepretrained_model_path ='/media/code/UIOS-master/Trained/archive/data/99843712' #Nonecuda = 0num_workers = 4use_gpu = Truetrained_model_path = ''predict_fold = 'predict_mask'

(2)运行

   命令:

python train.py

(3)运行界面

四、踩坑记录

问题原因:ValueError: Only one class present in y_true. ROC AUC score is not defined in that case.

解决方法:

     (1)网上看了很多:

              方法1:添加 try-except

        try:epoch_train_auc = metrics.roc_auc_score(labels, outputs)writer.add_scalar('Train/train_auc', float(epoch_train_auc),epoch)print('loss for train : {},{}'.format(loss_train_mean,round(epoch_train_auc,6)))except ValueError:pass

        方法2:DataLoader的参数设置shuffle=True

   train_loader = DataLoader(DatasetCFP(root=args.root,mode='train',data_file=args.train_file,),batch_size=args.batch_size, shuffle=True, pin_memory=True)val_loader = DataLoader(DatasetCFP(root=args.root,mode='val',data_file=args.val_file,),batch_size=args.batch_size, shuffle=True, pin_memory=True)test_loader = DataLoader(DatasetCFP(root=args.root,mode='test',data_file=args.test_file,),batch_size=args.batch_size, shuffle=True, pin_memory=True)

    方法3:增大batch_size

    (2)我的方法:

        其实是我马虎大意

       修改好config.py中的num_classes参数就行了,

       见谅(不好意思~( ̄▽ ̄)~*)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网站项目】035家居商城系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

LLaMA 模型和DeepSpeed 框架联系与使用

1. LLaMA 模型介绍 LLaMA (Large Language Model - Meta AI) 是一个由 Meta AI 开发的大型语言模型。它设计用于理解和生成自然语言文本,支持多种语言,并且能够执行多种自然语言处理任务。LLaMA 模型因其开源特性、优异的性能和广泛的适用性而受到关注。…

加推科技,华为云上生长的营销革新

编辑:阿冒 设计:沐由 “我是个很幸运的人。”几天前的一次采访中,彭超——加推科技创始人、CEO,如此扼要简洁地总结自己的职业历程,完全不是我想象中那种前顶级Sales的口若悬河。 加推科技创始人、CEO 彭超 没错&…

C#面:using 关键字

using关键字在C#中有两种常见的用法: 命名空间的引用: 使用using关键字可以引用一个命名空间,以便在代码中直接使用该命名空间中的类型,而无需使用完全限定名。 例如,使用using System; 可以引用 System 命名空间&a…

ZigBee学习——在官方例程上实现串口通信

Z-Stack版本为3.0.2 IAR版本为10.10.1 文章目录 一、添加头文件二、定义接收缓冲区三、编写Uart初始化函数四、编写串口回调函数五、函数声明六、函数调用七、可能遇到的问题(function “halUartInit“ has no prototype) 以下所有操作都是在APP层进行,也就是这个文…

ThinkPHP 中使用Redis

环境.env [app] app_debug "1" app_trace ""[database] database "" hostname "127.0.0.1" hostport "" password "" prefix "ls_" username ""[redis] hostname "127.0.0.1…

Java并发基础:BlockingQueue和BlockingDeque接口的区别?

核心概念 BlockingQueue 和 BlockingDeque 它们都支持在并发编程中的线程安全操作,但是,这两个接口之间存在一些关键的区别,主要在于它们所支持的操作和数据结构的特性,如下: 1、数据结构特性: Blocking…

npm 上传一个自己的应用(4) 更新自己上传到NPM中的工具版本 并就行内容修改

前面 npm 上传一个自己的应用(2) 创建一个JavaScript函数 并发布到NPM 我们讲了将自己写的一个函数发送到npm上 那么 如果我们想到更好的方案 希望对这个方法进行修改呢? 比如 我们这里加一个方法 首先 我们还是要登录npm npm login然后 根据要求填写 Username 用…

HDFS 之 数据管理(namespace 和 slaves)

1、namespace Namespace在HDFS中是一个非常重要的概念,也是有效管理数据的方法。Namespace有很多优点:可伸缩性。使HDFS集群存储能力可以轻松进行水平拓展;系统性能。单点性能受限,影响系统吞吐;隔离性。不同业务类型访问集群有时容易互相干扰,使用多Namespace可以有效管…

面试复盘——8

前言 浙江一家小公司,300人左右。做技术为主的,还不错。 回家火车那天电话聊的,之后第二天就约面的,可惜结果不尽人意,当场挂了。 但可惜答的很菜了,遗憾。 一面 线上面的,一上来就要求摄像头…

BlueLotus 下载安装使用

说明 蓝莲花平台BlueLotus,是清华大学曾经的蓝莲花战队搭建的平台,该平台用于接收xss返回数据。 正常执行反射型xss和存储型xss: 反射型在执行poc时,会直接在页面弹出执行注入的poc代码;存储型则是在将poc代码注入用…

Leetcode 198 打家劫舍

题意理解: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代…

如何在 emacs 上开始使用 Tree-Sitter(windows)

文章目录 如何在emacs上开始使用Tree-Sitter(windows) 如何在emacs上开始使用Tree-Sitter(windows) 参考:“How to Get Started with Tree-Sitter”。 首先要有一个可运行的emacs,并且它支持Tree-Sitter&…

Docker配置Portainer容器管理界面

目录 一、Portainer 简介 优点: 缺点: 二、环境配置 1. 拉取镜像 2. 创建启动容器 三、操作测试 1. 进入容器 2. 拉取镜像并部署 3. 访问测试 一、Portainer 简介 Portainer 是一个开源的轻量级容器管理界面,用于管理 Docker 容器…

图数据库 之 Neo4j - 环境搭建(2)

运行环境: centos7 Docker version 18.09.6 下载镜像 docker search neo4j docker pull neo4j 创建 neo4j 用户 # 创建 neo4j 用户 # -M 不创建用户的主目录 sudo useradd -M neo4j # usermod 用于修改用户属性命令 # -L 锁定用户,用户无法登录系统 user…

【知识图谱--第二讲知识图谱的表示】

知识图谱的表示 知识表示Knowledge Representation 知识表示方法知识图谱的符号表示基于图的知识表示与建模简单图建模-最简单的无向图有向标记图OWL与Ontology 知识图谱的向量表示 知识表示 Knowledge Representation 知识表示(KR)就是用易于计算机处…

深度测评:ONLYOFFICE 桌面编辑器 v8.0新功能

目录 前言 一、PDF表单处理:提升办公效率 二、RTL(从右到左)支持:满足不同语言习惯 三、Moodle集成:教育行业的新助力 四、本地界面主题:个性化办公体验 五、性能优化与稳定性提升 六、性能与稳定性…

C++中用Boost::Python调用Python模块

这个过程有挺多坑,记录一下。我这里的环境: Windows 11 Qt 6.2 Boost 1.8.4 CMake 3.25.2 Visual Stutio 2019(主要用于C编译) 1、下载并将Boost编译为静态库 b2.exe toolsetmsvc-14.2 install --prefixboost安装路径 links…

数据链路层DoS

图9-14 集线器应用原理 数据链路层中拒绝服务攻击的方式一般很少为人所熟知。数据链路层拒绝服 务攻击的主要目标为二层交换机。在早期网络中,通常都会使用集线器作为中间 处理设备。集线器属于纯硬件网络底层设备,没有任何“ 智能记忆” 能力和“学 …

Python高级属性访问使用方法

Python中的高级属性访问是指通过特殊的方法来实现对属性的访问和操作。以下是几个常用的高级属性访问方法: getattr__和__setattr: __getattr__方法在访问不存在的属性时被调用,可以在方法中实现自定义的默认值或错误处理逻辑。__setattr__方法在给属性赋值时被调用,可以在…