MariaDB
 sql >> डेटाबेस >  >> RDS >> MariaDB

भाग 1:MariaDB सर्वर और TensorFlow के साथ छवि वर्गीकरण - एक सिंहावलोकन

नए डिजिटल बिजनेस ट्रांसफॉर्मेशन युग की चुनौतियों का सामना करने के लिए अत्याधुनिक कंपनियां आर्टिफिशियल इंटेलिजेंस और मशीन लर्निंग की ओर रुख कर रही हैं।

गार्टनर के अनुसार:"सात-सात प्रतिशत वरिष्ठ व्यापार जगत के नेताओं का कहना है कि डिजिटलीकरण एक कंपनी की प्राथमिकता है और 79 प्रतिशत कॉर्पोरेट रणनीतिकारों का कहना है कि यह उनके व्यवसाय को नया रूप दे रहा है—नए तरीकों से राजस्व के नए स्रोत बना रहा है ".

स्रोत :गार्टनर, अपने डिजिटल व्यापार परिवर्तन को गति दें, जनवरी 15, 2019

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

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

रिलेशनल डेटाबेस पर मशीन लर्निंग

मशीन लर्निंग द्वारा सक्षम डिजिटल व्यापार परिवर्तन के केंद्र में चैटबॉट, अनुशंसा इंजन, व्यक्तिगत संचार, बुद्धिमान विज्ञापन लक्ष्यीकरण और छवि वर्गीकरण जैसी प्रौद्योगिकियां हैं।

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

TensorFlow Google द्वारा बनाई और जारी की गई तेज़ संख्यात्मक कंप्यूटिंग के लिए एक पायथन लाइब्रेरी है। मारियाडीबी सर्वर डेटा तक पहुँचने और प्रबंधित करने के लिए SQL इंटरफ़ेस के साथ एक खुला स्रोत रिलेशनल डेटाबेस है। केरस एक ओपन-सोर्स न्यूरल-नेटवर्क लाइब्रेरी है जिसे पायथन में लिखा गया है।

इस पोस्ट में, आप सीखेंगे कि TensorFlow और MariaDB सर्वर के बीच इंटरऑपरेबिलिटी को सक्षम करके छवि वर्गीकरण का परीक्षण कैसे करें। यह पोस्ट फैशन एमएनआईएसटी डेटासेट का उपयोग करती है जिसमें 10 श्रेणियों में 70,000 ग्रेस्केल छवियां शामिल हैं। चित्र कम रिज़ॉल्यूशन (28 गुणा 28 पिक्सेल) पर कपड़ों के अलग-अलग लेख दिखाते हैं।

मारियाडीबी सर्वर में डेटा लोड करना और तैयार करना इस पोस्ट के दायरे से बाहर है। फ़ैशन MNIST डेटासेट के साथ निम्न तालिकाएँ पहले से बनाई और भरी गई हैं।

छवियां छवि भूमिका छवि लेबल
CREATE TABLE tf_images (
 img_label tinyint(4),
 img_vector blob,
 img_idx    int(10) unsigned NOT NULL,
 img_blob  blob,
 img_use    tinyint(4)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
CREATE TABLE img_use (
 use_id tinyint(4) NOT NULL AUTO_INCREMENT,
 use_name varchar(10) NOT NULL,
 use_desc varchar(100) NOT NULL,
 PRIMARY KEY (use_id)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4
CREATE TABLE categories (
 class_idx tinyint(4) NOT NULL,
 class_name char(20) DEFAULT NULL,
 PRIMARY KEY (class_idx)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

डेटा एक्सप्लोरेशन

मारियाडीबी सर्वर के साथ बुनियादी डेटा अन्वेषण करने के लिए निम्नलिखित पुस्तकालयों का उपयोग किया जाता है:

  1. io मॉड्यूल विभिन्न प्रकार के I/O से निपटने के लिए पायथन की मुख्य सुविधाएं प्रदान करता है।
  2. Matplotlib प्लेटफ़ॉर्म पर विभिन्न प्रकार के ग्राफ़ बनाने के लिए एक पायथन 2D प्लॉटिंग लाइब्रेरी है।
  3. पांडा संख्यात्मक तालिकाओं और समय श्रृंखला में हेरफेर करने के लिए डेटा संरचना और संचालन प्रदान करता है।
  4. pymysql पैकेज में मारियाडीबी सर्वर तक पहुंचने के लिए एक शुद्ध-पायथन क्लाइंट लाइब्रेरी है।

आइए पायथन के माध्यम से डेटाबेस सर्वर से जुड़कर शुरू करें:

import io
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import pandas as pd
import pymysql as MariaDB
%matplotlib inline

conn = MariaDB.connect( host = '127.0.0.1'
, port = 3306
, user = 'mdb'
, passwd = 'letmein'
, db = 'ml'
, charset = 'utf8')

cur = conn.cursor()

एक बार मारियाडीबी सर्वर से कनेक्ट होने के बाद, डेटाबेस में छवियों को आसानी से एक्सेस और प्रबंधित किया जा सकता है। मॉडल के प्रशिक्षण और परीक्षण के लिए उपयोग की जाने वाली सभी छवियों को एक ही तालिका (tf_images) में संग्रहीत किया जाता है। छवि का उपयोग कैसे किया जाएगा यह छवि उपयोग तालिका (img_use) में परिभाषित किया गया है। इस मामले में, तालिका में केवल दो टुपल्स हैं, प्रशिक्षण और परीक्षण:

sql="SELECT use_name AS 'Image Role'
          , use_desc AS 'Description'
     FROM img_use"
display( pd.read_sql(sql,conn) )

छवि भूमिका विवरण
प्रशिक्षण छवि का उपयोग मॉडल को प्रशिक्षित करने के लिए किया जाता है
परीक्षण छवि का उपयोग मॉडल के परीक्षण के लिए किया जाता है

डेटासेट में छवि ऑब्जेक्ट के लिए लक्ष्य विशेषताओं को मैप करना लेबलिंग कहलाता है। लेबल की परिभाषा हर आवेदन में अलग-अलग होती है, और छवि के लिए "सही" लेबल क्या है, इसकी शायद ही कोई सार्वभौमिक परिभाषा हो। एक रिलेशनल डेटाबेस का उपयोग करना लेबलिंग प्रक्रिया को सरल करता है और मोटे से बारीक अनाज लेबल तक जाने का एक तरीका प्रदान करता है।

इस उदाहरण में, "श्रेणियों" तालिका का उपयोग करते हुए, एक छवि में केवल एक लेबल (मोटा) होता है जैसा कि नीचे दिखाया गया है:

sql="SELECT class_name AS 'Class Name' FROM categories"
display( pd.read_sql(sql,conn) )
कक्षा का नाम
0 टी-शर्ट/टॉप
1 पतलून
2 पुलओवर
3 पोशाक
4 कोट
5 चप्पल
6 शर्ट
7 स्नीकर
8 बैग
9 टखने का बूट

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

sql="SELECT cn.class_name AS 'Class Name' 
          , iu.use_name AS 'Image Use' 
          , img_vector AS 'Vector Representation' 
          , img_blob AS 'Image PNG' 
     FROM tf_images AS ti 
          INNER JOIN categories AS cn ON ti.img_label = cn.class_idx
          INNER JOIN img_use AS iu ON ti.img_use  = iu.use_id
     LIMIT 5"
display( pd.read_sql(sql,conn) )

कक्षा का नाम छवि उपयोग वेक्टर प्रतिनिधित्व छवि PNG
टखने का बूट प्रशिक्षण b'\x80\x02cnumpy.core.multiarray\n_reconstruct… b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\…
टी-शर्ट/टॉप प्रशिक्षण b'\x80\x02cnumpy.core.multiarray\n_reconstruct… b”\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\…
टी-शर्ट/टॉप प्रशिक्षण b'\x80\x02cnumpy.core.multiarray\n_reconstruct… b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\…
पोशाक प्रशिक्षण b”\x80\x02cnumpy.core.multiarray\n_reconstruct… b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\…
टी-शर्ट/टॉप प्रशिक्षण b'\x80\x02cnumpy.core.multiarray\n_reconstruct… b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\…

SQL स्टेटमेंट का उपयोग करने से डेटा एक्सप्लोरेशन प्रक्रिया आसान हो जाती है। उदाहरण के लिए, नीचे दिया गया SQL कथन छवि लेबल द्वारा छवि वितरण को दर्शाता है।

sql="SELECT class_name AS 'Image Label' \
     , COUNT(CASE WHEN img_use = 1 THEN img_label END) AS 'Training Images'\
     , COUNT(CASE WHEN img_use = 2 THEN img_label END) AS 'Testing Images'\
     FROM tf_images INNER JOIN categories ON class_idx = img_label \
     GROUP BY class_name"
df = pd.read_sql(sql,conn)
display (df)
ax = df.plot.bar(rot=0)

छवि लेबल प्रशिक्षण छवियां छवियों का परीक्षण करना
0 टखने का बूट 6000 1000
1 बैग 6000 1000
2 कोट 6000 1000
3 पोशाक 6000 1000
4 पुलओवर 6000 1000
5 चप्पल 6000 1000
6 शर्ट 6000 1000
7 स्नीकर 6000 1000
8 टी-शर्ट/टॉप 6000 1000
9 पतलून 6000 1000

प्रशिक्षण सेट में प्रत्येक लेबल के लिए 6,000 चित्र हैं और परीक्षण सेट में प्रत्येक लेबल के लिए 1,000 चित्र हैं। प्रशिक्षण सेट में कुल 60,000 चित्र और परीक्षण सेट में कुल 10,000 चित्र हैं।

कपड़ों के अलग-अलग लेखों को कम रिज़ॉल्यूशन वाली छवियों के रूप में संग्रहीत किया जाता है। चूंकि डेटाबेस उन छवियों को कुशलतापूर्वक बाइनरी लार्ज ओबजेक्ट्स (बीएलओबी) के रूप में संग्रहीत कर सकता है, इसलिए एसक्यूएल का उपयोग करके एक छवि को पुनर्प्राप्त करना बहुत आसान है, जैसा कि नीचे दिखाया गया है:

sql="SELECT img_blob \
     FROM tf_images INNER JOIN img_use ON use_id = img_use \
     WHERE use_name = 'Testing' and img_idx = 0"

cur.execute(sql)
data = cur.fetchone()
file_like=io.BytesIO(data[0])
img = mpimg.imread(file_like)
plt.imshow(img)

ऊपर:Fashion_mnist डेटासेट से इमेज

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

MIT लाइसेंस

इस ब्लॉग द्वारा लीवरेज किए गए फैशन एमएनआईएसटी (fashion_mnist) डेटासेट को एमआईटी लाइसेंस के तहत लाइसेंस प्राप्त है।

एमआईटी लाइसेंस (एमआईटी) कॉपीराइट © 2017 ज़ालैंडो एसई, https://tech.zalando.com

इस सॉफ़्टवेयर और संबंधित दस्तावेज़ीकरण फ़ाइलों ("सॉफ़्टवेयर") की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को, बिना किसी प्रतिबंध के सॉफ़्टवेयर में डील करने की अनुमति एतद्द्वारा, निःशुल्क दी जाती है, निम्नलिखित शर्तों के अधीन, बिना किसी सीमा के, सॉफ़्टवेयर के उपयोग, प्रतिलिपि बनाने, संशोधित करने, मर्ज करने, प्रकाशित करने, वितरित करने, उपलाइसेंस, और/या बेचने के अधिकार, और जिन लोगों को सॉफ़्टवेयर प्रस्तुत किया गया है, उन्हें ऐसा करने की अनुमति देना शामिल है:

उपरोक्त कॉपीराइट नोटिस और यह अनुमति नोटिस सॉफ्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल किया जाएगा।

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

संदर्भ

स्वयं की छवि को MNIST की छवि में बदलें
matplotlib:छवि ट्यूटोरियल
5 तरीके AI ग्राहक अनुभव को बदल रहा है
डिजिटलीकरण व्यवसाय को फिर से खोज रहा है
छवि वर्गीकरण क्या है?
पायथन का परिचय डीप लर्निंग लाइब्रेरी TensorFlow


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी में आयु की गणना कैसे करें

  2. भंडारण इंजन विकल्प:एरिया

  3. मारियाडीबी में एवीजी () फ़ंक्शन

  4. मारियाडीबी एसक्यूएल सेट ऑपरेटर्स

  5. MySQL में लॉक वेट टाइमआउट से अधिक त्रुटि को कैसे ठीक करें