使用 Python 進行卷積?
影像識別過去常常使用更簡單的方法,例如線性迴歸和相似性比較。結果顯然不太好,即使是識別手寫字母這樣簡單的任務也證明很困難。卷積神經網路 (CNN) 旨在透過提供一種計算成本低廉的方法來模擬人腦感知影像時的神經活動,從而超越我們傳統的方法。
卷積神經網路概述

與我們識別不同物體的方式非常相似,計算機演算法需要遍歷數百萬張影像,才能能夠概括輸入並對其從未見過的影像做出判斷。
計算機將每張影像都視為數字的二維陣列,稱為畫素。為了識別影像中的物體,計算機使用一種特殊的人工神經網路:卷積神經網路 (CNN)。CNN 的名稱來源於網路中最重要的操作之一:卷積。
在卷積神經網路中,每一層都組織成寬度、高度和深度。卷積是 CNN 的主要部分,它組合兩個函式以建立第三個函式(合併兩組資訊)。這意味著考慮一個(影像)卷積,我們只需將兩個矩陣逐元素相乘,然後求和。
卷積是影像處理中的一個三步過程 -
我們獲取輸入影像。
我們將應用於輸入影像的核心矩陣。
以及用於儲存輸入影像與核心卷積輸出的最終影像。
下面是使用 opencv 實現 Sobel 濾波器的小例子,Sobel 濾波器是一種用於邊緣檢測的影像處理濾波器。
示例程式碼
import cv2
import numpy as np
img = cv2.imread('beach.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY).astype(float)
edge_x = cv2.Sobel(img,cv2.CV_64F,1,0,ksize = 3)
edge_y = cv2.Sobel(img,cv2.CV_64F,0,1,ksize = 3)
edge = np.sqrt(edge_x ** 2 + edge_y ** 2)
# image can be normalized to
# fit into 0..255 color space
cv2.imwrite('beach_convol.jpg', edge)輸入影像

輸出影像

廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP