NNDL 作业5:卷积

作业1

编程实现

在这里插入图片描述
在这里插入图片描述
**加粗样式**
在这里插入图片描述

  1. 图1使用卷积核\begin{pmatrix} 1 & -1 \end{pmatrix},输出特征图

  2. 图1使用卷积核\begin{pmatrix} 1\ -1\ \end{pmatrix},输出特征图

  3. 图2使用卷积核\begin{pmatrix} 1 & -1 \end{pmatrix},输出特征图

  4. 图2使用卷积核\begin{pmatrix} 1\ -1\ \end{pmatrix},输出特征图

  5. 图3使用卷积核\begin{pmatrix} 1 & -1 \end{pmatrix},\begin{pmatrix} 1\ -1\ \end{pmatrix},\begin{pmatrix} 1 &-1 \ -1&1 \end{pmatrix} ,输出特征图

import numpy as np
import torch
from torch import nn
from torch.autograd import Variable
from PIL import Image
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号 #有中文出现的情况,需要u'内容
# https://blog.csdn.net/weixin_40123108/article/details/83510592
file_path = 'deer.jpg'

im = np.array([[0,0,0,255,255,255],
               [0,0,0,255,255,255],
               [0,0,0,255,255,255],
               [0,0,0,255,255,255],
               [0,0,0,255,255,255],
               [0,0,0,255,255,255],
               [0,0,0,255,255,255]], dtype='float32')  # 将其转换为一个矩阵
print(im.shape[0], im.shape[1])
plt.imshow(im.astype('uint8'), cmap='gray')  # 可视化图片
plt.title('原图')
plt.show()

im = torch.from_numpy(im.reshape((1, 1, im.shape[0], im.shape[1])))
conv1 = nn.Conv2d(1, 1, (1,2), bias=False)  # 定义卷积

sobel_kernel = np.array([[-1,1]], dtype='float32')  # 定义轮廓检测算子
sobel_kernel = sobel_kernel.reshape((1, 1, 1, 2))  # 适配卷积的输入输出
conv1.weight.data = torch.from_numpy(sobel_kernel)  # 给卷积的 kernel 赋值

edge1 = conv1(Variable(im))  # 作用在图片上

x = edge1.data.squeeze().numpy()
print(x.shape)  # 输出大小

plt.imshow(x, cmap='gray')
plt.show()

在这里插入图片描述
在这里插入图片描述
2.
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
5.
在这里插入图片描述
在这里插入图片描述

(-1,+1)T:
在这里插入图片描述

在这里插入图片描述

作业2

一、概念

卷积:两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加。
**卷积核:**图像处理时,处理权值的函数。
**特征图:**使用卷积经常有多个需要找的特征,而多个找出的特征就是特征图。
**特征选择:**是指从已有的M个特征中选择N个特征使得系统的特定指标最优化,是从原始特征中选择出一些最有效特征以降低数据集维度的过程
**步长:**让一个数值在每次运算中加上某个数重复执行此项运算
**填充:**在进行卷积操作前,对原矩阵进行边界填充,也就是在矩阵的边界上填充一些值,以增加矩阵的大小
感受野:感受野的定义是卷积神经网络每一层输出的特征图上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域。

二、探究不同卷积核的作用

在这里插入图片描述
The blur kernel de-emphasizes differences in adjacent pixel values.模糊核不再强调相邻像素值的差异。
在这里插入图片描述
sobel kernels are used to show only the differences in adjacent pixel values in a particular direction .sobel 核用于仅显示特定方向上相邻像素值的差异。
在这里插入图片描述
The custom kernel is whatever you make it.自定义内核是你制作的任何东西。
在这里插入图片描述
The emboss kernel (similar to the sobel kernel and sometimes referred to mean the same) givens the illusion of depth by emphasizing the differences of pixels in a given direction.
浮雕核(类似于sobel核,有时被称为相同的意思)通过强调给定方向上像素的差异来产生深度的错觉。
在这里插入图片描述
The indentity kernel leaves the image unchanged. 缩进内核使映像保持不变。
在这里插入图片描述
sobel kernels are used to show only the differences in adjacent pixel values in a particular direction.
sobel 核用于仅显示特定方向上相邻像素值的差异。
在这里插入图片描述
An outline kernel (also called an “edge” kernel) is used to highlight large differences in pixel values.
轮廓核(也称为“边缘”核)用于突出显示像素值的巨大差异。
在这里插入图片描述
sobel kernels are used to show only the differences in adjacent pixel values in a particular direction.
sobel 核用于仅显示特定方向上相邻像素值的差异。
在这里插入图片描述
The sharpen kernel emphasizes differences in adjacent pixel values.
锐化内核强调相邻像素值的差异。
在这里插入图片描述
sobel kernels are used to show only the differences in adjacent pixel values in a particular direction.
sobel 核用于仅显示特定方向上相邻像素值的差异。

三、编程实现

1.实现灰度图的边缘检测、锐化、模糊。(必做)
原图:
在这里插入图片描述
模糊:
在这里插入图片描述
锐化:
在这里插入图片描述

边缘检测:
在这里插入图片描述
2.调整卷积核参数,测试并总结。(必做)
调整步长,用emboss:
步长=3
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ccc67de4cff4de78201fc34e039a000.pn
步长=5
在这里插入图片描述

步长=10
在这里插入图片描述
步长越高,图像越模糊。
3.使用不同尺寸图片,测试并总结。(必做)
改变尺寸:
在这里插入图片描述
模糊:
在这里插入图片描述
锐化:
在这里插入图片描述
边缘检测:
在这里插入图片描述
分辨率越低,效果越好。

4、探索更多类型卷积核。(选做)
原图:
在这里插入图片描述

均值滤波:

在这里插入图片描述
在这里插入图片描述
高斯滤波:
在这里插入图片描述
在这里插入图片描述
两者特点:滤波器中元素之和为1,输出亮度与输入基本一致;
均为低通滤波器,主要用于图像模糊/平滑处理、消除噪点;
核越大,模糊程度越大;

总结:了解到了卷积的相关知识,加深了印象,学习到了不同卷积核的作用和用法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值