卷积神经网络边缘识别

为什卷积神经网络能够识别图片呢?是基于图片相似度比较,两张图片的点击越大说明两张图片越像,比如我们那狗胡子的图片去比较,如果相似度很高,就是认为这个动物更像狗。点积越大,图片越相似,这个比较好理解,图片在计算机中存储就是位图,每个像素通过 0、1 来表示,如果两张图一样,把所有对应的元素相乘然后结构相加,和一定是最大的。通过修改卷积核的值可以识别到图像的特征,卷积神经网络在训练过程会不断的更新参数值,最终让模型的输出与损失函数之间的差值最小。
在训练完成卷积神经网络中,通常第一层会进行边缘的识别,而后边每一层会识别更抽象的特征。通过一个简单的例子我们看一下 Sobel矩阵检测图片的边缘。一共三张图,原始图片、识别水平边缘图片、识别垂直方向边缘图片
在这里插入图片描述

from PIL import Image
import torchvision.transforms as transforms# Load an image
image_path = 't.jpg'
image = Image.open(image_path).convert('L')  # Convert to grayscale# Transform to tensor
transform = transforms.ToTensor()
image_tensor = transform(image).unsqueeze(0)  # Shape [1, 1, H, W] batch,channel,height,widthimport torch
import torch.nn.functional as F# Define the Sobel filters as PyTorch tensors
sobel_x = torch.tensor([[-1., 0., 1.],[-2., 0., 2.],[-1., 0., 1.]]).reshape((1, 1, 3, 3))sobel_y = torch.tensor([[-1., -2., -1.],[ 0.,  0.,  0.],[ 1.,  2.,  1.]]).reshape((1, 1, 3, 3))sobel_x, sobel_y = sobel_x.float(), sobel_y.float()# Apply the filters using conv2d
edges_x = F.conv2d(image_tensor, sobel_x, padding=1)
edges_y = F.conv2d(image_tensor, sobel_y, padding=1)# Calculate the magnitude of the gradients
edges = torch.sqrt(edges_x**2 + edges_y**2)import matplotlib.pyplot as plt
import numpy as np# Function to convert tensor to image for plotting
def tensor_to_image(tensor):return tensor.squeeze(0).squeeze(0).numpy()# Plotting
fig, ax = plt.subplots(1, 3, figsize=(12, 5))
ax[0].imshow(tensor_to_image(image_tensor), cmap='gray')
ax[0].set_title('Original Image')
ax[0].axis('off')ax[1].imshow(tensor_to_image(edges_x), cmap='gray')
ax[1].set_title('Edges X')
ax[1].axis('off')ax[2].imshow(tensor_to_image(edges_y), cmap='gray')
ax[2].set_title('Edges Y')
ax[2].axis('off')plt.show()

在网络训练过程中,网络是不知道 Sobel 这个矩阵的,它完全是通过学习对卷积核的参数进行更新,从而减少与损失函数之间的差值。

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

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

相关文章

ASP.NET仪器设备管理系统设计与实现

摘 要 文中以某中小型企业的设备管理为例,对设备管理系统的设计与应用进行研究,旨在通过设备管理系统提高内部设备的利用率及实现其最大的经济效益。文中首先对设备管理的现状及其重要性进行了分析,分析实现设备管理信息系统的必要性与可行…

租赁小程序开发搭建支持时租日租月租

租赁小程序开发搭建支持时租日租月租 一款开源版的小程序,专为物品租赁服务设计,能满足客户在各种租赁场景中的需求。 该程序支持时租、日租、夜租等多种租赁方式,并配备了DIY页面和分销系统。用户可以通过平台轻松租赁商品,支付…

MySql软件安装

1.打开mysql官网网址 MySQL :: Download MySQL Community Server 2.本次针对版本8的图形化界面安装,下载成功后接下来对MySQL进行安装 3.图形化下载后有一个MSI文件 4.我们安装典型即可,选择第一个 5.选择数据库信息存放的路径,我默认放在C盘…

区块链的跨链交互:从学校间交流看跨链技术

区块链是一种去中心化的分布式账本技术,它通过加密学和共识机制来确保数据的安全性和不可篡改性。每个区块链就像一所独立的学校,有自己的制度、学生和重点专业。它们各自运行,有时在同一领域展开不同的活动。随着区块链技术的不断发展&#…

宝塔面板各种疑难杂症处理命令教程

下载地址:宝塔面板各种疑难杂症处理命令教程 这份宝塔面板各种疑难杂症处理命令教程,可以解决市面上遇到的各种难题,建议有技术能行的下载使用,小白也可以下载来学习可以帮助你解决宝塔面板遇到的各种难题

ssm123基于java web的网上书城系统的设计与实现+vue

基于java web的网上书城系统的设计与实现vue 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,商品交易当然也不能排除在外,随着商品交易管理的不断成熟,它彻底改变了…

快团团新人怎么找供货团长?免费教程一学就会!

作为快团团的新手,想要寻找供货团长,可以按照以下步骤进行: 打开微信:首先,在您的手机上打开微信应用。 搜索快团团:在微信顶部的搜索框中输入“团长运营之家”,选择出现的“团长运营之家”公号…

WIFI模块的AT指令联网数据交互--第十天

1.1.蓝牙,ESP-01s,Zigbee, NB-Iot等通信模块都是基于AT指令的设计 初始配置和验证 ESP-01s出厂波特率正常是115200, 注意:AT指令,控制类都要加回车,数据传输时不加回车 1.2.上电后,通过串口输出一串系统…

pytest教程-44-钩子函数-pytest_report_collectionfinish

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_report_header钩子函数的使用方法,本小节我们讲解一下pytest_report_collectionfinish钩子函数的使用方法。 pytest_report_collectionfinish 钩子函数在 pytest 完成所有测…

汇聚荣科技:拼多多开店时后期押金可以退吗?

在电商领域,拼多多以其独特的团购模式迅速崛起,吸引了众多商家入驻。对于这些商家而言,了解平台的各项费用政策尤为重要,其中押金的退还问题是大家关注的焦点之一。那么,拼多多开店时后期押金可以退吗?答案是肯定的。…

5月13号作业

使用消息队列实现的2个终端之间的互相聊天 并使用信号控制消息队列的读取方式: 当键盘按ctrlc的时候,切换消息读取方式,一般情况为读取指定编号的消息,按ctrlc之后,指定的编号不读取,读取其他所有编号的消息…

simulink-仿真以及PID参数整定/PID tuner 的使用流程

控制器搭建与参数整定 搭建一个前馈PID控制器控制系统PID tuner使用 一个懂点控制但不多的小白,因为需要利用simulink仿真,所以不得不学习一些仿真的知识,这篇文章适合和我一样的新手入门,有理解错误的地方希望大手们能够指出来共…