【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子)
生活随笔
收集整理的這篇文章主要介紹了
【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 載入圖片并顯示
import matplotlib.pyplot as plt import matplotlib.image as mpimg import torch import torchvision.transforms as transforms import os os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" ### 1 載入圖片并顯示 myimg = mpimg.imread('img.jpg') plt.imshow(myimg) plt.axis('off') plt.show() print(myimg.shape) # 輸出 (497, 687, 3)2 圖片數(shù)據(jù)轉(zhuǎn)化為張量
### 2 圖片數(shù)據(jù)轉(zhuǎn)化為張量 plt2tensor = transforms.ToTensor() # 實例化ToTensor() rgb_image = plt2tensor(myimg) # 進行圖片轉(zhuǎn)換 print(rgb_image[0][0]) # 輸出圖片的部分數(shù)據(jù) print(rgb_image.shape) # 輸出圖片的形狀 # torch.Size([3, 497, 687])3?定義Sobel卷積核
### 3 定義Sobel卷積核 sobelfilter = torch.tensor([[-1.0,0.0,1.0],[-2.0,0.0,2.0],[-1.0,0.0,1.0]]*3).reshape([1,3,3,3]) # 定義Sobel卷積核 print(sobelfilter)4?卷積操作
### 4 卷積操作 op = torch.nn.functional.conv2d(rgb_image.unsqueeze(0),sobelfilter,stride=3,padding=1) # 3個輸入通道,生成1哥特征圖ret = (op - op.min()).div(op.max() - op.min()) # 卷積結(jié)果進行處理 ret = ret.clamp(0.0,1.0).mul(255).int() # 將卷積結(jié)果轉(zhuǎn)化圖片 print(ret) ### 灰度圖 plt.imshow(ret.squeeze(),cmap='Greys_r') # 顯示圖片 plt.axis('off') # 不顯示坐標(biāo)軸 plt.show()總結(jié)
以上是生活随笔為你收集整理的【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Pytorch神经网络理论篇】 26
- 下一篇: python cpu_python 让c