当前位置: 首页 > news >正文

u2net网络模型训练自己数据集

单分类
下载项目源码
项目源码

准备数据集
将json转为mask
json_to_dataset.py

import cv2
import json
import numpy as np
import os
import sys
import globdef func(file):with open(file, mode='r', encoding="utf-8") as f:configs = json.load(f)shapes = configs["shapes"]png_class = np.zeros((configs["imageHeight"], configs["imageWidth"], 1), np.uint8)png_other = np.zeros((configs["imageHeight"], configs["imageWidth"], 1), np.uint8)for shape in shapes:label = shape['label']if label == 'class':cv2.fillPoly(png_class, [np.array(shape["points"], np.int32)], (255))else:cv2.fillPoly(png_other, [np.array(shape["points"], np.int32)], (255))png = png_class - png_otherreturn pngif __name__ == "__main__":json_dir = "image"save_dir = 'image/masks'for file in os.listdir(json_dir):print('***************', file)if file.endswith(".json"):# 在这里添加后续步骤png = func(os.path.join(json_dir, file))print(png.shape)save_path = save_dir + '/' + os.path.splitext(file)[0] + ".png"cv2.imwrite(save_path, png)print('***************', save_path)

创建文件路径

train_data|__DUTS|__DUTS-TR|__im_aug			# mask图|__gt_aug			# 原图|__DUTS-TE|__im_aug			# mask图|__gt_aug			# 原图

训练
修改u2net_train.py

# ------- 2. set the directory of training dataset --------model_name = 'u2net' #'u2netp'											# 选择模型# 修改为对应的数据集路径
data_dir = os.path.join(os.getcwd(), 'train_data' + os.sep)
tra_image_dir = os.path.join('DUTS', 'DUTS-TR', 'im_aug' + os.sep)
tra_label_dir = os.path.join('DUTS', 'DUTS-TR', 'gt_aug' + os.sep)image_ext = '.jpg'
label_ext = '.png'model_dir = os.path.join(os.getcwd(), 'saved_models', model_name + os.sep)

alpha_export.py为转换模型,u2net_test.py模型预测

多分类
准备数据集
将json转为mask,由于是多分类,每一个分类一个rgb值,例如分类1(1,1,1),分类2(2,2,2),分类3(3,3,3);

import cv2
import json
import numpy as np
import os
import sys
import globdef func(file):with open(file, mode='r', encoding="utf-8") as f:configs = json.load(f)shapes = configs["shapes"]class1 = np.zeros((configs["imageHeight"], configs["imageWidth"], 3), np.uint8)class2 = np.zeros((configs["imageHeight"], configs["imageWidth"], 3), np.uint8)class3 = np.zeros((configs["imageHeight"], configs["imageWidth"], 3), np.uint8)for shape in shapes:label = shape['label']if label == 'class1':cv2.fillPoly(class1, [np.array(shape["points"], np.int32)], (1, 1, 1))elif label == 'class2':cv2.fillPoly(class2, [np.array(shape["points"], np.int32)], (2, 2, 2))elif label == 'class3':cv2.fillPoly(class3, [np.array(shape["points"], np.int32)], (3, 3, 3))return class1 + class2 + class3if __name__ == "__main__":json_dir = "./train_data/labels_json"save_dir = './train_data/masks'for file in os.listdir(json_dir):print('***************', file)if file.endswith(".json"):# 在这里添加后续步骤png = func(os.path.join(json_dir, file))print(png.shape)save_path = save_dir + '/' + os.path.splitext(file)[0] + ".png"cv2.imwrite(save_path, png)print('***************', save_path)

数据集文件夹

datasets|__train_data|__images		# 原图|__1.jpg|__2.jpg|__3.jpg|__masks		# mask图|__1.png|__2.png|__3.png|__test_data|__images|__1.jpg|__2.jpg|__3.jpg|__masks|__1.png|__2.png|__3.png|__my_results_2|__predeict_lables|__predict_masks

训练

# ------- 2. set the directory of training process --------
model_name = 'u2net'  # 'u2net'							# 选择模型
model_dir = os.path.join('saved_models', model_name + os.sep)# 图片的文件类型
image_ext = '.jpg'
label_ext = '.png'# train阶段
# 数据集路径
data_dir = os.path.join("datasets/train_data" + os.sep)
# 原始图片路径
tra_image_dir = os.path.join('images' + os.sep)
# 图片的标签路径
tra_label_dir = os.path.join('masks' + os.sep)# val阶段
# 数据集类别
num_classes = 4			# 背景+类别数
name_classes = ["background", "class1", "class2","class3"]
# 原始图片路径
images_path = "datasets/test_data/images/"
# 图片的标签路径
gt_dir = "datasets/test_data/masks/"
# 存放推理结果图片的路径
pred_dir = "datasets/test_data/predict_masks/"
predict_label = "datasets/test_data/predict_labels/"
# 存放 miou 计算结果的 图片
miou_out_path = "miou_out_tab"
# 预训练权重
seg_pretrain_u2netp_path = 'saved_models/pretrain_model/segm_u2net.pth'
if not os.path.exists(model_dir):os.makedirs(model_dir)epoch_num = 100
batch_size = 2
train_num = 0
val_num = 0

执行u2net_train.py,开始训练

预测

if __name__ == "__main__":#   miou_mode用于指定该文件运行时计算的内容#   miou_mode为0代表整个miou计算流程,包括获得预测结果、计算miou。#   miou_mode为1代表仅仅获得预测结果。#   miou_mode为2代表仅仅计算miou。#   分类个数+1、如2+1# num_classes = 3# name_classes = ["background", "green", "red"]num_classes = 4name_classes =["background", "class1", "class2","class3"]# 原始图片路径images_path = "datasets_ButtonCell/test_data/images/"# 图片的标签路径gt_dir = "datasets_ButtonCell/test_data/masks/"# 存放推理结果图片的路径pred_dir = "datasets_ButtonCell/test_data/predict_masks/"predict_label = "datasets_ButtonCell/test_data/predict_labels/"# 存放 miou 计算结果的 图片miou_out_path = "miou_out"# 模型路径model_dir = './saved_models/u2netp/u2netp.pth'eval_print_miou(num_classes, name_classes, images_path, gt_dir, pred_dir, predict_label, miou_out_path, model_dir)

执行u2net_val.py,开始训练

torch2onnx.py进行模型转换

相关文章:

u2net网络模型训练自己数据集

单分类 下载项目源码 项目源码 准备数据集 将json转为mask json_to_dataset.py import cv2 import json import numpy as np import os import sys import globdef func(file):with open(file, moder, encoding"utf-8") as f:configs json.load(f)shapes configs…...

登录功能开发 P167重点

会话技术: cookie jwt令牌会话技术: jwt生成: Claims:jwt中的第二部分 过滤器: 拦截器: 前端无法识别controller方法,因此存在Dispa什么的...

数据架构图:从数据源到数据消费的全面展示

在这篇文章中,我们将探讨如何通过架构图来展示数据的整个生命周期,从数据源到数据消费。下面是一个使用Mermaid格式的示例数据架构图,展示了数据从源到消费的流动、处理和存储过程。 数据架构图示例 说明 数据源:分为内部数据源&…...

useEffect 与 useLayoutEffect 的区别

useEffect 与 useLayoutEffect 的区别 useEffect和useLayoutEffect是处理副作用的React钩子函数,有以下区别1. 执行时机不同2. 对性能影响不同3. 对渲染的影响不同:4. 使用场景不同 使用建议 useEffect和useLayoutEffect是处理副作用的React钩子函数&…...

OPENCV判断图像中目标物位置及多目标物聚类

文章目录 在最近的项目中,又碰到一个有意思的问题需要通过图像算法来解决。就是显微拍摄的到的医疗图像中,有时候目标物比较偏,也就是在图像的比较偏的位置,需要通过移动样本,将目标物置于视野正中央,然后再…...

分布式理论:拜占庭将军问题

分布式理论:拜占庭将军问题 介绍拜占庭将军的故事将军的难题 解决方案口信消息型拜占庭问题之解流程总结 签名消息型拜占庭问题之解 总结 介绍 拜占庭将军问题是对分布式共识问题的一种情景化描述,由兰伯特于1082首次发表《The Byzantine Generals Prob…...

从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx

安装nginx sudo docker pull nginx 启动nginx 宿主机创建目录 sudo mkdir -p /home/nginx/{conf,conf.d,html,logs} 先启动nginx sudo docker run -d --name mynginx -p 80:80 nginx 宿主机上拷贝docker上nginx服务上文件到本地目录 sudo docker cp mynginx:/etc/nginx/ngin…...

阿里云 SAE Web:百毫秒高弹性的实时事件中心的架构和挑战

作者:胡志广(独鳌) 背景 Serverless 应用引擎 SAE 事件中心主要面向早期的 SAE 控制台只有针对于应用维度的事件,这个事件是 K8s 原生的事件,其实绝大多数的用户并不会关心,同时也可能看不懂。而事件中心,是希望能够…...

人口普查管理系统基于VUE+SpringBoot+Spring+SpringMVC+MyBatis开发设计与实现

目录 1. 系统概述 2. 系统架构设计 3. 技术实现细节 3.1 前端实现 3.2 后端实现 3.3 数据库设计 4. 安全性设计 5. 效果展示 ​编辑​编辑 6. 测试与部署 7. 示例代码 8. 结论与展望 一个基于 Vue Spring Boot Spring Spring MVC MyBatis 的人口普查管理…...

使用VBA快速将文本转换为Word表格

Word提供了一个强大的文本转表格的功能,结合VBA可以实现文本快速转换表格。 示例文档如下所示。 现在需要将上述文档内容转换为如下格式的表格,表格内容的起始标志为。 示例代码如下。 Sub SearchTab()Application.DefaultTableSeparator "*&quo…...

力扣题解1870

这道题是一个典型的算法题,涉及计算在限制的时间内列车速度的最小值。这是一个优化问题,通常需要使用二分查找来求解。 题目描述(中等) 准时到达的列车最小时速 给你一个浮点数 hour ,表示你到达办公室可用的总通勤时…...

D3.js数据可视化基础——基于Notepad++、IDEA前端开发

实验:D3.js数据可视化基础 1、实验名称 D3数据可视化基础 2、实验目的 熟悉D3数据可视化的使用方法。 3、实验原理 D3 的全称是(Data-Driven Documents),是一个被数据驱动的文档,其实就是一个 JavaScript 的函数库,使用它主要是用来做数据可视化的。本次实…...

在Robot Framework中Run Keyword If的用法

基本用法使用 ELSE使用 ELSE IF使用内置变量使用Python表达式本文永久更新地址: 在Robot Framework中,Run Keyword If 是一个条件执行的关键字,它允许根据某个条件来决定是否执行某个关键字。下面是 Run Keyword If 的基本用法: Run Keyword…...

虚拟机ip突然看不了了

打印大致如下: 解决办法 如果您发现虚拟机的IP地址与主机不在同一网段,可以采取的措施之一是调整网络设置。将虚拟机的网络模式更改为桥接模式,这样它就会获得与主机相同的IP地址,从而处于同一网段。或者,您可以使用…...

LeetCode[中等] 763. 划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 思路 贪心…...

Java LeetCode每日一题

997. 找到小镇的法官 package JavaExercise20241002;public class JavaExercise {public static void main(String[] args) {int[][] array {{1,3},{2,3},{3,1}};Solution solution new Solution();System.out.println(solution.findJudge(3, array));} }class Solution {pu…...

数据结构--集合框架

目录 1. 什么是集合框架 2. 背后所涉及的数据结构以及算法 2.1 什么是数据结构 2.2 容器背后对应的数据结构 1. 什么是集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 int…...

Win10鼠标总是频繁自动失去焦点-非常有效-重启之后立竿见影

针对Win10鼠标频繁自动失去焦点的问题,可以尝试以下解决方案: 一、修改注册表(最有效的方法-重启之后立竿见影) 打开注册表编辑器: 按下WindowsR组合键,打开运行窗口。在运行窗口中输入“regedit”&#x…...

智能涌现|迎接智能时代,算力产业重构未来

前言 OpenAI首席执行官山姆奥特曼在《智能时代》中描绘了一个令人振奋的未来图景,其中算力产业将扮演至关重要的角色。奥特曼预测,我们可能在“几千天内”迎来超级智能,这一进程将极大加速社会结构的智能化转型。 这一预测与算力产业的未来…...

关于HTML 案例_个人简历展示01

案例效果展示 代码 <!DOCTYPE html> <lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>个人简历信息</title> </he…...

别再只用轮盘赌了!遗传算法选择算子实战对比:Python代码实现与性能调优心得

遗传算法选择算子深度实战&#xff1a;从轮盘赌到锦标赛的Python优化指南 在解决复杂优化问题时&#xff0c;遗传算法展现出了惊人的适应能力。但许多开发者止步于基础的轮盘赌选择&#xff08;Roulette Wheel Selection&#xff09;&#xff0c;却不知不同选择策略对算法性能的…...

DreamBooth实战案例:从人物肖像到艺术风格的完整训练过程

DreamBooth实战案例&#xff1a;从人物肖像到艺术风格的完整训练过程 【免费下载链接】sd_dreambooth_extension 项目地址: https://gitcode.com/gh_mirrors/sd/sd_dreambooth_extension DreamBooth是一款强大的AI模型训练工具&#xff0c;能够让你通过少量图片快速定制…...

从平面到立体:ImageToSTL如何让任何图片在3分钟内变成立体可打印模型

从平面到立体&#xff1a;ImageToSTL如何让任何图片在3分钟内变成立体可打印模型 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from t…...

你还在迷信AI的回答?2026年,信息主权争夺战已全面打响

一、AI信息乱象&#xff1a;个人与企业的双重困境 &#xff08;一&#xff09;个人用户&#xff1a;深陷“AI虚假陷阱”&#xff0c;决策毫无安全感2026年的今天&#xff0c;AI大模型的“幻觉缺陷”非但没有消失&#xff0c;反而因模型参数膨胀而变得更加隐蔽。用户向豆包询问某…...

给文科生的NetLogo入门指南:不用写代码,5分钟看懂‘种族隔离’模型背后的逻辑

给文科生的NetLogo入门指南&#xff1a;不用写代码&#xff0c;5分钟看懂‘种族隔离’模型背后的逻辑 当你第一次听说"用计算机模拟社会现象"时&#xff0c;脑海中浮现的可能是复杂的数学公式和令人望而生畏的代码行。但NetLogo这款工具彻底颠覆了这种认知——它让社…...

Midjourney Basic计划真实体验:7天高强度测试+37组对比图,揭示隐藏限制与生产力断层

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Basic计划真实体验&#xff1a;7天高强度测试37组对比图&#xff0c;揭示隐藏限制与生产力断层 过去一周&#xff0c;我以全职创作者身份深度使用 Midjourney Basic 计划&#xff08;$10/月…...

基于Tauri与Bun的本地多智能体AI助手YouClaw:架构、配置与实战

1. 项目概述&#xff1a;一个桌面端的多智能体AI助手运行时 最近在折腾AI智能体&#xff08;Agent&#xff09;的本地化部署和集成&#xff0c;发现了一个挺有意思的开源项目——YouClaw。简单来说&#xff0c;它是一个基于Tauri 2构建的桌面应用&#xff0c;核心是一个支持多…...

基于MCP协议的AI自动化Solana代币发行与资产管理实战

1. 项目概述&#xff1a;当AI助手成为你的Solana发币合伙人 如果你在Solana生态里折腾过&#xff0c;肯定知道发一个币有多麻烦。从构思名字、设计代币经济学、写合约、到部署、创建流动性池、再到上DEX工具&#xff08;比如Dexscreener&#xff09;做推广&#xff0c;每一步都…...

动态架构跳跃:让视觉语言大模型高效适配垂直领域任务

1. 项目概述&#xff1a;从“大而全”到“快而准”的模型进化之路 在视觉语言预训练模型&#xff08;Vision-Language Pre-trained Models, VLPMs&#xff09;如CLIP、ALIGN等席卷多模态领域的今天&#xff0c;一个核心的工程与学术困境日益凸显&#xff1a;这些动辄数十亿参数…...

ComfyUI视频处理终极指南:3步搭建AI视频生成工作流

ComfyUI视频处理终极指南&#xff1a;3步搭建AI视频生成工作流 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在AI图像生成领域&#xff0c;ComfyUI以其强大的节…...