[C#]使用ONNXRuntime部署一种用于边缘检测的轻量级密集卷积神经网络LDC

源码地址:

github.com/xavysp/LDC

LDC: Lightweight Dense CNN for Edge Detection算法介绍:

由于深度学习方法的快速发展,近年来,用于执行图像边缘检测的卷积神经网络(CNN)模型爆炸性地传播。但边缘检测的大多数工作都致力于通过设计非常深入的网络来实现更高的度量(即ODS、OIS、AP),这导致了计算操作数量的增加。遗憾的是,这些边缘检测方法对于低容量设备和现实世界的应用都不实用。考虑到上述缺点,本文提出了一种新的轻量级结构LDC——用于边缘检测的轻量级密集CNN模型。它旨在成为现实世界应用程序的实用网络,它可以自适应地学习关注高频信息的最有价值的特征。所提出的体系结构基于DexiNed,但为了在性能和适用性之间寻求更好的折衷,考虑了较小的滤波器尺寸和紧凑的模块。作为所提出的修改的结果,获得了一个参数小于1M的模型,并且比大多数最先进的方法轻。

贡献可以总结如下:

• 提出了一种轻量级 CNN 架构,它只有 674K 个参数,而 DexiNed 中有 35M 个参数。

 • 与最先进的边缘检测器(参数少于1M)进行了广泛的比较研究。本文完全致力于边缘检测,即所有考虑进行定量比较的模型都使用 BIPED、MDBD 和新的 BRIND 数据集来训练和验证模型。此外,每个模型都使用其他数据集进行交叉验证。

• 进行深入的消融研究,直至达到稳健的LDC。

效果:

部分实现代码:

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();LDCManager ld = new LDCManager();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;}var resultMat = ld.Inference(src);pictureBox2.Image= OpenCvSharp.Extensions.BitmapConverter.ToBitmap(resultMat); //Mat转Bitmap}private void Form1_Load(object sender, EventArgs e){ld.LoadWeights(Application.StartupPath+ "\\weights\\LDC_640x360.onnx");}private void btn_video_Click(object sender, EventArgs e){}}
}

测试环境:

vs2019

opencvsharp4.8.0
onnxruntime1.16.3

视频演示:

源码下载地址:

 参考文献:

1、blog.csdn.net/weixin_49183141/article/details/134377040

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

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

相关文章

【42页动态规划学习笔记分享】动态规划核心原理详解及27道LeetCode相关经典题目汇总

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

10 标准库的硬件I2C驱动mpu6050模块

阅读引言:本文只是给大家分享硬件I2C读取mpu6050加速度, 角速度, 温度的代码。 #ifndef __MPU6050_H #define __MPU6050_Hvoid MPU6050_WriteReg(uint8_t RegAddress, uint8_t Data); uint8_t MPU6050_ReadReg(uint8_t RegAddress);void MPU6…

计算机视觉工程师就业前景如何

计算机视觉主要涵盖了图像处理、模式识别等多个领域,可以应用到很多行业中。随着人工智能技术的快速发展,计算机视觉作为其中的重要分支之一,其就业前景非常广阔。 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国…

Sensor Demosaic IP 手册PG286笔记

《 UG1449 Multimedia User Guide》中包含了大量的多媒体IP简介。 本IP 用于对bayer RGB(每个pixel只有单个R/G/B)做去马赛克处理,恢复成每个pixel点都有完整的RGB值。通过axi接口配置IP内部erg。 1、算法手册中的描述 提到了几种插值算法&…

MySQL基础笔记(1)基础理论

一.基本概念 DB:数据库,存储数据的仓库,数据是有组织地进行存储DBMS:操纵和管理数据库的大型软件 SQL:结构化查询语言,操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准 &…

ref和reactive的区别

理解: 1.ref是定义简单类型 和单一的对象 2.reactive 定义复杂的类型 梳理文档: ref和reactive都是Vue.js 3.x版本中新增的响应式API,用于实现组件的数据响应式更新。它们的主要区别如下: 1. 数据类型不同:ref用于包…

React 18 新增的钩子函数

React 18 引入了一些新的钩子函数,用于处理一些常见的场景和问题。以下是 React 18 中引入的一些新钩子函数以及它们的代码示例和使用场景: useTransition: 代码示例:import { useTransition } from react;function MyComponent()…

关于Python里xlwings库对Excel表格的操作(二十四)

这篇小笔记主要记录如何【如何使用xlwings库中的“api”类设置单元格边界线型、粗细、颜色】。前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安装导入xlwings库;…

消息队列中间件的简述以及比较

文章目录 引言一、RabbitMQ的简单介绍二、ActiveMQ的简单介绍三、RocketMQ的简单介绍四、Kafka的简单介绍五、各个中间件对比总结参考文档 引言 上文简单讲述了何为消息队列和消息队列的特点(优点),本文为大家介绍一下各个消息队列中间件的特…

C++的面向对象学习(9):文件操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、类的封装的多文件实现回顾二、文件操作1.对文件进行操作需要头文件<fstream>2.操作文件的三大类方法&#xff1a;读、写、读写 三、实现文本文件的读、写…

《2023年企业IoT和OT威胁报告》:物联网恶意软件攻击增长400%

内容概括&#xff1a; 物联网&#xff08;IoT&#xff09;设备无疑改变了我们生活、工作和管理运营技术&#xff08;OT&#xff09;环境的方式。总体而言&#xff0c;到2027年&#xff0c;全球物联网设备数量预计将超过290亿&#xff0c;比2023年的167亿大幅增加。设备和智能技…

SiteGround 注册无法接收短信验证码问题的解决方法

在购买SiteGround后&#xff0c;有时会出现需要进行账号验证的情况&#xff0c;要求通过短信或电话完成验证。然而&#xff0c;有些用户无论如何操作都无法收到短信验证码。以下是解决这个问题并成功完成服务器购买的方法。 Thank You for Your Purchase! Lets Verify Your Ord…

虚拟专线网络(IP-VPN)

虚拟专线网络(IP-VPN)&#xff0c;因为它的安全性和可靠性。通过亚洲领先的 IP VPN 提供商。享受更高的可管理性和可扩展性&#xff0c;在多个站点之间交付 IP 流量或数据包&#xff0c;拥有亚太地区最大的 IP 骨干网。 1&#xff0c;保证正常运行时间&#xff0c;在网络链路发…

C++数据结构-栈

目录 栈顺序栈链栈 栈 栈是允许在表的一端进行插入和删除的线性表。表中允许插入删除的一端是栈顶&#xff0c;栈顶的当前位置是动态变化的&#xff1b;不允许插入和删除的一端是栈底&#xff0c;栈底的位置是不变的。当表中没有元素时称为空栈&#xff0c;插入数据的运算称为…

字符串与模拟法

加密英文 输入一个字符串可用getline(cin,数组名) 字典序 在字符串中寻找子字符串 分糖果 代码 猴子选大王 代码 如果n号猴子被选中&#xff0c;则使得n号的猴子变成false&#xff0c;未出局的猴子为true。 if(pn1) p1;这个是将超出的下标重新变回1号&#xff0c;使其重新循…

2024任务驱动Python程序设计讲课提纲

文章目录 为何采用任务驱动&#xff1f;任务驱动Python程序设计课程概述项目一&#xff1a;Python基础实战任务1&#xff1a;个人信息管理器1. 思路解析2. 编程实现3. 知识讲解4. 拓展练习5. 总结提高 项目二&#xff1a;模块化编程与函数设计任务1&#xff1a;简易日历模块开发…

JAVA选择判断

一、判断题 Java的字符类型采用的是Unicode编码。 ( T ) Java应用程序的主类必须是public类。( F ) 在一个源文件中只能有一个类。&#xff08; F &#xff09; Java应用程序必须要有主类。( F ) 在Java中&#xff0c;输出格式字符串时&#xff0c;也可以利用printf方法进…

18. Mysql 存储过程,实现动态数据透视

文章目录 概述常见操作创建存储过程存储过程局部变量定义和赋值查看存储过程删除存储过程调用存储过程 示例-动态数据透视详细讲解总结参考资料 概述 Mysql 存储过程是一组预先编译的 sql 语句集合&#xff0c;它们被存储在数据库中&#xff0c;并可以被多次调用执行。存储过程…

结构体:修改默认对齐数、结构体传参

//——————7.修改默认对齐数 #pragma&#xff1a;预处理指令&#xff0c;可以改变我们的默认对齐数。 //#include <stdio.h> //#pragma pack(8)//设置默认对齐数为8//设置的开始 //struct S1 //{ // char c1; // int i; // char c2; //}; //#prag…

PromQL语法

PromQL&#xff08;Prometheus Query Language&#xff09;是 Prometheus 内置的数据查询语言&#xff0c;它能实现对事件序列数据的查询、聚合、逻辑运算等。它被广泛应用在 Prometheus 的日常应用当中&#xff0c;包括对数据查询、可视化、告警处理当中。简单地说&#xff0c…