पुरानी तस्वीरों के सेपिया टोन और ग्रेस्केल ग्रेडिएंट्स में एक अनोखा आकर्षण होता है, जो समय में जमे हुए क्षणों को कैद करते हैं। फिर भी, उनमें अक्सर मूल दृश्य की जीवंत तात्कालिकता की कमी होती है। कल्पना कीजिए कि इन संजोई हुई यादों में जीवन के रंगों को वापस फूंक दिया जाए, एक फीके काले-सफेद चित्र को एक ऐसी खिड़की में बदल दिया जाए जो विषय की दुनिया को पूरे रंग में प्रकट करती हो। यह परिवर्तनकारी प्रक्रिया, जिसे इमेज कलरिजेशन के रूप में जाना जाता है, ने लंबे समय से कलाकारों और इतिहासकारों को आकर्षित किया है। आज, आर्टिफिशियल इंटेलिजेंस, विशेष रूप से डीप लर्निंग में प्रगति से प्रेरित होकर, स्वचालित कलरिजेशन ऐसे परिणाम प्राप्त कर रहा है जो कभी विज्ञान कथाओं की बातें लगती थीं।
एक ग्रेस्केल इमेज में रंग लाना एक आकर्षक चुनौती प्रस्तुत करता है। जब किसी इमेज को मोनोक्रोम में प्रस्तुत किया जाता है तो जानकारी की एक महत्वपूर्ण मात्रा - मूल क्रोमेटिक डेटा - स्वाभाविक रूप से खो जाती है। कोई एल्गोरिथम केवल ल्यूमिनेंस मानों से किसी फूल, पोशाक या आकाश का वास्तविक रंग कैसे जान सकता है? इसका उत्तर स्वयं ग्रेस्केल इमेज में निहित सूक्ष्म सुरागों में निहित है: बनावट, आकार, संदर्भ, और प्रकाश और छाया का परस्पर क्रिया। जबकि सटीक मूल रंग का पता लगाना असंभव हो सकता है (क्या वह गुलाब वास्तव में गहरा लाल था, या शायद गुलाबी रंग का?), लक्ष्य एक संभाव्य और सौंदर्य की दृष्टि से विश्वसनीय कलरिजेशन बनाने की ओर स्थानांतरित हो जाता है। उद्देश्य एक ऐसी इमेज का निर्माण करना है जिसे एक मानव पर्यवेक्षक विश्वसनीय पाएगा, यहां तक कि संभावित रूप से एक मूल रंगीन तस्वीर से अप्रभेद्य भी।
डीप लर्निंग मॉडल विशाल डेटासेट के भीतर जटिल पैटर्न और सांख्यिकीय संबंधों को उजागर करने में उत्कृष्टता प्राप्त करते हैं। इन मॉडलों को लाखों इमेजों पर प्रशिक्षित करके, ग्रेस्केल संस्करणों की उनके मूल रंग समकक्षों से तुलना करके, एल्गोरिदम विशिष्ट बनावट और संरचनाओं को संभावित रंगों के साथ जोड़ना सीखते हैं। वे सीखते हैं कि घास आमतौर पर हरी होती है, आसमान अक्सर नीला होता है, और कुछ बनावट लकड़ी के दाने या कपड़े के अनुरूप होती हैं। यह एक शिक्षित अनुमान के समान है, लेकिन एक विशाल दृश्य विश्वकोश द्वारा सूचित किया गया है। एल्गोरिथम मानव अर्थों में वास्तविक रंग को ‘नहीं जानता’ है, लेकिन यह सीखे गए सहसंबंधों के आधार पर अत्यधिक संभावित भविष्यवाणियां कर सकता है।
रंग की भाषा: CIELab और न्यूरल नेटवर्क
कलरिजेशन को कम्प्यूटेशनल रूप से निपटाने के लिए, हमें रंग का प्रतिनिधित्व करने के लिए एक उपयुक्त तरीके की आवश्यकता है। जबकि RGB (लाल, हरा, नीला) डिस्प्ले के लिए आम है, यह ल्यूमिनेंस (चमक) और क्रोमिनेंस (रंग) जानकारी को मिलाता है। इस कार्य के लिए एक अधिक लाभप्रद प्रणाली CIELab कलर स्पेस है। यह मॉडल सुंदरता से रंग को तीन अलग-अलग घटकों में अलग करता है:
- L (लाइटनेस): यह चैनल ग्रेस्केल जानकारी का प्रतिनिधित्व करता है, जो शुद्ध काले से शुद्ध सफेद तक होता है। यह अनिवार्य रूप से वह इनपुट डेटा है जो हमारे पास पहले से ही एक काले और सफेद इमेज में है।
- a: यह चैनल हरे (नकारात्मक मान) से लाल (सकारात्मक मान) तक के स्पेक्ट्रम को एन्कोड करता है।
- b: यह चैनल नीले (नकारात्मक मान) से पीले (सकारात्मक मान) तक के स्पेक्ट्रम को एन्कोड करता है।
CIELab की सुंदरता इस पृथक्करण में निहित है। हमारा डीप लर्निंग मॉडल केवल इनपुट लाइटनेस (‘L’) चैनल के आधार पर दो क्रोमिनेंस चैनल (‘a’ और ‘b’) की भविष्यवाणी करने पर ध्यान केंद्रित कर सकता है। मुख्य कार्य बन जाता है: ग्रेस्केल जानकारी (L) को देखते हुए, प्रत्येक पिक्सेल के लिए सबसे संभावित संबंधित ‘a’ और ‘b’ मान क्या हैं?
शुरुआती प्रयासों में अक्सर Convolutional Neural Networks (CNNs) का इस्तेमाल किया जाता था - एक प्रकार की डीप लर्निंग आर्किटेक्चर जो विशेष रूप से इमेज जैसे ग्रिड-जैसे डेटा को संसाधित करने में माहिर है। इन नेटवर्कों को बड़े इमेज डेटासेट (जैसे ImageNet) पर प्रशिक्षित किया गया था ताकि प्रत्येक पिक्सेल के लिए सीधे ‘a’ और ‘b’ मानों की भविष्यवाणी की जा सके, इसे एक रिग्रेशन समस्या (निरंतर मानों की भविष्यवाणी) के रूप में माना जा सके। हालाँकि, एक आम खामी सामने आई: परिणामी कलरिजेशन अक्सर असंतृप्त या फीके दिखाई देते थे। क्यों? सेब जैसी वस्तु पर विचार करें। यह संभवतः लाल, हरा या पीला भी हो सकता है। यदि नेटवर्क रिग्रेशन के दौरान इन संभावनाओं का औसत निकालने की कोशिश करता है, तो यह एक जीवंत, विशिष्ट रंग के बजाय एक सुस्त, भूरे रंग के समझौते पर स्थिर हो सकता है। कई संभावित रंगों में इस औसत प्रभाव ने परिणामों को फीका कर दिया।
एक प्रतिमान बदलाव: वर्गीकरण के रूप में कलरिजेशन
असंतृप्ति के मुद्दे को दूर करने और अधिक जीवंत, यथार्थवादी रंग उत्पन्न करने के लिए, एक अधिक परिष्कृत दृष्टिकोण समस्या को फिर से परिभाषित करता है। रंग भविष्यवाणी को रिग्रेशन के रूप में मानने के बजाय, इसे वर्गीकरण कार्य के रूप में देखा जाता है।
यहाँ वैचारिक बदलाव है:
- मात्रात्मक रंग स्थान (Quantized Color Space): संभावित ‘a’ और ‘b’ मानों के निरंतर स्पेक्ट्रम को प्रतिनिधि रंग ‘बिन’ या वर्गों के पूर्वनिर्धारित सेट में विभाजित किया जाता है। इसे ‘a’-‘b’ प्लेन के भीतर एक विशाल पैलेट को एक प्रबंधनीय, फिर भी व्यापक, विशिष्ट रंग विकल्पों के सेट तक कम करने के रूप में सोचें।
- संभावनाओं की भविष्यवाणी (Predicting Probabilities): इनपुट ग्रेस्केल इमेज में प्रत्येक पिक्सेल के लिए, CNN एकल ‘a’ और ‘b’ मान की भविष्यवाणी नहीं करता है। इसके बजाय, यह मात्रात्मक रंग बिनों में एक संभाव्यता वितरण आउटपुट करता है। यह अनिवार्य रूप से कहता है, ‘इस पिक्सेल के लिए, 70% संभावना है कि यह ‘जीवंत लाल बिन #5’ से संबंधित है, 20% संभावना है कि यह ‘हल्का लाल बिन #2’ है, 5% संभावना है कि यह ‘भूरा बिन #12’ है,’ इत्यादि।
- अस्पष्टता को संबोधित करना (Addressing Ambiguity): यह संभाव्य दृष्टिकोण स्वाभाविक रूप से रंग अस्पष्टता को संभालता है। यदि कोई वस्तु कई रंगों की हो सकती है (जैसे सेब), तो नेटवर्क कई अलग-अलग रंग बिनों को महत्वपूर्ण संभावनाएं निर्दिष्ट कर सकता है, जो इस अनिश्चितता को एक नरम औसत का सहारा लिए बिना दर्शाता है।
- जीवंत रंग में डिकोडिंग (Decoding to Vibrant Color): अंतिम चरण में इस संभाव्यता वितरण को प्रत्येक पिक्सेल के लिए एकल, विशिष्ट रंग में वापस अनुवाद करना शामिल है। एक भोला दृष्टिकोण केवल उच्चतम संभावना (मोड) वाले रंग बिन को चुनना हो सकता है। हालाँकि, जीवंतता को प्रोत्साहित करने और असंतृप्ति की समस्या से बचने के लिए, वितरण के एनील्ड मीन (annealed mean) की गणना जैसी तकनीकों का उपयोग किया जाता है। यह विधि कम संभावित लेकिन अधिक रंगीन (उच्च संतृप्ति) भविष्यवाणियों को अधिक महत्व देती है, समग्र अनुमानित वितरण का सम्मान करते हुए जीवंतता के पक्ष में प्रभावी ढंग से ‘टाई तोड़ती’ है।
यह वर्गीकरण ढाँचा, विशेष रूप से कलरिजेशन के लिए लॉस फ़ंक्शन (प्रशिक्षण के दौरान मॉडल के प्रदर्शन का मूल्यांकन करने के लिए उपयोग किया जाने वाला मीट्रिक) के सावधानीपूर्वक डिज़ाइन के साथ मिलकर, मॉडल को ग्रेस्केल विशेषताओं और संभावित रंगों के वितरण के बीच जटिल संबंध सीखने की अनुमति देता है। परिणाम ऐसी इमेजेज हैं जो न केवल संभाव्य रूप से रंगीन हैं, बल्कि उनमें एक समृद्धि और दृश्य अपील भी है जो अक्सर पहले के रिग्रेशन-आधारित तरीकों में कमी होती है।
हुड के नीचे झांकना: एक व्यावहारिक डीप लर्निंग वर्कफ़्लो
जबकि इस तरह के एक परिष्कृत CNN को स्क्रैच से प्रशिक्षित करना एक स्मारकीय कार्य है जिसके लिए विशाल कम्प्यूटेशनल संसाधनों और विशाल डेटासेट की आवश्यकता होती है, पूर्व-प्रशिक्षित मॉडल का लाभ उठाना इस तकनीक को सुलभ बनाता है। आइए Python और सामान्य पुस्तकालयों का उपयोग करके कार्यान्वित इमेज कलरिजेशन के लिए एक पूर्व-प्रशिक्षित डीप लर्निंग मॉडल (विशेष रूप से Caffe फ्रेमवर्क का उपयोग करके बनाया गया, जैसा कि मूल उदाहरण में है) का उपयोग करने में शामिल वैचारिक चरणों से गुजरें।
1. टूलकिट को असेंबल करना:
नींव में आमतौर पर Python शामिल होता है, जो डेटा विज्ञान और AI में लोकप्रिय एक बहुमुखी प्रोग्रामिंग भाषा है। प्रमुख पुस्तकालय महत्वपूर्ण भूमिका निभाते हैं:
- NumPy: कुशल संख्यात्मक संचालन के लिए आवश्यक, विशेष रूप से बहु-आयामी सरणियों को संभालना जो इमेजों का प्रतिनिधित्व करते हैं।
- OpenCV (cv2): कंप्यूटर विजन कार्यों के लिए एक पावरहाउस लाइब्रेरी। यह इमेजों को पढ़ने, लिखने, हेरफेर करने और प्रदर्शित करने के लिए फ़ंक्शन प्रदान करता है, और महत्वपूर्ण रूप से, इसमें एक Deep Neural Network (DNN) मॉड्यूल शामिल है जो Caffe, TensorFlow, और PyTorch जैसे विभिन्न फ्रेमवर्क में प्रशिक्षित मॉडल को लोड करने और चलाने में सक्षम है।
- Argparse: उपयोगकर्ता के अनुकूल कमांड-लाइन इंटरफेस बनाने के लिए एक मानक Python लाइब्रेरी, जो उपयोगकर्ताओं को इमेज फ़ाइल पथ जैसे इनपुट पैरामीटर आसानी से निर्दिष्ट करने की अनुमति देती है।
- OS: बुनियादी ऑपरेटिंग सिस्टम इंटरैक्शन के लिए उपयोग किया जाता है, जैसे कि विभिन्न सिस्टम (Windows, macOS, Linux) पर काम करने वाले तरीके से फ़ाइल पथ बनाना।
2. पूर्व-प्रशिक्षित इंटेलिजेंस प्राप्त करना:
न्यूरल नेटवर्क को ईंट दर ईंट बनाने के बजाय, हम उन फ़ाइलों का उपयोग करते हैं जो पहले से ही कलरिजेशन के लिए प्रशिक्षित नेटवर्क का प्रतिनिधित्व करती हैं। इनमें आमतौर पर शामिल हैं:
- मॉडल आर्किटेक्चर फ़ाइल (
.prototxt
Caffe के लिए): यह फ़ाइल न्यूरल नेटवर्क की संरचना को परिभाषित करती है - परतें, उनके प्रकार, कनेक्शन और पैरामीटर। यह मॉडल का ब्लूप्रिंट है। - प्रशिक्षित वेट्स फ़ाइल (
.caffemodel
Caffe के लिए): इस फ़ाइल में नेटवर्क द्वारा अपनी व्यापक प्रशिक्षण प्रक्रिया के दौरान सीखे गए संख्यात्मक वेट्स होते हैं। ये वेट्स उस ‘ज्ञान’ को समाहित करते हैं जिसे मॉडल ने ग्रेस्केल विशेषताओं को रंग संभावनाओं में मैप करने के बारे में हासिल किया है। यह आसुत बुद्धि है। - कलर क्वांटाइजेशन डेटा (
.npy
फ़ाइल): यह NumPy फ़ाइल आमतौर पर पहले वर्णित वर्गीकरण दृष्टिकोण में उपयोग किए गए मात्रात्मक रंग बिनों के केंद्र बिंदुओं को संग्रहीत करती है। यह अनुमानित रंग संभावनाओं के लिए संदर्भ पैलेट के रूप में कार्य करता है।
ये फ़ाइलें शक्तिशाली हार्डवेयर पर संभावित रूप से हफ्तों या महीनों के प्रशिक्षण की परिणति का प्रतिनिधित्व करती हैं।
3. कलरिजेशन इंजन लोड करना:
आवश्यक फ़ाइलों के स्थित होने के साथ, OpenCV का DNN मॉड्यूल पूर्व-प्रशिक्षित नेटवर्क को मेमोरी में लोड करने के लिए तंत्र प्रदान करता है। cv2.dnn.readNetFromCaffe
फ़ंक्शन (या अन्य फ्रेमवर्क के लिए समकक्ष) आर्किटेक्चर और वेट्स फ़ाइलों को इनपुट के रूप में लेता है और नेटवर्क को इंस्टेंटियेट करता है, इसे अनुमान (नए डेटा पर भविष्यवाणियां करने की प्रक्रिया) के लिए तैयार करता है। .npy
फ़ाइल से रंग परिमाणीकरण बिंदु भी लोड किए जाते हैं, आमतौर पर NumPy का उपयोग करके।
4. नेटवर्क घटकों को फाइन-ट्यून करना (यदि आवश्यक हो):
कभी-कभी, पूर्व-प्रशिक्षित नेटवर्क के भीतर विशिष्ट परतों को अनुमान से पहले मामूली समायोजन की आवश्यकता होती है। चर्चा किए गए वर्गीकरण-आधारित कलरिजेशन मॉडल के संदर्भ में:
- आउटपुट लेयर एडजस्टमेंट: ‘a’ और ‘b’ चैनल भविष्यवाणियों (जैसे, संदर्भ मॉडल में
class8_ab
नाम दिया गया) को आउटपुट करने के लिए जिम्मेदार अंतिम परत को.npy
फ़ाइल से रंग बिन केंद्रों के साथ स्पष्ट रूप से लोड करने की आवश्यकता हो सकती है। यह सुनिश्चित करता है कि नेटवर्क की आउटपुट संभावनाएं पूर्वनिर्धारित रंग पैलेट पर सही ढंग से मैप हों। बिंदुओं को अक्सर परत के ‘ब्लॉब्स’ (डेटा कंटेनरों के लिए Caffe का शब्द) को सौंपे जाने से पहले उपयुक्त डेटा प्रकार (जैसे, float32) में पुन: आकार और कास्ट किया जाता है। - कलर रीबैलेंसिंग: एक अन्य परत (जैसे,
conv8_313_rh
) को आउटपुट में विभिन्न रंगों के बीच संतुलन को प्रभावित करने के लिए समायोजित किया जा सकता है, संभावित रूप से संतृप्ति को बढ़ावा देना या प्रशिक्षण के दौरान सीखे गए पूर्वाग्रहों को ठीक करना। इसमें अक्सर परत के ब्लॉब्स को विशिष्ट सीखे गए मानों पर सेट करना शामिल होता है (जैसे मूल कोड में उल्लिखित2.606
मान, संभवतः अनुभवजन्य रूप से या प्रशिक्षण के दौरान प्राप्त किया गया)।
ये चरण वर्गीकरण दृष्टिकोण का उपयोग करके कलरिजेशन कार्य की विशिष्ट बारीकियों के लिए सामान्य पूर्व-प्रशिक्षित मॉडल को तैयार करते हैं।
5. इनपुट इमेज तैयार करना:
इनपुट ग्रेस्केल इमेज को न्यूरल नेटवर्क में फीड करने से पहले कई प्रीप्रोसेसिंग चरणों से गुजरना पड़ता है:
- लोडिंग: इमेज को
cv2.imread
का उपयोग करके निर्दिष्ट फ़ाइल पथ से पढ़ा जाता है। भले ही यह ग्रेस्केल हो, OpenCV इसे डिफ़ॉल्ट रूप से 3-चैनल BGR इमेज के रूप में लोड कर सकता है, चैनलों में ग्रे मान को डुप्लिकेट कर सकता है। - सामान्यीकरण (Normalization): पिक्सेल मान, आमतौर पर 0 से 255 तक होते हैं, 255.0 से विभाजित करके एक छोटी रेंज, अक्सर 0.0 से 1.0 तक स्केल किए जाते हैं। यह सामान्यीकरण नेटवर्क की सीखने और अनुमान प्रक्रिया को स्थिर करने में मदद करता है।
- कलर स्पेस कन्वर्जन: इमेज को
cv2.cvtColor
का उपयोग करके डिफ़ॉल्ट BGR कलर स्पेस से CIELab कलर स्पेस में परिवर्तित किया जाता है। लाइटनेस (L) चैनल को अलग करने के लिए यह महत्वपूर्ण है। - रिसाइजिंग: अधिकांश पूर्व-प्रशिक्षित CNN एक निश्चित आकार (जैसे, 224x224 पिक्सेल, ImageNet जैसे डेटासेट से प्रभावित एक सामान्य मानक) की इनपुट इमेजों की अपेक्षा करते हैं। LAB इमेज को
cv2.resize
का उपयोग करके तदनुसार आकार दिया जाता है। यह मानकीकरण नेटवर्क की वास्तुकला के साथ संगतता सुनिश्चित करता है। - L चैनल आइसोलेशन और सेंटरिंग: लाइटनेस (L) चैनल को रीसाइज्ड LAB इमेज से निकाला जाता है। अक्सर, इसके मान (आमतौर पर LAB में 0-100) को फिर एक माध्य मान (जैसे, 50) घटाकर शून्य के आसपास केंद्रित किया जाता है। यह सेंटरिंग एक और सामान्य अभ्यास है जो नेटवर्क प्रदर्शन में सुधार कर सकता है।
यह सावधानीपूर्वक प्रीप्रोसेस्ड L चैनल अब नेटवर्क को प्रस्तुत करने के लिए तैयार है।
6. अनुमान चरण: रंग की भविष्यवाणी:
यहीं पर जादू होता है:
- ब्लॉब क्रिएशन: संसाधित L चैनल (अब एक 2D ऐरे) को ‘ब्लॉब’ में परिवर्तित किया जाता है, जो DNN मॉड्यूल (
cv2.dnn.blobFromImage
) द्वारा अपेक्षित 4-आयामी ऐरे प्रारूप है। इस प्रारूप में आमतौर पर बैच आकार, चैनल, ऊंचाई और चौड़ाई के आयाम शामिल होते हैं। - फॉरवर्ड पास: ब्लॉब को
net.setInput
का उपयोग करके लोड किए गए नेटवर्क के इनपुट के रूप में सेट किया जाता है। फिर,net.forward()
विधि को कॉल किया जाता है। यह गणना को ट्रिगर करता है: इनपुट डेटा नेटवर्क की परतों के माध्यम से बहता है, सीखे गए वेट्स द्वारा निर्धारित परिवर्तनों से गुजरता है, अंततः अनुमानित आउटपुट का उत्पादन करता है। हमारे कलरिजेशन मॉडल के लिए, आउटपुट अनुमानित ‘a’ और ‘b’ चैनलों (या बल्कि, रंग बिनों पर संभाव्यता वितरण) का प्रतिनिधित्व करता है। - आउटपुट रीशेपिंग: नेटवर्क से कच्चे आउटपुट को ‘a’ और ‘b’ चैनलों के अनुरूप 2D स्थानिक प्रारूप में वापस आकार देने और ट्रांसपोज़ करने की आवश्यकता होती है।
नेटवर्क ने अब इनपुट ग्रेस्केल इमेज के आधार पर रंग जानकारी के लिए अपना सर्वश्रेष्ठ अनुमान उत्पन्न किया है।
7. रंगीन इमेज का पुनर्निर्माण:
अंतिम चरण में अनुमानित रंग जानकारी को मूल इमेज डेटा के साथ जोड़ना शामिल है:
- अनुमानित चैनलों का आकार बदलना: अनुमानित ‘a’ और ‘b’ चैनल (जो वर्तमान में 224x224 आकार के हैं, नेटवर्क इनपुट से मेल खाते हैं) को
cv2.resize
का उपयोग करके इनपुट इमेज के मूल आयामों में वापस आकार देने की आवश्यकता है। यह सुनिश्चित करता है कि रंग जानकारी मूल इमेज संरचना के साथ सही ढंग से संरेखित हो। - मूल लाइटनेस निकालना: महत्वपूर्ण रूप से, लाइटनेस (L) चैनल को मूल, पूर्ण आकार की LAB इमेज (प्रीप्रोसेसिंग के दौरान आकार बदलने से पहले बनाई गई) से निकाला जाता है। मूल L चैनल का उपयोग करने से इमेज के मूल विवरण और ल्यूमिनेंस संरचना को संरक्षित किया जाता है, जो कि यदि रीसाइज्ड L चैनल का उपयोग किया जाता तो खराब हो जाता।
- जोड़ना (Concatenation): मूल L चैनल को रंग चैनल अक्ष के साथ रीसाइज्ड, अनुमानित ‘a’ और ‘b’ चैनलों के साथ जोड़ा (concatenated) जाता है। यह एक पूर्ण LAB इमेज को फिर से असेंबल करता है, अब अनुमानित रंग के साथ।
- डिस्प्ले करने योग्य प्रारूप में वापस रूपांतरण: परिणामी LAB इमेज को
cv2.cvtColor
का उपयोग करके BGR कलर स्पेस में वापस परिवर्तित किया जाता है, क्योंकि यह अधिकांश इमेज डिस्प्ले फ़ंक्शंस (जैसेcv2.imshow
) द्वारा अपेक्षित मानक प्रारूप है। - क्लिपिंग और स्केलिंग: BGR इमेज में पिक्सेल मान, वर्तमान में सामान्यीकृत सीमा (संभवतः 0.0 से 1.0) में, यह सुनिश्चित करने के लिए क्लिप किए जाते हैं कि वे इस वैध सीमा के भीतर रहें (मान कभी-कभी भविष्यवाणी प्रक्रिया के कारण सीमाओं से थोड़ा अधिक हो सकते हैं)। फिर, उन्हें मानक 0-255 पूर्णांक सीमा तक वापस स्केल किया जाता है जो प्रदर्शन या मानक इमेज फ़ाइल के रूप में सहेजने के लिए आवश्यक है।
8. विज़ुअलाइज़ेशन:
अंत में, cv2.imshow
जैसे फ़ंक्शन का उपयोग मूल ग्रेस्केल इमेज को उसके नए रंगीन समकक्ष के साथ प्रदर्शित करने के लिए किया जा सकता है, जिससे तत्काल दृश्य तुलना की अनुमति मिलती है।
प्रक्रिया को निष्पादित करना:
आमतौर पर, इन चरणों को लागू करने वाली एक स्क्रिप्ट कमांड लाइन से चलाई जाएगी। argparse
सेटअप का उपयोग करते हुए, उपयोगकर्ता इनपुट ग्रेस्केल इमेज के पथ को एक तर्क के रूप में प्रदान करेगा (उदाहरण के लिए, python colorize_image.py --image my_photo.jpg
)। स्क्रिप्ट फिर लोडिंग, प्रीप्रोसेसिंग, अनुमान और पुनर्निर्माण चरणों को निष्पादित करती है, अंततः रंगीन परिणाम प्रदर्शित या सहेजती है।
यह वर्कफ़्लो, पूर्व-प्रशिक्षित मॉडल और शक्तिशाली पुस्तकालयों का लाभ उठाते हुए, डीप लर्निंग कलरिजेशन के जटिल सिद्धांत को एक व्यावहारिक उपकरण में बदल देता है जो मोनोक्रोम इमेजों में जीवंत, संभाव्य रंग जोड़ने में सक्षम है, प्रभावी रूप से अतीत और वर्तमान के बीच की खाई को पाटता है।