二值图像分割统一项目

news2024/10/1 1:16:31

1. 项目文件介绍

本章为二值图像的分割任务做统一实现,下面是项目的实现目录

项目和文章绑定了,之前没用过,不知道行不行

  • data 文件夹下负责摆放数据的训练集+测试集
  • inference 负责放待推理的图片(支持多张图片预测分割)
  • run_results 是网络训练过程的日志文件
  • python 代码介绍
compute_mean_std计算训练集图像灰度的均值和方差像素分布(-1,1)之间可以让网络更好的收敛
confuse_matrix混淆矩阵通过分类任务的混淆矩阵,计算不同像素的iou
dataset数据集的加载代码根据数据集在data文件下的摆放,加载数据
model模型,这里采用vgg为骨干网络resnet比vgg有更好的提取特征能力,这个后续介绍
predict推理代码
train模型的训练代码
transforms对图像预处理的重构不同于分类任务,图像的缩放,相应的标签也要进行缩放
utils关于训练过程的工具函数

2. 使用代码

README 文件有详细介绍!!

1. 环境搭建

搭建好项目需要的环境后,下载 requirements.txt 需要的库文件即可

2. 数据集的摆放

按照指定位置摆放,文件夹的名称不可更改,否则需要重新编写dataset文件 !!!

3. 关于超参数的设定

因为transforms 对图像进行缩放后中心裁剪,所以训练train 文件前,根据训练图片的大小进行更改。训练过程的超参数文件也可以在这里更改

例如这里的训练图片是96*96的空间分辨率,所以设定的中心裁剪为96

至于base_size 是图像进行缩放的比例,如下图,在120的 0.5到1.5倍数之间随机缩放。有部分疑问后面聊

4. 开始训练

运行train 文件即可,会在train文件生成下面四个文件

下面是细胞分割的训练展示

loss iou 曲线:

学习率衰减曲线:这里使用的cos自适应衰减

训练日志:左侧的一列是背影0的指标,右侧是1的指标,可以参考之前的介绍:混淆矩阵、语义分割的指标

 

5. 如何预测

因为训练的预处理mean和std是计算得到的,所以预测之前需要重新填写,如下

只需要将train得到的填入下方就行了

3. 有些问题

因为本人在训练过程有几点困惑,所以写在这,方便大佬解答...

1. transform 的缩放设定

因为图像分割最终的目的都是将前景图像从背景中抠出来,这就涉及到图像的尺寸问题。

例如,标准的unet 输入是固定的,例如460*460或者512*512,但大部分的图片这个尺寸。虽说图像处理可以进行缩放解决,但将label缩放插值方法总觉得差点意思,这会导致原本的前景被改变。而且,就算将训练集统一缩放了,预测新的图片呢?也需要缩放吗?

于是本章利用了随机缩放图像大小的方法,这样随机输入的图像本身就是不固定的,相当于多尺度输入吧,这样随机预测新图片的时候,输入的图像大小也就无所谓了

        min_size = int(0.5 * base_size)
        max_size = int(1.5 * base_size)

2. 为什么用 vgg 不用 resnet

vgg 的效果确实不如 resnet 提取特征强,作者本人网上找了很多换成resnet的代码,但都用一个问题,不能任意输入大小

本人在resnet的代码上更改了很久,没有实现,太菜了...

这样就产生了第一个问题,最后权衡一二,使用了本章vgg为骨干的unet模型。这里的unet添加了代码,可以支持任何尺度的输入

当然,如果不介意输入尺寸的问题,可以利用自带库,直接调用

参考:Unet 基于TCGA颅脑肿瘤MRI分割(高阶API分割模型)

3. 关于 dataset 部分

对应于固定的分割任务,dataset都是需要自己重构的,为了尽量代码复用,所以数据集的摆放必须遵循固定的顺序

有些训练图片和标签图像名字不是严格对应的,比如后缀啊,或者文件名啊。可以利用python 批处理进行更改,或者在dataset 里面重构

对于,label 不是标准的二值图像(看起来黑白,其实中间包含了其他像素值),通过阈值进行处理。

需要注意的是,qq截图可以显示灰度值,但不是准确的。将图片放到最大,可能就是二值图片,因为图像缩放,分辨器显示的问题。(作者之前在这吃过不少亏...)

二值化还一个好处,将灰度值映射成120的话,可以观察train过程的预处理图像长啥样

将train 部分的代码打开即可

好像不需要更改也行,plot 自动调色了....

    # # 可视化数据,二值化中,将 dataset的标签映射改成 120会看的更清楚
    # # 可以查看具体的训练图像被预处理成啥样
    # dataloader = next(iter(trainLoader))
    # plot(data_loader=dataloader,mean=train_mean,std=train_std)
    # return

还有别的问题,可以在评论区在交流....

 

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

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

相关文章

业务场景中Hive解析Json常用案例

业务场景中Hive解析Json常用案例 json在线工具 json格式转换在线工具 https://tool.lu/json/format格式互转: // 格式化可以合并整行显示 {"name":"John Doe","age":35,"email":"johnexample.com"}// 格式化…

vm net 方式 静态ip配置访问主机IP和外网

1、win 11 安装vm,镜像文件 F:\software\VMwork\CentOS-7-x86_64-Everything-1804.iso 2、配置网络 net 方式 3、右击网络--》属性---》更改适配器设置--》vmnet8 属性 如果没有vm1、vm8 虚拟机编辑---》虚拟机网络编辑器-->还原默认设置 注意:这…

ONLYOFFICE 协作空间 2.0 现已发布:新增公共房间、插件、重新分配数据、RTL 界面等功能

更新后的 ONLYOFFICE 协作空间新增诸多实用功能,全平台实现多项优化功能。请继续阅读,了解所有更新。 ONLYOFFICE 协作空间是什么 ONLYOFFICE 协作空间是一款开源效率平台,让您与同事、团队成员、客户、合作伙伴、承包商、赞助商和其他第三方…

大学生如何搭建自己的网站

这篇是我在大一的时候,写过的一篇文章。 前言 作为一名大学生,我觉得搭建个人网站很有意义。 这篇博客讲述的是这个寒假,我是如何从零到搭建好个人网站的过程。我提供的主要是具体的思路,也附带了一些零零散散的细节。时间跨度…

GVIM 配置 for begin/end class/endclass 等配对

有时候我们的代码很长,或者结构比较复杂,多个if/else 或者begin/end 快嵌套,为了阅读方便,利用gvim插件实现块跳转还是很有实用性的,下面的.vimrc的配置,简单方便。 使用方式: 将光标定位到块头…

全球与中国汽车电力电子市场:增长趋势、竞争格局与前景展望

目前,世界各国都致力于转向更环保、更永续的传统交通替代方案。 电动车满足所有要求,因为它们具有零废气排放、改善空气品质、减少温室气体排放并创造更清洁、更健康的环境。此外,电动车的运作成本比传统内燃机驱动的汽车低,因为…

HTML5+CSS3+Vue小实例:饮料瓶造型文字旋转特效

实例:饮料瓶造型文字旋转特效 技术栈:HTML+CSS+Vue 效果: 源码: 【HTML】【JS】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" …

linux 内核regulator

问题 在sys文件系统下没有生成cpu 调频的相关节点。 日志对比 [ 3.588745] cpu cpu4: Looking up cpu-supply from device tree [ 3.588753] cpu cpu4: Failed to get reg [ 3.588791] cpu cpu4: Looking up cpu-supply from device tree [ 3.588808] Failed to i…

React 笔记 jsx

严格约定&#xff1a;React 组件必须以大写字母开头&#xff0c;而 HTML 标签则必须是小写字母。 React JSX JSX 是由 React 推广的 JavaScript 语法扩展。 用于表达组件的 特殊语法的 js 函数 要求标签必须闭合&#xff1b;返回的组件必须包裹在一个父标签内&#xff1b; …

Python使用cURL库下载文件

Python使用cURL库下载文件 cURL库是一个功能强大的工具&#xff0c;可以用于在Python中下载文件。以下是一个简单的Python程序&#xff0c;使用cURL库实现文件下载功能&#xff1a; import subprocess def download_file(url, output_path): command [curl, -o, …

开启全新消费革命——消费增值,让每一笔消费变成财富!

你是否厌倦了仅仅购买物品或享受服务后便一无所有的消费方式&#xff1f;现在&#xff0c;消费增值的概念将彻底改变你的消费观念&#xff01;通过参与消费增值&#xff0c;你的每一笔消费都将变得更有价值&#xff01; 消费增值是一种全新的消费理念&#xff0c;它让你在购物的…

前后端验证码分析(字母计算)

样式&#xff1a; 前端&#xff1a; login.vue <template> <view class"normal-login-container"> <view class"login-form-content"> <view class"input-item flex align-center"> <view class"iconfont ic…

SpringBootApplication注解保姆级带你如何应对面试官

SpringBootApplication注解保姆级带你如何应对面试官 一介绍 在Java Spring Boot框架中&#xff0c;SpringBootApplication注解是一个组合注解&#xff0c;它由以下三个注解组成&#xff1a;SpringBootConfiguration&#xff0c;EnableAutoConfiguration和ComponentScan。 这…

绿色建筑革新,气膜球馆成为城市锻炼新热点

近年来&#xff0c;全民健身设施蓬勃发展&#xff0c;个性化球场设计逐渐取代了传统模式&#xff0c;其中备受欢迎的是新潮的绿色建筑——气膜室内球馆。这种创新的建筑形式不仅适用于传统的篮球、足球、羽毛球等常规运动&#xff0c;还可以容纳冰壶、滑雪等更为复杂的活动&…

MySQL入门实战:安装与配置基础

MySQL是一个开源的关系型数据库管理系统&#xff0c;由瑞典MySQL AB公司开发&#xff0c;目前已经被Sun Microsystems公司收购。MySQL是一个非常流行的数据库管理系统&#xff0c;它的特点是轻量级、高性能、易于使用和高度可扩展。 MySQL是一个基于客户端/服务器的系统&#…

浅谈基于能耗评价指标的医院智能配电能效管理分析

摘要&#xff1a;目的&#xff1a;为了更好地推进医院能源管理工作&#xff0c;主要利用空调系统分项能耗对上海7所三甲医院能源管理工作存在的问题进行分析。方法&#xff1a;Pearson系数被用作分析影响因素与医院总能耗的关联程度&#xff0c;再利用单位面积总能耗和空调系统…

基于Gradio的快速搭建AI算法可视化Web界面部署教程

基于Gradio的快速搭建AI算法可视化Web界面部署教程 1 Gradio简介1.1 视图框架1.2 Gradio介绍 2 功能模块2.1 概述2.2 模块介绍2.2.1 gradio.File() 上传文件2.2.2 gradio.Slider() 配置滑动条2.2.3 gr.Textbox() 文本框2.2.4 gradio.Dropdown() 建立下拉列表2.2.5 gradio.inter…

分享80个菜单导航JS特效,总有一款适合您

分享80个菜单导航JS特效&#xff0c;总有一款适合您 80个菜单导航JS特效下载链接&#xff1a;https://pan.baidu.com/s/1NgNc759Kg1of_8vR7kaj6A?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

面向对象及编程

C语言是一门面向过程的编程语言&#xff0c; C、Java这些编程语言都是面向对象。 分门别类&#xff1a;抽取事物的共性&#xff0c;将相似事物归纳为一个类别 面向的对象的核心概念&#xff1a; 类&#xff1a;就是一个事物的类别 |--属性 …