Pytorch 实现sobel算子的卷积操作详解


Posted in Python onJanuary 10, 2020

卷积在pytorch中有两种实现,一种是torch.nn.Conv2d(),一种是torch.nn.functional.conv2d(),这两种方式本质都是执行卷积操作,对输入的要求也是一样的,首先需要输入的是一个torch.autograd.Variable()的类型,大小是(batch,channel, H,W),其中batch表示输入的一批数据的数目,channel表示输入的通道数。

一般一张彩色的图片是3,灰度图片是1,而卷积网络过程中的通道数比较大,会出现几十到几百的通道数。H和W表示输入图片的高度和宽度,比如一个batch是32张图片,每张图片是3通道,高和宽分别是50和100,那么输入的大小就是(32,3,50,100)。

如下代码是卷积执行soble边缘检测算子的实现:

import torch
import numpy as np
from torch import nn
from PIL import Image
from torch.autograd import Variable
import torch.nn.functional as F
 
 
def nn_conv2d(im):
  # 用nn.Conv2d定义卷积操作
  conv_op = nn.Conv2d(1, 1, 3, bias=False)
  # 定义sobel算子参数
  sobel_kernel = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], dtype='float32')
  # 将sobel算子转换为适配卷积操作的卷积核
  sobel_kernel = sobel_kernel.reshape((1, 1, 3, 3))
  # 给卷积操作的卷积核赋值
  conv_op.weight.data = torch.from_numpy(sobel_kernel)
  # 对图像进行卷积操作
  edge_detect = conv_op(Variable(im))
  # 将输出转换为图片格式
  edge_detect = edge_detect.squeeze().detach().numpy()
  return edge_detect
 
def functional_conv2d(im):
  sobel_kernel = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]], dtype='float32') #
  sobel_kernel = sobel_kernel.reshape((1, 1, 3, 3))
  weight = Variable(torch.from_numpy(sobel_kernel))
  edge_detect = F.conv2d(Variable(im), weight)
  edge_detect = edge_detect.squeeze().detach().numpy()
  return edge_detect
 
def main():
  # 读入一张图片,并转换为灰度图
  im = Image.open('./cat.jpg').convert('L')
  # 将图片数据转换为矩阵
  im = np.array(im, dtype='float32')
  # 将图片矩阵转换为pytorch tensor,并适配卷积输入的要求
  im = torch.from_numpy(im.reshape((1, 1, im.shape[0], im.shape[1])))
  # 边缘检测操作
  # edge_detect = nn_conv2d(im)
  edge_detect = functional_conv2d(im)
  # 将array数据转换为image
  im = Image.fromarray(edge_detect)
  # image数据转换为灰度模式
  im = im.convert('L')
  # 保存图片
  im.save('edge.jpg', quality=95)
 
if __name__ == "__main__":
  main()

原图片:cat.jpg

Pytorch 实现sobel算子的卷积操作详解

结果图片:edge.jpg

Pytorch 实现sobel算子的卷积操作详解

以上这篇Pytorch 实现sobel算子的卷积操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
动态创建类实例代码
Oct 07 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
python实现基本进制转换的方法
Jul 11 Python
python+opencv实现动态物体识别
Jan 09 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 #Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 #Python
解决Pytorch 加载训练好的模型 遇到的error问题
Jan 10 #Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 #Python
Pytorch 保存模型生成图片方式
Jan 10 #Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 #Python
python如何获取apk的packagename和activity
Jan 10 #Python
You might like
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
2016/05/10 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
捐款倡议书范文
2014/02/02 职场文书
美术教学感言
2014/02/22 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
班级文化标语
2014/06/23 职场文书
花坛标语大全
2014/06/30 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
党员作风建设自查报告
2014/10/23 职场文书
爱国主义影片观后感
2015/06/18 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle