रेखीय प्रतिगमन और समानता की तुलना जैसे बहुत सरल तरीकों का उपयोग करके छवि पहचान का उपयोग किया जाता था। परिणाम स्पष्ट रूप से बहुत अच्छे नहीं थे, यहाँ तक कि हस्तलिखित अक्षरों को पहचानने का सरल कार्य भी कठिन सिद्ध हुआ। कनवल्शन न्यूरल नेटवर्क (सीएनएन) को मानव मस्तिष्क की तंत्रिका संबंधी गतिविधियों को शिथिल रूप से सिम्युलेट करने की एक सस्ती कम्प्यूटेशनल विधि की पेशकश करके पारंपरिक रूप से जो हम करते हैं, उससे एक कदम ऊपर माना जाता है जब वह छवियों को देखता है।
संक्रामक तंत्रिका नेटवर्क अवलोकन
जिस तरह से हम विभिन्न वस्तुओं को पहचानते हैं, उसी तरह कंप्यूटर एल्गोरिदम को इनपुट को सामान्य बनाने और उस छवि पर निर्णय लेने में सक्षम होने से पहले लाखों छवियों से गुजरना पड़ता है जो उसने पहले कभी नहीं देखा है।
कंप्यूटर प्रत्येक छवि को संख्याओं के 2D सरणियों के रूप में देखते हैं, जिन्हें पिक्सेल के रूप में जाना जाता है। छवियों में वस्तुओं की पहचान करने के लिए, कंप्यूटर विशेष प्रकार के कृत्रिम तंत्रिका नेटवर्क का उपयोग करता है:एक संकेंद्रित तंत्रिका नेटवर्क (CNN)। सीएनएन नेटवर्क में सबसे महत्वपूर्ण कार्यों में से एक से आता है:कनवल्शन।
दृढ़ तंत्रिका नेटवर्क में, प्रत्येक परत को चौड़ाई, ऊंचाई और गहराई में व्यवस्थित किया जाता है। कनवल्शन जो कि सीएनएन का मुख्य भाग है, एक तीसरा फंक्शन बनाने के लिए दो फंक्शन को मिलाता है (सूचना के दो सेट मर्ज करें)। इसका मतलब है कि एक (छवि) कनवल्शन पर विचार करें जहां हम केवल दो मैट्रिक्स को तत्व-वार गुणा करते हैं और उसके बाद योग करते हैं।
इमेज प्रोसेसिंग में कनवल्शन तीन चरणों वाली प्रक्रिया है -
-
हम इनपुट इमेज लेते हैं।
-
कर्नेल मैट्रिक्स जिसे हम इनपुट इमेज पर लागू करने जा रहे हैं।
-
और इनपुट इमेज के आउटपुट को स्टोर करने के लिए अंतिम इमेज को कर्नेल के साथ सजाया जाता है।
नीचे ओपनसीवी का उपयोग करते हुए सोबेल फिल्टर का छोटा कार्यान्वयन है जो एज डिटेक्शन के लिए एक इमेज प्रोसेसिंग फिल्टर है।
उदाहरण कोड
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)में
इनपुट इमेज
आउटपुट छवि