机器学习(15)--HED网络预测实现(opencv+python实现边缘检测及源代码百度云资源)

article/2025/8/23 9:47:13

上一篇:机器学习(14)--经典边缘检测canny算法(计算机视觉从0到1)https://blog.csdn.net/qq_36187544/article/details/89548363

下一篇:


目录

HED网络

opencv

源代码


百度云资源:

链接:https://pan.baidu.com/s/1ET2-Ke-WsxMhRHrbur49Jg 
提取码:j8vc 

附带源码,模型文件,结构文件,测试图片都带上了,直接用即可(要先安装opencv!)

 


HED网络

HED原理基于VGG16的端对端网络,整个原理图如下:

相较于传统边缘检测方法--canny 算法的检测效果,依赖于几个阈值参数,这些阈值参数的选择,通常都是人为设置的经验值。虽然有这些阈值参数,但是最终的参数只是一组或少数几组固定的组合,所以算法的鲁棒性又会打折扣,很容易遇到边缘检测效果不理想的场景。

一篇很好的HED网络原理文章,写的短且精,上图来源:https://blog.csdn.net/u012905422/article/details/52782615


opencv

我的情况是anaconda 安装,在anaconda prompt下输入:

pip install opencv-python

不要输入pip install opencv,安装不了,而且在anaconda和pycharm直接安装时总会报错,真的无语,搞了一整天,突然发现这最简单的方法一下就OK了。系统里需要,如果装不上可以先安装试一下

版本:


源代码

这是别人训练好的网络可以直接使用,相当于这是做一个预测,此代码不可单独运行,需要配置模型文件和网络文件,见文章开头百度云。如果要进行HED网络的调整就需要详细研究了,其实HED网络并不复杂,关键是这是一个神经网络原型,需要损失函数,需要类似标签的结果计算损失函数实现逼近,这是样本数据太难做了,调整较为困难,这里会使用就行了!全网推的HED网络开山鼻祖链接:https://github.com/s9xie/hed

import cv2 as cv
import argparse
'''
利用opencv进行HED网络边缘检测
'''#设置图片、模型文件、网络文件
parser = argparse.ArgumentParser(description='This sample shows how to define custom OpenCV deep learning layers in Python. ''Holistically-Nested Edge Detection (https://arxiv.org/abs/1504.06375) neural network ''is used as an example model. Find a pre-trained model at https://github.com/s9xie/hed.')
parser.add_argument('--input', help='Path to image or video. Skip to capture frames from camera', default='001.JPG')
parser.add_argument('--prototxt', help='Path to deploy.prototxt', default='deploy.prototxt')
parser.add_argument('--caffemodel', help='Path to hed_pretrained_bsds.caffemodel',default='hed_pretrained_bsds.caffemodel')
parser.add_argument('--width', help='Resize input image to a specific width', default=500, type=int)
parser.add_argument('--height', help='Resize input image to a specific height', default=500, type=int)args = parser.parse_args()
# ! [CropLayenr]
class CropLayer(object):def __init__(self, params, blobs):self.xstart = 0self.xend = 0self.ystart = 0self.yend = 0# Our layer receives two inputs. We need to crop the first input blob# to match a shape of the second one (keeping batch size and number of channels)def getMemoryShapes(self, inputs):inputShape, targetShape = inputs[0], inputs[1]batchSize, numChannels = inputShape[0], inputShape[1]height, width = targetShape[2], targetShape[3]# self.ystart = (inputShape[2] - targetShape[2]) / 2# self.xstart = (inputShape[3] - targetShape[3]) / 2self.ystart = int((inputShape[2] - targetShape[2]) / 2)self.xstart = int((inputShape[3] - targetShape[3]) / 2)self.yend = self.ystart + heightself.xend = self.xstart + widthreturn [[batchSize, numChannels, height, width]]def forward(self, inputs):return [inputs[0][:, :, self.ystart:self.yend, self.xstart:self.xend]]
# ! [CropLayer]
# ! [Register]
cv.dnn_registerLayer('Crop', CropLayer)
# ! [Register]
# Load the model.
net = cv.dnn.readNet(cv.samples.findFile(args.prototxt), cv.samples.findFile(args.caffemodel))
kWinName = 'Holistically-Nested Edge Detection'
cv.namedWindow('Input', cv.WINDOW_NORMAL)
cv.namedWindow(kWinName, cv.WINDOW_NORMAL)
frame = cv.imread('001.JPG')
cv.imshow('Input', frame)
# cv.waitKey(0)
inp = cv.dnn.blobFromImage(frame, scalefactor=1.0, size=(args.width, args.height),mean=(104.00698793, 116.66876762, 122.67891434),swapRB=False, crop=False)
net.setInput(inp)
out = net.forward()
out = out[0, 0]
out = cv.resize(out, (frame.shape[1], frame.shape[0]))
cv.imshow(kWinName, out)
cv.imwrite('result.png', out)
cv.waitKey(0)

运行结果:


http://chatgpt.dhexx.cn/article/vD8uCpiX.shtml

相关文章

机器学习笔记 基于深度学习的边缘检测

一、Holistically-Nested Edge Detection 边缘检测是视觉工作中十分常用的技术,传统边缘检测已经包含了很多经典的诸如Canny、Robert等等,都是各有擅场,不过有一点问题,就是很多参数需要人工调试,所以深度学习研究人员提出了基于卷积神经网络的边缘检测算法。 即HED,该算…

C#处理Gauss光斑图像[通过OpenGL和MathNet]

C# 处理高斯光束的光斑图像 1 基础操作2 图片截取3 转灰度图4 SharpGL画三维点云图5 MathNet拟合,OxyPlot作图 1 基础操作 .Net平台必备VS,新建WinForm项目,项目名称Gauss,位置任选。然后就会进入窗口编辑页面,我们开…

(pytorch进阶之路)IDDPM之diffusion实现

文章目录 概述代码实现image_trian.pydef create_model_and_diffusion()def create_gaussian_diffusion()SpacedDiffusion类GaussianDiffusion类 ⭐ LOOK HERE ⭐ 边角料noise scheduling 概述 DM beat GANs作者改进了DDPM模型,提出了三个改进点,目的是…

【论文笔记】A Unified MRC Framework for Named Entity Recognition

香农科技 ACL 2020的论文笔记 代码和paper可见:https://github.com/ShannonAI/mrc-for-flat-nested-ner 文章提出了将ner看做MRC(machine reading comprehen- sion )任务,而不是当做序列标注看待。 文章认为。在序列标注的过程中,如ORG是被当…

在OpenCV中基于深度学习的边缘检测

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达本文转自:AI算法与图像处理 导读 分析了Canny的优劣,并给出了OpenCV使用深度学习做边缘检测的流程,文末有代码链接。 在这篇文章中&am…

真实的产品案例:实现文档边缘检测

向AI转型的程序员都关注了这个号👇👇👇 机器学习AI算法工程 公众号:datayx 什么是边缘检测? 边缘检测是计算机视觉中一个非常古老的问题,它涉及到检测图像中的边缘来确定目标的边界,从而分离感…

ConvLSTM官方示例

运行ConvLSTM官方例子记录(包含逐行解释): """ This script demonstrates the use of a convolutional LSTM network. This network is used to predict the next frame of an artificially generated movie which contains …

一个卷积神经网络的python实现

这几天用numpy实现了卷积神经网络,并在mnist数据集上进行了0-5五个数字的训练,全连接层的前向和反向写的肯定是对的,但卷积层不能确定,可能是对的.以后发现有错再改,卷积层在cpu上训练速度很慢,还有把代码里的Flatten换成GlobalAveragePooling以后试过一次好像错了,以后有机会再…

斯坦福NLP名课带学详解 | CS224n 第16讲 - 指代消解问题与神经网络方法(NLP通关指南·完结)

作者:韩信子ShowMeAI,路遥ShowMeAI,奇异果ShowMeAI教程地址:https://www.showmeai.tech/tutorials/36本文地址:https://www.showmeai.tech/article-detail/253声明:版权所有,转载请联系平台与作…

tpl文件如何导入ps?tpl文件笔刷怎么安装?

tpl文件如何导入ps?tpl文件笔刷怎么安装?有些笔刷格式是TPL的,这类笔刷导入方法其实非常简单,轻松几个操作即可,下面小编为大家详细介绍如何载入TPL格式笔刷。 1、准备好 .tpl 文件,然后打开PS。 2、在PS顶…

vscode中将tpl文件高亮显示

打开vscode: file --> preferences --> settings 进入settings页面 打开后输入 "files.associations": {"*.tpl": "html"}保存就可以咯

VSCode 中支持 tpl 等文件高亮渲染方法

这里以 .tpl 结尾的文件为例,其他后缀皆是如此, 点击菜单 文件->首选项->设置 输入如下代码: "files.associations": {"*.tpl": "html" }

vscode解决不识别tpl后缀文件的解决方法

vscode解决不识别tpl后缀文件的解决方法 了解tpl文件 解释: 以前用过的前端页面都是.html格式的,现在出现了.tpl文件,是template的缩写,其实就是前端页面,写的也是html。 应该是前端模板Smarty的一个格式。可以在D…

.tpl 文件高亮配置

文件-》首选项-》设置 "files.associations": {​ "*.tpl": "html"}

webpack自定义loader--编译.tpl文件

一、初始化一个项目 1、npm 初始化 npm init -y2、安装需要的依赖 package.json文件:{"name": "webpack-plugin-test","version": "1.0.0","description": "","main": "main.js&quo…

EditPlus打开.tpl文件高亮显示代码

Tools——Preferences File——Settings&syntax 在HTML下增加;tpl

opencart html模板引擎,Opencart前台HTML、tpl文件的修改,附opencart文件目录

△问题和服务可以联系微信:yangtuo1991 △文章浏览次数: 20,008 很多时候有些同学有需要修改opencart前台的一小部分样式和文字,修改版权信息、顶部和底部文字等一系列的需求、这里介绍下前台的这些 tpl文件的位置和修改, 这些模板的主题文件都会在catalog/view/theme/ 下面…

goland中读取tpl文件

近来开始研究golang,使用国人做的beego框架做页面开发,以前用pycharm开发的,所以习惯了 就采用了goland,不过有个问题,就是在做页面模版时候采用tpl后缀,需要进行设置一下。(mac系统,如果window…

让vscode编辑器支持smarty模版的TPL文件

如何让vscode支持 php的 smarty模版, 1、安装插件 该插件可以是的tpl格式的文件以html的方式显示,但是我在使用中发现安装此插件后电脑的cup会飙到很高,一会就会把vscode跑蹦掉。 2、其实我们就不用安装插件,直接在vscode中进行设…