训练yolov8+SAM的过程记录

1-首先将拿到的数据集进行重新命名(dataset1:是经过校色之后裁剪的图片;dataset2:原图)
图片文件从1.jpg开始命名的代码:

folder_path = r'C:\Users\23608\Desktop\Luli_work\data\fanStudent\tongueseg\Fan\Fan\.jpg'
new_folder = r'C:\Users\23608\Desktop\Luli_work\data\fanStudent\tongueseg\imgOrig'jpg_files = [f for f in os.listdir(folder_path) if f.endswith('.jpg')]
n = 1
for i, jpg_file in enumerate(jpg_files):new_filename = f'{n}.jpg'n =n+1# 构造原始文件和新文件的完整路径original_path = os.path.join(folder_path, jpg_file)new_path = os.path.join(new_folder, new_filename)# 复制文件到新文件夹并重命名shutil.copy(original_path, new_path)print("重命名完成!")

2-将数据预处理之后的数据上传到服务器,接着使用yolov8SAM代码将代码中的舌体掩码跑出来:
数据存放位置
Imgorig:/share1/luli/tongueseg/data/dataset2/imgOrig/
IMgcrop:/share1/luli/tongueseg/data/dataset1/imgCrop/

微调SAM的查找

How to Fine-Tune Segment Anything

1. How to Fine-Tune Segment Anything

We gave an overview of the SAM architecture in the introduction section. The image encoder has a complex architecture with many parameters. To fine-tune the model, it makes sense for us to focus on the mask decoder which is lightweight and therefore easier, faster and more memory efficient to fine-tune.

In order to fine tune SAM, we need to extract the underlying pieces of its architecture (image and prompt encoders, mask decoder). We cannot use SamPredictor.predict (link) for two reasons:

· We want to fine tune only the mask decoder
· This function calls SamPredictor.predict_torch which has the @torch.no_grad() decorator (link), which prevents us from computing gradients

Thus, we need to examine the SamPredictor.predict function and call the appropriate functions with gradient calculation enabled on the part we want to fine tune (the mask decoder). Doing this is also a good way to learn more about how SAM works.

2. Creating a Custom Dataset

We need three things to fine tune our model:(这里其实并没有说GT、datase的具体类型)

· Images on which to draw segmentations
· Segmentation ground truth masks
· Prompts to feed into the model

后续在代码里面可以看到图片代码里面是png格式,mask掩码是黑白二值图。

我现在使用的是labelme标记的舌头,json文件,需要把json文件转化成二值图。

这里涉及到3个数据类型的转化:

· png图片转json文件(也就是使用yolov8+SAM对数据集进行简单的分割之后再人工进行微调,此时的微调使用的是labelme格式是json,这里使用到TongueSAM里马赛克json里面的代码)
· json文件转成png图片,这里使用到labelme里面的自己的代码(参考链接)[labelme] json格式批量转换为mask.png,步骤入下:
1.使用labelme制作语义分割数据集,生成.json格式文件,将所有放置于一个文件夹下。
2.找到labelme安装位置的json_to_dataset.py文件,(可以使用Everything软件)
用下面的代码替换里面的代码:

import argparse
import json
import os
import os.path as osp
import warnings
import copy
import numpy as np
import PIL.Image
from skimage import io
import yaml
from labelme import utilsdef main():parser = argparse.ArgumentParser()parser.add_argument('json_file')   # 标注文件json所在的文件夹parser.add_argument('-o', '--out', default=None)args = parser.parse_args()json_file = args.json_filelist = os.listdir(json_file)   # 获取json文件列表for i in range(0, len(list)):path = os.path.join(json_file, list[i])  # 获取每个json文件的绝对路径filename = list[i][:-5]      

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

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

相关文章

stable diffusion官方版本复现

踩了一些坑,来记录下 环境 CentOS Linux release 7.5.1804 (Core) 服务器RTX 3090 复现流程 按照Stable Diffusion的readme下载模型权重、我下载的是stable-diffusion-v1-4 版本的 1 因为服务器没法上huggingface,所以得把权重下载到本地&#xff…

初识表及什么是数据表

一、了解表 1.1.概述 表是处理数据和建立关系型数据库及应用程序的基本单元,是构成数据库的基本元素之一,是数据库中数据组织并储存的单元,所有的数据都能以表格的形式组织,目的是可读性强。 1.2.表结构简述 一个表中包括行和列…

当项目经理的一定要考PMP嘛?

PMP资格认证并不是强制性要求,但强烈建议考虑获取该资格!首先让我们来了解一下PMP是什么,然后再谈谈为什么建议考取PMP资格的理由。 PMP(Project Management Professional)是项目管理专业人员的资格认证。该认证由全球…

SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测

SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测 目录 SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实…

老子云3D资源服务与应用平台详解

老子云平台定位 老子云目标客群 老子云平台架构 老子云平台价值 核心优势 -AMRT标准格式 -自动模型轻量化 -持续精进的底层技术算法 -千万级轻量化3D资源素材市场 功能服务 -格式转换 -蒙皮动画轻量化 -倾斜摄影轻量化 -效果编辑器 -应用编辑器 -3D OFD应用 -A3D PPT -3D资源…

力扣日记2.22-【回溯算法篇】47. 全排列 II

力扣日记:【回溯算法篇】47. 全排列 II 日期:2023.2.22 参考:代码随想录、力扣 47. 全排列 II 题目描述 难度:中等 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输…

SpringBoot中定义了Bean,但是为什么依赖注入的时候注入不了

背景&#xff1a; 扩展RedisTemplate的实现的时候写了这样一段代码&#xff1a; public class BusinessRedisTemplate extends RedisTemplate<String, String> {private final String prefix "business";public BusinessRedisTemplate (RedisConnectionFact…

十八、图像像素类型转换和归一化操作

项目功能实现&#xff1a;对一张图像进行类型转换和归一化操作 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 norm.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class NORM { public:void norm(Mat& image); };#pragma once二…

智慧公厕是什么?智慧公厕是构建智慧城市的环境卫生基石

随着城市化进程的不断加速&#xff0c;城市人口密度和流动性也逐渐增大&#xff0c;对城市公共设施的需求与日俱增。而在这些公共设施中&#xff0c;公厕作为城市基础设施中不可或缺的一环&#xff0c;对城市的环境卫生和市民生活质量起着举足轻重的作用。如何提高公厕的管理效…

android studio 中使用kotlin语言 直接操作布局id

android studio 中使用kotlin语言 直接操作布局id 需要在 build.gradle 文件 引入 apply plugin: kotlin-android apply plugin: kotlin-android-extensions&#xff08;会自动生成&#xff0c;可忽略&#xff09;然后在 Activity 文件中 引入 对应的 layout 文件 如&#xff…

MacOs 围炉夜话

文章目录 一、安装 Mac 一、安装 Mac macOS是一套由苹果开发的运行于Macintosh系列电脑上的操作系统。macOS是首个在商用领域成功的图形用户界面操作系统。 VM虚拟机怎么安装mac os&#xff1f;&#xff08;全教程&#xff09; 虚拟机&#xff1a;VMware Workstation 17 pro W…

新书推荐:《分布式商业生态战略:未来数字商业新逻辑与企业数字化转型新策略》

近两年&#xff0c;商业经济环境的不确定性越来越明显&#xff0c;市场经济受到疫情、技术、政策等多方因素影响越来越难以预测&#xff0c;黑天鹅事件时有发生。在国内外经济方面&#xff0c;国际的地缘政治对商业经济产生着重大的影响&#xff0c;例如供应链中断&#xff0c;…

Shopify配置项过多如何在代码层面简化输出内容

在处理 Shopify 的配置项过多的情况下&#xff0c;可以通过在代码层面简化输出内容来提高效率和可维护性。以下是一些方法&#xff1a; 1. 使用循环和条件语句 使用循环和条件语句来动态生成和输出内容。通过遍历配置项的列表或对象&#xff0c;可以根据条件决定是否输出相应的…

Backend - Django SimpleUI(美化 Django Admin )

目录 一、作用 二、安装 & 配置 &#xff08;一&#xff09;安装依赖 &#xff08;二&#xff09;配置 &#xff08;三&#xff09;运行 三、基础设定 &#xff08;一&#xff09;创建用户 &#xff08;二&#xff09;设置标题 &#xff08;三&#xff09;设置登录…

代理模式笔记

代理模式 代理模式代理模式的应用场景先理解什么是代理&#xff0c;再理解动静态举例举例所用代码 动静态的区别静态代理动态代理 动态代理的优点代理模式与装饰者模式的区别 代理模式 代理模式在设计模式中是7种结构型模式中的一种&#xff0c;而代理模式有分动态代理&#x…

rabbitmq知识梳理

一.WorkQueues模型 Work queues&#xff0c;任务模型。简单来说就是让多个消费者绑定到一个队列&#xff0c;共同消费队列中的消息。 当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c…

四、矩阵的分类

目录 1、相等矩阵 2、同形矩阵 3、方阵&#xff1a; 4、负矩阵、上三角矩阵、下三角矩阵&#xff1a; 5、对角矩阵&#xff1a;是方阵 ​编辑7、单位矩阵&#xff1a;常常用 E或I 来表示。它是一个方阵 8、零矩阵&#xff1a; 9、对称矩阵&#xff1a;方阵 1、相等矩阵 …

openEuler安装MySQL客户端、openEuler安装MySQL-client、openEuler部署MySQL-client

MySQL客户端下载链接&#xff1a;https://downloads.mysql.com/archives/community/ mysql-community-client-5.7.30-1.el7.x86_64.rpm mysql-community-common-5.7.30-1.el7.x86_64.rpm mysql-community-libs-5.7.30-1.el7.x86_64.rpm 3个必选 8.0.22以上的版本是4个&…

HDFS中常用的Shell命令 全面且详细

HDFS中常用的Shell命令目录 一、ls命令 二、mkdir 命令 三、put命令 四、get命令 五、mv命令 六、rm命令 七、cp命令 八、cat命令 前言 安装好hadoop环境之后&#xff0c;可以执行hdfs相关的shell命令对hdfs文件系统进行操作&#xff0c;比如文件的创建、删除、修改文…

【FPGA】VHDL:小型出勤系统设计

附源代码&#xff0c;一定能实现&#xff01; 目录 EDA设计练习题&#xff1a; 实验要求如下&#xff1a; 思路分析&#xff1a; 代码 99进制计数器 码转换 顶层文件 特别注意 测试 编译通过 结果展示 RTL视图 技术映射视图 软件&#xff1a;Quartus II 13.0 (64…