การจดจำรูปภาพเคยใช้วิธีการที่ง่ายกว่ามาก เช่น การถดถอยเชิงเส้นและการเปรียบเทียบความคล้ายคลึงกัน เห็นได้ชัดว่าผลลัพธ์ไม่ดีนัก แม้แต่งานง่าย ๆ ในการจดจำตัวอักษรที่เขียนด้วยลายมือก็พิสูจน์ได้ยาก Convolution neural network (CNNs) ควรจะเป็นขั้นตอนที่เพิ่มขึ้นจากสิ่งที่เราทำตามปกติโดยเสนอวิธีการคำนวณราคาถูกในการจำลองกิจกรรมประสาทของสมองมนุษย์อย่างหลวม ๆ เมื่อรับรู้ภาพ
ภาพรวมโครงข่ายประสาทเทียม
คล้ายกับที่เรารู้จักวัตถุต่างๆ กันมาก อัลกอริทึมของคอมพิวเตอร์จำเป็นต้องตรวจสอบรูปภาพนับล้านก่อนที่จะสามารถสรุปข้อมูลทั่วไปและตัดสินใจเกี่ยวกับภาพที่ไม่เคยเห็นมาก่อน
คอมพิวเตอร์มองเห็นทุกภาพเป็นอาร์เรย์ 2 มิติของตัวเลข หรือที่เรียกว่าพิกเซล ในการระบุวัตถุในภาพ คอมพิวเตอร์ใช้เครือข่ายประสาทเทียมชนิดพิเศษ:โครงข่ายประสาทเทียม (CNN) CNN มาจากการดำเนินการที่สำคัญที่สุดอย่างหนึ่งในเครือข่าย นั่นคือ Convolution
ในโครงข่ายประสาทเทียม แต่ละชั้นจะถูกจัดระเบียบตามความกว้าง ความสูง และความลึก Convolution ซึ่งเป็นส่วนหลักของ CNN รวมสองฟังก์ชันเพื่อสร้างฟังก์ชันที่สาม (ผสานข้อมูลสองชุด) มันหมายถึงการพิจารณาการบิด (รูปภาพ) ที่เราเพียงแค่คูณเมทริกซ์สองตัวตามองค์ประกอบแล้วตามด้วยผลรวม
การบิดเป็นขั้นตอนสามขั้นตอนในการประมวลผลภาพ -
-
เรานำภาพที่ป้อนเข้ามา
-
เมทริกซ์เคอร์เนลที่เราจะนำไปใช้กับอิมเมจอินพุต
-
และภาพสุดท้ายเพื่อเก็บเอาท์พุตของอิมเมจอินพุตที่รวมเข้ากับเคอร์เนล
ด้านล่างนี้คือการใช้งานตัวกรอง sobel เพียงเล็กน้อยโดยใช้ opencv ซึ่งเป็นตัวกรองการประมวลผลภาพสำหรับการตรวจจับขอบ
โค้ดตัวอย่าง
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)
ใส่รูปภาพ
ภาพที่ส่งออก