[C#]winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法

【训练源码】

https://github.com/albrateanu/LYT-Net

【参考源码】

https://github.com/hpc203/Low-Light-Image-Enhancement-onnxrun

【算法介绍】

一、研究动机

1.研究目标

研究的目标是提出一种轻量级的基于YUV Transformer 的网络(LYT-Net),用于低光照图像增强。与传统的Retinex模型不同,LYT-Net利用YUV色彩空间的亮度(Y)和色度(U和V)自然分离的特性,简化了图像光照和颜色信息的解耦任务。

2.过去方法

过去的低光照图像增强方法主要分为两类:

  1. 直接映射:使用卷积神经网络(CNN)直接将低光照图像映射为正常光照图像,此类方法往往忽视了人类对颜色感知的特点,缺乏理论解释。
  2. Retinex理论:基于Retinex理论采用更复杂的多阶段训练流程,利用不同的卷积神经网络进行颜色图像分解、去噪和光照调整。此类方法更具理论可解释性,但其复杂性和多阶段训练要求带来了显著的挑战。

3.本文方法

本文提出的LYT-Net基于Transformer结构,通过将输入的RGB图像转换为YUV色彩空间,分别增强亮度和色度信息。主要模块包括多头自注意力(MHSA)模块、多阶段压缩和激励融合(MSEF)模块和通道去噪器(CWD)模块。利用YUV色彩空间的分离特性,LYT-Net专注于提高图像的亮度和细节,同时保留颜色信息。

4.优势及创新点

LYT-Net在LLIE任务上实现了SOTA性能的同时模型参数量和FLOPS显著低于一般方法

Low-Light Image Enhancement on LOL Rank 5

  1. 轻量级设计:LYT-Net结构简单,计算复杂度低,参数数量少,适用于资源受限的应用场景。
  2. 色彩空间分离:利用YUV色彩空间分离亮度和色度,增强图像的可视性和细节,而不影响颜色信息。
  3. 混合损失函数:设计了一个新的混合损失函数,提高了模型的训练效率和增强能力。

二、算法主要思想

算法框架

LYT-Net采用双路径方法,将色度和亮度视为独立的实体,以帮助模型更好地理解光度调整和降噪恢复之间的区别。 具体实现方式如下:

亮度通道Y通过卷积和池化提取特征,然后通过MHSA模块进行增强。色度通道U和V通过CWD模块进行降噪,保持纹理细节。增强后的色度通道U和V重新组合并通过MSEF模块处理,增强输入特征的空间和通道特征。最终与亮度通道Y进行拼接,通过一组卷积层得到高质量的增强图像。

模型的混合损失计算公式如下,α1到α6是用于平衡各组成部分损失函数的超参数:

损失函数

损失从左到右依次为平滑L1损失(避免对异常值过度敏感,增强鲁棒性)、感知损失(监督人眼视觉感知的高层特征)、直方图损失(对齐真实和预测图像的像素数量分布)、PSNR损失(控制噪声)、颜色失真损失(对齐真实和预测图像的色彩)、SSIM损失(结构相似性,图像保真度)。

【界面展示】

【效果演示】

 

【C#部分调用代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;namespace FIRC
{public partial class Form1 : Form{Mat src = new Mat();LytNet yn = new LytNet();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";openFileDialog.RestoreDirectory = true;openFileDialog.Multiselect = false;if (openFileDialog.ShowDialog() == DialogResult.OK){src = Cv2.ImRead(openFileDialog.FileName);pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(src);}}private void button2_Click(object sender, EventArgs e){if(pictureBox1.Image==null){return;}Stopwatch sw = new Stopwatch();sw.Start();var result = yn.Inference(src);sw.Stop();this.Text = "耗时" + sw.Elapsed.TotalSeconds + "秒";pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(result); //Mat转Bitmap}private void Form1_Load(object sender, EventArgs e){yn.LoadWeights(Application.StartupPath+ "\\weights\\lyt_net_lolv2_real_320x240.onnx");}private void btn_video_Click(object sender, EventArgs e){var detector = new LytNet();detector.LoadWeights(Application.StartupPath + "\\weights\\lyt_net_lolv2_real_320x240.onnx");VideoCapture capture = new VideoCapture(0);if (!capture.IsOpened()){Console.WriteLine("video not open!");return;}Mat frame = new Mat();//var sw = new Stopwatch();//int fps = 0;while (true){capture.Read(frame);if (frame.Empty()){Console.WriteLine("data is empty!");break;}//sw.Start();var result = detector.Inference(frame);//sw.Stop();//fps = Convert.ToInt32(1 / sw.Elapsed.TotalSeconds);//sw.Reset();//显示结果Cv2.ImShow("Result", result);int key = Cv2.WaitKey(10);if (key == 27)break;}capture.Release();}}
}

【测试环境】

vs2019
netframwork4.7.2
opencvsharp==4.8.0
onnxruntime==1.16.2
模型都在FIRC\bin\x64\Debug\weights
测试图片都在FIRC\bin\x64\Debug\weights
下载源码后一般打开直接可以运行但是偶尔也可能报错,如果报错可以参考博文blog.csdn.net/FL1623863129/article/details/139207146

【视频演示】

C# winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法_哔哩哔哩_bilibili【测试环境】vs2019netframwork4.7.2opencvsharp==4.8.0onnxruntime==1.16.2模型都在FIRC\bin\x64\Debug\weights测试图片都在FIRC\bin\x64\Debug\weights博文地址:https://blog.csdn.net/FL1623863129/article/details/139653895更多信息参考博文, 视频播放量 5、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,C++使用纯opencv部署yolov9的onnx模型,C和C++的区别竟然是这样!看完我瞬间悟了,C语言、C++和C#的区别竟是这样,看完我瞬间懂了!,使用C#的winform部署yolov8的onnx实例分割模型,使用C++部署yolov8的onnx和bytetrack实现目标追踪,labelme json转yolo工具用于目标检测训练数据集使用教程,使用C++部署yolov9的tensorrt模型进行目标检测,yolov7部署在ros机器人操作系统视频演示,用opencv和onnxruntime去部署yolov5-7-8icon-default.png?t=N7T8https://www.bilibili.com/video/BV1YD421M7R5/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

【C#算法实现源码下载】

https://download.csdn.net/download/FL1623863129/89429033

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

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

相关文章

你知道古代青铜器的原色是什么吗?

在中国悠久的历史中,青铜器作为中华文明的瑰宝,一直以其独特的艺术魅力和深厚的文化内涵吸引着世人的目光。然而,对于大多数人来说,青铜器的形象往往与电视剧中的描绘有所出入。那些在剧中常见的青绿色青铜器,让许多观…

docker-compose启动oracle11、并使用navicat进行连接

一、docker-compose.yml version: 3.9 services:oracle:image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11grestart: alwaysprivileged: truecontainer_name: oracle11gvolumes:- ./data:/u01/app/oracleports:- 1521:1521network_mode: "host"logging:d…

三篇卫星切换的论文

目录 一、Energy-Aware Satellite Handover based on Deep Reinforcement Learning 1、题目翻译 2、来源 3、内容 二、A Reliable Handover Strategy with Second Satellite Selection in LEO Satellite Networks 1、题目翻译 2、来源 3、内容 三、User Grouping-Based…

nginx ws长连接配置

nginx ws长连接配置 http根节点下配上 map $http_upgrade $connection_upgrade {default upgrade; close;}如下: server服务节点下,后端接口的代理配置 proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connec…

vue2文件下载和合计表格

vue2文件数据不多可以直接下载不需要后端的时候 1.首先&#xff0c;确保你已经安装了 docx 和 file-saver 库 npm install file-saver npm install docx file-saver2.全部代码如下 <template><a-modaltitle"详情"width"80%"v-model"visi…

python的a[:2]

数据准备 import numpy as np X np.array([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11],[12,13],[14,15],[16,17],[18,19]]) print(X)形成矩阵 print (“X[: 2]:”, X[: 2]) ### :表示索引 0至1行&#xff1b;

MySQL日常问题-行列互换

问题 行列互换 场景1 行转换列 1、表结构和数据 /*Navicat Premium Data TransferSource Server : 本地Source Server Type : MySQLSource Server Version : 80027Source Host : localhost:3306Source Schema : schoolTarget Server Type :…

windows 环境下使用git命令导出差异化文件及目录

一、找出差异化的版本&#xff08;再此使用idea的show history&#xff09; 找到两个提交记录的id 分别为&#xff1a; 二、使用git bash执行命令&#xff08;主要使用 tar命令压缩文件&#xff09; 输出结果&#xff1a;

“人事助理转产品经理”历险记

​好久没写就业喜报了 去年太忙&#xff0c;年后了&#xff0c;必须给大家把同学们就业的情况梳理一下分享出来。希望对大家有所帮助。 同学档案 原岗位&#xff1a;HR 地点&#xff1a;西安 工作年限&#xff1a;2年 转岗级别&#xff1a;中级产品经理 转岗工资&#xff1…

Linux时间子系统2: clock_gettime的VDSO机制分析

在之前分析clock_gettime的文章中接触到了VDSO&#xff0c;本篇文章是对VDSO的学习总结&#xff0c;借鉴了很多前人的经验。 1. 什么是VDSO vDSO:virtual DSO(Dynamic Shared Object)&#xff0c;虚拟动态共享库&#xff0c;内核向用户态提供了一个虚拟的动态共享库。在 Linux …

Vue.js结合ASP.NET Core构建用户登录与权限验证系统

1. 环境准备2. 创建项目3. Vue配置步骤一: 安装包步骤二: 配置文件步骤三: 页面文件 4. 后台配置 在本教程中&#xff0c;我将利用Visual Studio 2022的强大集成开发环境&#xff0c;结合Vue.js前端框架和ASP.NET Core后端框架&#xff0c;从头开始创建一个具备用户登录与权限验…

恭喜!X医生斩获英国伦敦大学学院访问学者邀请函

伦敦大学学院&#xff08;University College London&#xff0c;简称&#xff1a;UCL&#xff09;&#xff0c;1826年创立于英国伦敦&#xff0c;是一所公立研究型大学。伦敦大学联盟的创校学院、罗素大学集团和欧洲研究型大学联盟创始成员&#xff0c;也是金三角名校和G5之一…

电商开发者必读:微店商品详情API接口全解析

微店作为一个流行的电商平台&#xff0c;提供了丰富的API接口供开发者使用。详细介绍商品详情API接口的使用方法&#xff0c;帮助开发者快速获取商品信息&#xff0c;实现商品信息的自动化展示和管理。 1. 接口简介 微店商品详情API接口允许开发者通过商品ID获取商品的详细信…

银行业信息技术外包(ITO)深度解析:现状、挑战、业务分类与协同策略

一、引言 最近有朋友在咨询关于银行业信息技术外包&#xff08;ITO&#xff09;这块业务&#xff0c;同时也在网上看到了关于银行业信息技术外包&#xff08;ITO&#xff09;的相关信息&#xff0c;今天正好有时间&#xff0c;通过采集的相关信息结合自己的相关工作接触到的相关…

云原生应用开发培训,开启云计算时代的新征程

在云计算时代&#xff0c;云原生应用开发技术已经成为IT领域的热门话题。如果您想要转型至云原生领域&#xff0c;我们的云原生应用开发培训将帮助您开启新征程。 我们的课程内容涵盖了云原生技术的基础概念、容器技术、微服务架构、持续集成与持续发布&#xff08;CI/CD&#…

Android低代码开发 - InputMenuPanelItem详解

我们知道MenuPanel是一个菜单面板容器&#xff0c;它里面可以放各式各样的菜单和菜单组。今天我们就来详细讲解输入菜单这个东西。 InputMenuPanelItem源码 package dora.widget.panel.menuimport android.content.Context import android.text.Editable import android.text…

怎么写自动注册苹果ID的工具,会用到哪些源代码?

在数字化时代&#xff0c;苹果ID成为了连接苹果生态系统中各项服务的关键桥梁&#xff0c;然而&#xff0c;手动注册苹果ID的过程往往繁琐且耗时&#xff0c;因此&#xff0c;开发一款能够自动注册苹果ID的工具成为了许多开发者的追求。 本文将科普如何编写这样的工具&#xf…

PFC旁路二极管、继电器驱动电路以及PFC主功率

R001和R002以及R003三个电阻作用是限放X电容上的电 整流桥串联两个BJ1和BJ2 电容C3:给整流桥储能&#xff0c;给后续llc供电 PFC工作是正弦波上叠加高频电流 PFC功率部分 2个PFC电感&#xff08;选择两个磁芯骨架小&#xff0c;有利于散热&#xff09;、2个续流二极管&…

在亚马逊云上部署WordPress:一个完整的LAMP环境安装教程

什么是LAMP LAMP是一个流行的开源软件堆栈&#xff0c;用于网站和网络应用程序的开发和部署。LAMP是几个主要组件的首字母缩写&#xff0c;包括&#xff1a; Linux&#xff1a;操作系统层&#xff0c;LAMP通常部署在Linux操作系统上&#xff0c;但它也可以使用其他类似Unix的…

t265 jetpack 6 px4 ros2

Ubuntu22.04 realsenseSDK2和ROS2Wrapper安装方法,包含T265版本踩坑问题_ros2 realsense-CSDN博客 210 git clone https://github.com/IntelRealSense/librealsense.git 212 git branch 215 git tag 218 git checkout v2.51.1 219 git branch 265 git clone https://…