轻松学Pytorch-详解Conv2D卷积处理
liuian 2025-05-08 19:40 60 浏览
Conv2D基本原理与相关函数
常见的图像卷积是二维卷积,而深度学习中Conv2D卷积是三维卷积,图示如下:
Pytroch中的Conv2D是构建卷积神经网络常用的函数,支持的输入数据是四维的tensor对象,格式为NCHW,其中N表示样本数目、C表示通道数目彩色图像为3,灰度图像为1、H跟W分别表示图像高与宽。它们的计算方法可以图示如下:
Conv2D在pytorch中有两个相关的API函数,分别如下:
torch.nn.Conv2d(
in_channels, // 输入通道数
out_channels, // 输出通道数
kernel_size, // 卷积核大小
stride=1, // 步长
padding=0, // 填充
dilation=1, // 空洞卷积支持
groups=1, // 分组卷积支持
bias=True, // 偏置
padding_mode='zeros' // 填0
)torch.nn.functional.conv2d(
input, // 输入数据
weight, // 卷积核
bias=None, // 偏置
stride=1, // 步长
padding=0, // 填充
dilation=1, // 空洞
groups=1 // 分组
)其中torch.nn.Conv2d主要是在各种组合的t.nn.Sequential中使用,构建CNN模型。
torch.nn.functional.conv2d更多是在各种自定义中使用,需要明确指出输入与权重filters参数。
Pytorch图像卷积处理
下面的代码演示如何使用
torch.nn.functional.conv2d实现图像的模糊、梯度、拉普拉斯等常见的图像卷积处理,代码实现与运行演示分别如下:
图像模糊(左侧为原图):
图像梯度(左侧为原图):
图像拉普拉斯(左侧为原图):
边缘提取(左侧为原图):
Pytoch也可以像OpenCV一样随意完成各种常规的图像卷积功能了!上面几个演示的源码如下所示:
import torch
import torch.nn.functional as F
import cv2 as cv
import numpy as np
def image_blur():
image = cv.imread("D:/images/1024.png", cv.IMREAD_GRAYSCALE)
h, w = image.shape
print(h, w)
cv.imshow("input", image)
img = np.reshape(image, (1, 1, h, w))
img = np.float32(img)
k = torch.ones((1, 1, 7, 7), dtype=torch.float) / 49.0
z = F.conv2d(torch.from_numpy(img), k, padding=3)
result = z.numpy()
print(result.shape)
result = np.reshape(result, (h, w))
cv.imshow("blur", np.uint8(result))
cv.waitKey(0)
cv.destroyAllWindows()
def image_gradient():
image = cv.imread("D:/images/1024.png", cv.IMREAD_GRAYSCALE)
h, w = image.shape
print(h, w)
cv.imshow("input", image)
img = np.reshape(image, (1, 1, h, w))
img = np.float32(img)
k = torch.tensor([-1, -2, -1, 0, 0, 0, 1, 2, 2], dtype=torch.float)
k = k.view(1, 1, 3, 3)
print(k.size(), k)
z = F.conv2d(torch.from_numpy(img), k, padding=1)
result = z.numpy()
print(result.shape)
result = np.reshape(result, (h, w))
cv.normalize(result, result, 0, 1.0, cv.NORM_MINMAX)
cv.imshow("gradint", np.uint8(result*255))
cv.waitKey(0)
cv.destroyAllWindows()
def image_laplian():
image = cv.imread("D:/images/1024.png", cv.IMREAD_GRAYSCALE)
h, w = image.shape
print(h, w)
cv.imshow("input", image)
img = np.reshape(image, (1, 1, h, w))
img = np.float32(img)
k = torch.tensor([-1, -1, -1, -1, 8, -1, -1, -1, -1], dtype=torch.float)
k = k.view(1, 1, 3, 3)
print(k.size(), k)
z = F.conv2d(torch.from_numpy(img), k, padding=1)
result = z.numpy()
print(result.shape)
result = np.reshape(result, (h, w))
cv.normalize(result, result, 0, 1.0, cv.NORM_MINMAX)
cv.imshow("reshape", np.uint8(result*255))
cv.waitKey(0)
cv.destroyAllWindows()
def image_edge():
image = cv.imread("D:/images/1024.png", cv.IMREAD_GRAYSCALE)
h, w = image.shape
print(h, w)
cv.imshow("input", image)
img = np.reshape(image, (1, 1, h, w))
img = np.float32(img)
k = torch.tensor([-1, 0, 0, 1], dtype=torch.float)
k = k.view(1, 1, 2, 2)
print(k.size(), k)
z = F.conv2d(torch.from_numpy(img), k, padding=0)
result = z.numpy()
print(result.shape)
result = np.reshape(result, (h-1, w-1))
cv.imshow("reshape", np.uint8(abs(result)))
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
image_edge()相关推荐
- 苹果一体机双系统怎么切换(苹果一体机双系统怎么切换按哪个键)
-
苹果一体机双系统切换方法如下:1.在苹果电脑的桌面中点击左上角的苹果图标,等待弹出序列栏。2.在弹出的下拉选项中点击系统偏好设置进入,等待跳转页面。3.跳转页面之后,在系统偏好设置的页面中点击启动磁盘...
- 2025爱奇艺vip激活码(爱奇艺会员官方激活码)
-
2022爱奇艺腾讯优酷会员,要根据具体的需求来选择。喜欢青春偶像剧类型的可以选择爱奇艺视频;喜欢一些自制综艺和自制剧的优酷视频会员是不错的选择;腾讯视频定位就是主打大IP剧和一些热门综艺的转播,一...
- ie浏览器手机版官网下载(ie游览器手机版下载)
-
如果您在使用IE浏览器时遇到无法下载的问题,以下是一些常见的解决办法:1.清除浏览器缓存:打开IE浏览器,依次点击工具(齿轮图标)->Internet选项->常规选项->...
- office2003属于什么软件(word2003属于什么软件)
-
是一套Office2003专业版的精简版,包含常用的Word、Excel、PowerPoint三个应用,使用者甚多。楼主如果有需要,请上电脑在本帖下载我的附件。我见过最多的,是2013或者以上的(因为...
- 电脑鼠标设置在哪里调(电脑鼠标在哪里去调)
-
电脑点击开始,在菜单中找到“控制面板”,点击“控制面板”进入,找到“鼠标”点击进入在打开的窗口中选择“指针”,选择指针样式,可点击浏览,找到文件夹下,查看哪些指针可选择。可按路径把喜欢的图标放进去找到...
- ie浏览器怎么下载到电脑桌面
-
工具/材料:电脑1、首先在电脑桌面里找到这台电脑,双击将它打开。2、打开之后,在里面找到吸C盘,双击将它打开。3、然后在C盘里面找到Programfiles这个文件,将此文件打开。4、打开之后,在里...
- 主板bios没有csm选项(主板没有csm怎么办)
-
对普通用户最大的区别是,符合标准的bootloader必须为UEFI保证二进制兼容。结果:32位UEFI固件只能启动32位操作系统。64位UEFI固件只能启动64位操作系统。由于历史因素、OEM政策,...
- 电脑中病毒了怎么解决(电脑中病毒了怎么解决方法)
-
电脑因为中毒而不能上网,解决办法如下:1、首先第一步就是杀毒,对一个菜鸟而言只能用杀毒软件来杀毒了,当然,因为病毒更新往往快于杀毒软件的更新速度,所以杀毒有时候是解决不了问题的额,也就是说很多毒是杀...
- 电脑主机启动一下又灭一直反复
-
故障分析:电脑开机转一下就停然后再转这是由于电脑硬件接触不良,主板或后续硬件短路,电源故障等造成的。1、内存松了或者金手指氧化这种可能性最大,很多用户都是这种方法解决的。首先我们将内存取下,取下也十分...
- 如何设开机密码 电脑(如何设置开机电脑密码)
-
方法如下1.建立开机密码。进入BIOS系统界面,点击键盘的Del按键,点击选项中的设置用户密码。设置完毕进入高级设置,点击密码选项列表的系统密码,点击保存并推出即可;2.设置系统密码。进入系统界...
- lenovo联想官方商城(联想电脑官方网站商城)
-
www.lenovo.com.cn联想集团(下称联想)是一家成立于中国、业务遍及180个市场的全球化科技公司。联想聚焦全球化发展,树立了行业领先的多元企业文化和运营模式典范,服务全球超过10亿用户。作...
- 我的世界国际版官网(我的世界国际版如何下载)
-
官网入口:https://www.lezhin.com/这是一款很多用户都在使用的观看各种漫画内容的软件,用户在使用的过程中能够快速了解到各种自己感兴趣的漫画。1可以通过搜索引擎找到植物大战僵尸2国...
- 我要qq号码免费申请(qq号申请免费申请号码官网)
-
你可以到腾讯官方网站,去免费注册一个QQ,可以不交费的,是有免费的账号和密码。操作方法:1.打开手机qq,用手指轻点qq图标即可。进入qq后,会进入登录或注册新用户页面。点击新用户,进入注册页面2....
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
