पायथन में छवियों की सुविधा निष्कर्षण


18

मेरी कक्षा में मुझे यह तय करने के लिए दो क्लासिफ़ायर का उपयोग करके एक एप्लिकेशन बनाना होगा कि क्या किसी छवि में कोई वस्तु फ़ाइलम पोरिफेरा (सीस्पाज़ोन) या किसी अन्य वस्तु का उदाहरण है।

हालाँकि, मैं पूरी तरह से खो गया हूँ जब यह अजगर में निष्कर्षण तकनीक की सुविधा के लिए आता है। मेरे सलाहकार ने मुझे उन चित्रों का उपयोग करने के लिए राजी किया जो कक्षा में शामिल नहीं किए गए हैं।

क्या कोई मुझे सार्थक दस्तावेज या पढ़ने या निर्देश देने के तरीकों पर विचार करने के लिए निर्देशित कर सकता है?


आपने सलाहकार का उल्लेख किया है, इसलिए मैं मान लूंगा कि यह ग्रेजुएट स्कूल के असाइनमेंट का हिस्सा है? क्या आपके पास किसी भी व्यावसायिक सॉफ़्टवेयर तक पहुंच है, या क्या आप केवल पायथन और ओपन-सोर्स पैकेज के साथ ऐसा करने की उम्मीद कर रहे हैं? आप इस समय कक्षा में क्या सीख रहे हैं और कक्षा का नाम क्या है? इसके अलावा, क्या उत्तर देने के लिए समय की आवश्यकता के अनुसार प्रदर्शन की आवश्यकता है?
विधिवत

मुझे केवल पायथन और ओपन सोर्स पैकेज का उपयोग करने की उम्मीद है। अपना खुद का सोर्स कोड लिखना भी हतोत्साहित करता है। यह मास्टर स्तर का कोर्स है। कक्षा एक परिचयात्मक डेटा विज्ञान पाठ्यक्रम है। अंतिम चीज जिसे हमने कवर किया है, वह सुविधा चयन है, हालांकि लगभग सभी चर्चा पाठ डेटा के बारे में है। सटीकता के बाहर कोई प्रदर्शन आवश्यकताएं नहीं हैं ~ 70%
जेरेमी बार्न्स

जवाबों:


11

छवियों में, सुविधा निष्कर्षण के लिए कुछ अक्सर इस्तेमाल की जाने वाली तकनीकें बिनार्इज़िंग और धुंधला हो रही हैं

Binarizing: छवि सरणी को 1s और 0s में परिवर्तित करता है। यह छवि को 2D छवि में परिवर्तित करते समय किया जाता है। यहां तक ​​कि ग्रे-स्केलिंग का भी इस्तेमाल किया जा सकता है। यह आपको छवि का एक संख्यात्मक मैट्रिक्स देता है। डिस्क पर संग्रहीत होने पर ग्रेस्केल बहुत कम जगह लेता है।

यह आप पायथन में कैसे करते हैं:

from PIL import Image

%matplotlib inline  

#Import an image
image = Image.open("xyz.jpg")

image

उदाहरण छवि:

यहाँ छवि विवरण दर्ज करें

अब, ग्रे-स्केल में परिवर्तित करें:

im = image.convert('L')

im

आप इस छवि को वापस कर देंगे:

यहाँ छवि विवरण दर्ज करें

और इसे चलाकर मैट्रिक्स को देखा जा सकता है:

array(im)

सरणी कुछ इस तरह दिखाई देगी:

array([[213, 213, 213, ..., 176, 176, 176],
       [213, 213, 213, ..., 176, 176, 176],
       [213, 213, 213, ..., 175, 175, 175],
       ..., 
       [173, 173, 173, ..., 204, 204, 204],
       [173, 173, 173, ..., 205, 205, 204],
       [173, 173, 173, ..., 205, 205, 205]], dtype=uint8)

अब, चित्र सुविधाओं पर एक नज़र रखने के लिए हिस्टोग्राम प्लॉट और / या समोच्च प्लॉट का उपयोग करें:

from pylab import *

# create a new figure
figure()
gray()
# show contours with origin upper left corner
contour(im, origin='image')
axis('equal')
axis('off')


figure()


hist(im_array.flatten(), 128)

show()

यह आपको एक भूखंड लौटाएगा, जो कुछ इस तरह दिखता है:

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

धुंधला हो जाना: धुंधला एल्गोरिथ्म प्रत्येक पिक्सेल में परिवेश के रंग को शामिल करने के लिए पड़ोसी पिक्सेल का भारित औसत लेता है। यह समोच्चों को बेहतर ढंग से बढ़ाता है और सुविधाओं और उनके महत्व को बेहतर ढंग से समझने में मदद करता है।

और यह आप पायथन में कैसे करते हैं:

from PIL import *


figure()
p = image.convert("L").filter(ImageFilter.GaussianBlur(radius = 2))
p.show()

और धुंधली छवि है:

यहाँ छवि विवरण दर्ज करें

तो, ये कुछ तरीके हैं जिनसे आप फीचर इंजीनियरिंग कर सकते हैं। और उन्नत तरीकों के लिए, आपको कंप्यूटर विजन और तंत्रिका नेटवर्क की मूल बातें और विभिन्न प्रकार के फ़िल्टर और उनके महत्व और उनके पीछे के गणित को समझना होगा।


1
बहुत बहुत धन्यवाद। मैंने कुछ स्थानों पर इस बारे में पोस्ट किया और आपका अब तक का सबसे ज्ञानवर्धक उत्तर था। मुझे एहसास हुआ कि मुझे गलतफहमी थी कि कैसे छवियों की सुविधा निष्कर्षण वैचारिक रूप से काम करती है।
जेरेमी बार्न्स

खुशी है कि मेरा उत्तर आप :) मदद की
Dawny33

8

यह महान ट्यूटोरियल दृढ़ तंत्रिका-विज्ञान की मूल बातें शामिल करता है, जो वर्तमान में अधिकांश दृष्टि कार्यों में कला प्रदर्शन की स्थिति को प्राप्त कर रहे हैं:

http://deeplearning.net/tutorial/lenet.html

अजगर में सीएनएन के लिए कई विकल्प हैं, जिसमें थीनो और उसके ऊपर बनी लाइब्रेरी भी शामिल हैं (मुझे लगता है कि इसे इस्तेमाल करना आसान है)।

यदि आप गहरी सीखने से बचना पसंद करते हैं, तो आप OpenCV में देख सकते हैं, जो कई अन्य प्रकार की विशेषताओं, लाइन हैर कैस्केड्स और SIFT सुविधाओं को सीख सकता है।

http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html


1

जैसा कि जेरेमी बार्न्स और जेम्समफ ने कहा, समस्या से निपटने के लिए आप किसी भी मशीन लर्निंग एल्गोरिदम का उपयोग कर सकते हैं। वे शक्तिशाली हैं और सुविधाओं को स्वचालित रूप से पहचान सकते हैं। आपको बस एल्गोरिथ्म को सही प्रशिक्षण डेटा खिलाने की आवश्यकता है। चूंकि इसे छवियों पर काम करने की आवश्यकता है, इसलिए तंत्रिका संबंधी नेटवर्क आपके लिए एक बेहतर विकल्प होगा।

यह कन्वेक्शन न्यूरल नेटवर्क के बारे में जानने के लिए एक अच्छा ट्यूटोरियल है। आप कोड भी डाउनलोड कर सकते हैं और अपनी समस्या की परिभाषा के अनुसार बदल सकते हैं। लेकिन आपको प्रसंस्करण के लिए अजगर और थीनो पुस्तकालय सीखने की आवश्यकता है और आपको इसके लिए अच्छे ट्यूटोरियल भी मिलेंगे

http://deeplearning.net/tutorial/lenet.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.