ஒற்றை வண்ணத்திற்கு உயிர் ஊட்டுதல்: பட வண்ணமயமாக்கலுக்கான ஆழ் கற்றல்

பழைய புகைப்படங்களின் செபியா டோன்களும், கிரேஸ்கேல் சாய்வுகளும் ஒரு தனித்துவமான வசீகரத்தைக் கொண்டுள்ளன, காலத்தால் உறைந்த தருணங்களைப் படம்பிடிக்கின்றன. ஆயினும்கூட, அவை பெரும்பாலும் அசல் காட்சியின் துடிப்பான உடனடித்தன்மையை கொண்டிருக்கவில்லை. இந்த நேசத்துக்குரிய நினைவுகளுக்குள் வாழ்க்கையின் வண்ணங்களை மீண்டும் சுவாசிப்பதை கற்பனை செய்து பாருங்கள், மங்கிய கருப்பு-வெள்ளை உருவப்படத்தை முழு வண்ணத்தில் பொருளின் உலகத்தை வெளிப்படுத்தும் ஜன்னலாக மாற்றுகிறது. பட வண்ணமயமாக்கல் என அறியப்படும் இந்த உருமாறும் செயல்முறை, கலைஞர்களையும் வரலாற்றாசிரியர்களையும் நீண்ட காலமாக கவர்ந்துள்ளது. இன்று, செயற்கை நுண்ணறிவில், குறிப்பாக ஆழ் கற்றலில் ஏற்பட்ட முன்னேற்றங்களால் உந்தப்பட்டு, தானியங்கு வண்ணமயமாக்கல் ஒரு காலத்தில் அறிவியல் புனைகதையாக இருந்த முடிவுகளை அடைகிறது.

ஒரு கிரேஸ்கேல் படத்திற்கு வண்ணம் சேர்ப்பது ஒரு கவர்ச்சிகரமான சவாலை அளிக்கிறது. ஒரு படம் மோனோக்ரோமில் வழங்கப்பட்டால், கணிசமான அளவு தகவல் - அசல் நிறத் தரவு - இயல்பாகவே இழக்கப்படுகிறது. ஒளிர்வு மதிப்புகளிலிருந்து மட்டும் ஒரு பூவின், ஒரு உடையின் அல்லது வானத்தின் உண்மையான நிறத்தை ஒரு அல்காரிதம் எப்படி அறிய முடியும்? பதில் கிரேஸ்கேல் படத்திலேயே பொதிந்துள்ள நுட்பமான தடயங்களில் உள்ளது: அமைப்புகள், வடிவங்கள், சூழல் மற்றும் ஒளி மற்றும் நிழலின் இடைவினை. சரியான அசல் நிறத்தை சுட்டிக்காட்டுவது சாத்தியமற்றதாக இருக்கலாம் (அந்த ரோஜா உண்மையிலேயே கருஞ்சிவப்பு நிறமா, அல்லது ஒருவேளை இளஞ்சிவப்பு நிறமா?), இலக்கு ஒரு நம்பத்தகுந்த மற்றும் அழகியல் ரீதியாக நம்பவைக்கும் வண்ணமயமாக்கலை உருவாக்குவதை நோக்கி மாறுகிறது. ஒரு மனித பார்வையாளர் நம்பத்தகுந்ததாகக் காணும், அசல் வண்ணப் புகைப்படத்திலிருந்து வேறுபடுத்த முடியாத ஒரு படத்தை உருவாக்குவதே இதன் நோக்கம்.

ஆழ் கற்றல் மாதிரிகள் பரந்த தரவுத்தொகுப்புகளுக்குள் சிக்கலான வடிவங்களையும் புள்ளிவிவர உறவுகளையும் வெளிக்கொணர்வதில் சிறந்து விளங்குகின்றன. இந்த மாதிரிகளை மில்லியன் கணக்கான படங்களில் பயிற்றுவிப்பதன் மூலம், கிரேஸ்கேல் பதிப்புகளை அவற்றின் அசல் வண்ணப் பிரதிகளுடன் ஒப்பிடுவதன் மூலம், அல்காரிதம்கள் குறிப்பிட்ட அமைப்புகளையும் கட்டமைப்புகளையும் சாத்தியமான வண்ணங்களுடன் தொடர்புபடுத்த கற்றுக்கொள்கின்றன. புல் பொதுவாக பச்சை நிறமாகவும், வானம் பெரும்பாலும் நீல நிறமாகவும், சில அமைப்புகள் மரத் துகள்கள் அல்லது துணியுடன் தொடர்புடையதாகவும் அவை கற்றுக்கொள்கின்றன. இது ஒரு படித்த யூகத்திற்கு ஒப்பானது, ஆனால் ஒரு பெரிய காட்சி கலைக்களஞ்சியத்தால் அறியப்பட்டது. அல்காரிதம் மனித அர்த்தத்தில் உண்மையான நிறத்தை ‘அறியாது’, ஆனால் அது கற்றறிந்த தொடர்புகளின் அடிப்படையில் அதிக நிகழ்தகவு கணிப்புகளைச் செய்ய முடியும்.

வண்ணத்தின் மொழி: CIELab மற்றும் நரம்பியல் நெட்வொர்க்குகள்

வண்ணமயமாக்கலை கணக்கீட்டு ரீதியாக சமாளிக்க, வண்ணத்தை பிரதிநிதித்துவப்படுத்த பொருத்தமான வழி நமக்குத் தேவை. RGB (சிவப்பு, பச்சை, நீலம்) காட்சிகளுக்கு பொதுவானது என்றாலும், அது ஒளிர்வு (பிரகாசம்) மற்றும் நிறமூட்டல் (வண்ணம்) தகவல்களைக் கலக்கிறது. இந்த பணிக்கு மிகவும் சாதகமான அமைப்பு CIELab வண்ண வெளி ஆகும். இந்த மாதிரி நேர்த்தியாக வண்ணத்தை மூன்று தனித்துவமான கூறுகளாகப் பிரிக்கிறது:

  • L (Lightness): இந்த சேனல் கிரேஸ்கேல் தகவலைக் குறிக்கிறது, தூய கருப்பு முதல் தூய வெள்ளை வரை இருக்கும். இது அடிப்படையில் கருப்பு-வெள்ளை படத்தில் நாம் ஏற்கனவே வைத்திருக்கும் உள்ளீட்டுத் தரவு.
  • a: இந்த சேனல் பச்சை (எதிர்மறை மதிப்புகள்) முதல் சிவப்பு (நேர்மறை மதிப்புகள்) வரையிலான நிறமாலையை குறியாக்குகிறது.
  • b: இந்த சேனல் நீலம் (எதிர்மறை மதிப்புகள்) முதல் மஞ்சள் (நேர்மறை மதிப்புகள்) வரையிலான நிறமாலையை குறியாக்குகிறது.

CIELab இன் அழகு இந்த பிரிவினையில் உள்ளது. நமது ஆழ் கற்றல் மாதிரி உள்ளீட்டு Lightness (‘L’) சேனலை மட்டுமே அடிப்படையாகக் கொண்டு இரண்டு நிறமூட்டல் சேனல்களையும் (‘a’ மற்றும் ‘b’) கணிப்பதில் கவனம் செலுத்த முடியும். முக்கிய பணி இதுவாகிறது: கிரேஸ்கேல் தகவல் (L) கொடுக்கப்பட்டால், ஒவ்வொரு பிக்சலுக்கும் மிகவும் சாத்தியமான தொடர்புடைய ‘a’ மற்றும் ‘b’ மதிப்புகள் யாவை?

ஆரம்பகால முயற்சிகள் பெரும்பாலும் Convolutional Neural Networks (CNNs) - படங்களைப் போன்ற கட்டம் போன்ற தரவைச் செயலாக்குவதில் குறிப்பாக திறமையான ஒரு வகை ஆழ் கற்றல் கட்டமைப்பைப் பயன்படுத்தின. இந்த நெட்வொர்க்குகள் பெரிய படத் தரவுத்தொகுப்புகளில் (ImageNet போன்றவை) ஒவ்வொரு பிக்சலுக்கும் ‘a’ மற்றும் ‘b’ மதிப்புகளை நேரடியாகக் கணிக்கப் பயிற்றுவிக்கப்பட்டன, அதை ஒரு பின்னடைவுச் சிக்கலாக (தொடர்ச்சியான மதிப்புகளைக் கணித்தல்) கருதுகின்றன. இருப்பினும், ஒரு பொதுவான குறைபாடு வெளிப்பட்டது: இதன் விளைவாக வரும் வண்ணமயமாக்கல்கள் பெரும்பாலும் நிறம் குறைந்ததாக அல்லது மந்தமாக தோன்றின. ஏன்? ஒரு ஆப்பிள் போன்ற பொருளைக் கவனியுங்கள். அது நம்பத்தகுந்த வகையில் சிவப்பு, பச்சை அல்லது மஞ்சள் நிறமாக இருக்கலாம். பின்னடைவின் போது நெட்வொர்க் இந்த சாத்தியக்கூறுகளை சராசரியாகக் கணக்கிட முயற்சித்தால், அது ஒரு துடிப்பான, குறிப்பிட்ட நிறத்திற்குப் பதிலாக மந்தமான, பழுப்பு நிற சமரசத்தில் குடியேறக்கூடும். பல நம்பத்தகுந்த வண்ணங்களில் இந்த சராசரியாக்கும் விளைவு முடிவுகளை மங்கச் செய்தது.

ஒரு முன்னுதாரண மாற்றம்: வகைப்பாடாக வண்ணமயமாக்கல்

நிறம் குறைதல் சிக்கலைச் சமாளிக்கவும், மேலும் துடிப்பான, யதார்த்தமான வண்ணங்களை உருவாக்கவும், ஒரு மிகவும் நுட்பமான அணுகுமுறை சிக்கலை மறுசீரமைக்கிறது. வண்ணக் கணிப்பை பின்னடைவாகக் கருதுவதற்குப் பதிலாக, அது ஒரு வகைப்பாடு பணியாக பார்க்கப்படுகிறது.

இதோ கருத்தியல் மாற்றம்:

  1. அளவுபடுத்தப்பட்ட வண்ண வெளி: சாத்தியமான ‘a’ மற்றும் ‘b’ மதிப்புகளின் தொடர்ச்சியான நிறமாலை, பிரதிநிதித்துவ வண்ண “தொட்டிகள்” அல்லது வகுப்புகளின் முன் வரையறுக்கப்பட்ட தொகுப்பாகப் பிரிக்கப்படுகிறது. ‘a’-‘b’ தளத்திற்குள் ஒரு பரந்த தட்டுகளை நிர்வகிக்கக்கூடிய, இன்னும் விரிவான, தனித்துவமான வண்ண விருப்பங்களின் தொகுப்பாகக் குறைப்பதாக நினைத்துப் பாருங்கள்.
  2. நிகழ்தகவுகளைக் கணித்தல்: உள்ளீட்டு கிரேஸ்கேல் படத்தில் உள்ள ஒவ்வொரு பிக்சலுக்கும், CNN ஒரு ஒற்றை ‘a’ மற்றும் ‘b’ மதிப்பைக் கணிக்காது. அதற்கு பதிலாக, அது அளவுபடுத்தப்பட்ட வண்ணத் தொட்டிகள் முழுவதும் ஒரு நிகழ்தகவு பரவலை வெளியிடுகிறது. இது அடிப்படையில் கூறுகிறது, “இந்த பிக்சலுக்கு, ‘துடிப்பான சிவப்புத் தொட்டி #5’ க்குச் சொந்தமான 70% வாய்ப்பு உள்ளது, ‘வெளிர் சிவப்புத் தொட்டி #2’ ஆக 20% வாய்ப்பு உள்ளது, ‘பழுப்பு நிறத் தொட்டி #12’ ஆக 5% வாய்ப்பு உள்ளது,” மற்றும் பல.
  3. சந்தேகத்தை நிவர்த்தி செய்தல்: இந்த நிகழ்தகவு அணுகுமுறை இயல்பாகவே வண்ண சந்தேகத்தைக் கையாள்கிறது. ஒரு பொருள் பல வண்ணங்களாக இருக்கக்கூடும் என்றால் (ஆப்பிள் போல), நெட்வொர்க் பல வேறுபட்ட வண்ணத் தொட்டிகளுக்கு குறிப்பிடத்தக்க நிகழ்தகவுகளை ஒதுக்க முடியும், இந்த நிச்சயமற்ற தன்மையை ஒரு மந்தமான சராசரியை நாடாமல் பிரதிபலிக்கிறது.
  4. துடிப்பான வண்ணத்திற்கு டிகோடிங்: இறுதிப் படி இந்த நிகழ்தகவு பரவலை ஒவ்வொரு பிக்சலுக்கும் ஒரு ஒற்றை, குறிப்பிட்ட வண்ணமாக மாற்றுவதை உள்ளடக்குகிறது. ஒரு எளிமையான அணுகுமுறை அதிக நிகழ்தகவு கொண்ட வண்ணத் தொட்டியை (முறை) வெறுமனே தேர்ந்தெடுப்பதாக இருக்கலாம். இருப்பினும், துடிப்பை ஊக்குவிக்கவும், நிறம் குறைதல் சிக்கலைத் தவிர்க்கவும், பரவலின் annealed mean ஐக் கணக்கிடுவது போன்ற நுட்பங்கள் பயன்படுத்தப்படுகின்றன. இந்த முறை குறைவான நிகழ்தகவு ஆனால் அதிக வண்ணமயமான (அதிக செறிவு) கணிப்புகளுக்கு அதிக எடையைக் கொடுக்கிறது, ஒட்டுமொத்த கணிக்கப்பட்ட பரவலை மதிக்கும் அதே வேளையில் துடிப்பிற்கு ஆதரவாக “சமநிலைகளை உடைக்கிறது”.

இந்த வகைப்பாடு கட்டமைப்பு, வண்ணமயமாக்கலுக்காக குறிப்பாக இழப்புச் செயல்பாட்டின் (பயிற்சியின் போது மாதிரியின் செயல்திறனை மதிப்பிடுவதற்குப் பயன்படுத்தப்படும் மெட்ரிக்) கவனமான வடிவமைப்புடன் இணைந்து, கிரேஸ்கேல் அம்சங்களுக்கும் சாத்தியமான வண்ணங்களின் பரவலுக்கும் இடையிலான சிக்கலான உறவைக் கற்றுக்கொள்ள மாதிரியை அனுமதிக்கிறது. இதன் விளைவாக, நம்பத்தகுந்த வண்ணமயமான படங்கள் மட்டுமல்லாமல், முந்தைய பின்னடைவு அடிப்படையிலான முறைகளில் பெரும்பாலும் இல்லாத செழுமையையும் காட்சி முறையீட்டையும் கொண்டிருக்கின்றன.

ஹூட்டின் கீழ் எட்டிப்பார்த்தல்: ஒரு நடைமுறை ஆழ் கற்றல் பணிப்பாய்வு

அத்தகைய ஒரு நுட்பமான CNN ஐ புதிதாகப் பயிற்றுவிப்பது மகத்தான கணக்கீட்டு வளங்கள் மற்றும் பரந்த தரவுத்தொகுப்புகள் தேவைப்படும் ஒரு நினைவுச்சின்னப் பணியாக இருந்தாலும், முன் பயிற்சி பெற்ற மாதிரிகளைப் பயன்படுத்துவது இந்தத் தொழில்நுட்பத்தை அணுகக்கூடியதாக ஆக்குகிறது. Python மற்றும் பொதுவான நூலகங்களைப் பயன்படுத்தி, பட வண்ணமயமாக்கலுக்காக முன் பயிற்சி பெற்ற ஆழ் கற்றல் மாதிரியை (குறிப்பாக Caffe கட்டமைப்பைப் பயன்படுத்தி கட்டமைக்கப்பட்டது, அசல் எடுத்துக்காட்டில் உள்ளது போல) பயன்படுத்துவதில் உள்ள கருத்தியல் படிகளைப் பார்ப்போம்.

1. கருவித்தொகுப்பை ஒன்றுசேர்த்தல்:

அடித்தளம் பொதுவாக Python ஐ உள்ளடக்கியது, இது தரவு அறிவியல் மற்றும் AI இல் பிரபலமான ஒரு பல்துறை நிரலாக்க மொழி. முக்கிய நூலகங்கள் முக்கிய பங்கு வகிக்கின்றன:

  • NumPy: திறமையான எண் செயல்பாடுகளுக்கு அவசியம், குறிப்பாக படங்களைக் குறிக்கும் பல பரிமாண வரிசைகளைக் கையாளுதல்.
  • OpenCV (cv2): கணினி பார்வை பணிகளுக்கான ஒரு சக்திவாய்ந்த நூலகம். இது படங்களைப் படிக்க, எழுத, கையாள மற்றும் காண்பிக்க செயல்பாடுகளை வழங்குகிறது, மேலும் முக்கியமாக, Caffe, TensorFlow மற்றும் PyTorch போன்ற பல்வேறு கட்டமைப்புகளில் பயிற்சி பெற்ற மாதிரிகளை ஏற்றவும் இயக்கவும் திறன் கொண்ட ஒரு Deep Neural Network (DNN) தொகுதியைக் கொண்டுள்ளது.
  • Argparse: பயனர் நட்பு கட்டளை வரி இடைமுகங்களை உருவாக்குவதற்கான ஒரு நிலையான Python நூலகம், பயனர்கள் படக் கோப்பு பாதை போன்ற உள்ளீட்டு அளவுருக்களை எளிதாகக் குறிப்பிட அனுமதிக்கிறது.
  • OS: கோப்பு பாதைகளை வெவ்வேறு கணினிகளில் (Windows, macOS, Linux) வேலை செய்யும் வகையில் கட்டமைப்பது போன்ற அடிப்படை இயக்க முறைமை தொடர்புகளுக்குப் பயன்படுத்தப்படுகிறது.

2. முன் பயிற்சி பெற்ற நுண்ணறிவைப் பெறுதல்:

நரம்பியல் நெட்வொர்க்கை செங்கல் செங்கலாகக் கட்டுவதற்குப் பதிலாக, வண்ணமயமாக்கலுக்காக ஏற்கனவே பயிற்சி பெற்ற நெட்வொர்க்கைக் குறிக்கும் கோப்புகளைப் பயன்படுத்துகிறோம். இவை பொதுவாக பின்வருவனவற்றை உள்ளடக்குகின்றன:

  • மாதிரி கட்டமைப்பு கோப்பு (.prototxt for Caffe): இந்தக் கோப்பு நரம்பியல் நெட்வொர்க்கின் கட்டமைப்பை வரையறுக்கிறது - அடுக்குகள், அவற்றின் வகைகள், இணைப்புகள் மற்றும் அளவுருக்கள். இது மாதிரியின் வரைபடம்.
  • பயிற்சி பெற்ற எடைகள் கோப்பு (.caffemodel for Caffe): இந்தக் கோப்பு நெட்வொர்க் அதன் விரிவான பயிற்சி செயல்முறையின் போது கற்றுக்கொண்ட எண் எடைகளைக் கொண்டுள்ளது. இந்த எடைகள் கிரேஸ்கேல் அம்சங்களை வண்ண நிகழ்தகவுகளுடன் வரைபடமாக்குவது பற்றி மாதிரி பெற்ற “அறிவை” உள்ளடக்குகின்றன. இது வடிகட்டப்பட்ட நுண்ணறிவு.
  • வண்ண அளவுபடுத்தல் தரவு (.npy file): இந்த NumPy கோப்பு பொதுவாக முன்னர் விவரிக்கப்பட்ட வகைப்பாடு அணுகுமுறையில் பயன்படுத்தப்படும் அளவுபடுத்தப்பட்ட வண்ணத் தொட்டிகளின் மையப் புள்ளிகளைச் சேமிக்கிறது. இது கணிக்கப்பட்ட வண்ண நிகழ்தகவுகளுக்கான குறிப்புத் தட்டாக செயல்படுகிறது.

இந்தக் கோப்புகள் சக்திவாய்ந்த வன்பொருளில் வாரங்கள் அல்லது மாதங்கள் பயிற்சி பெற்றதன் உச்சக்கட்டத்தைக் குறிக்கின்றன.

3. வண்ணமயமாக்கல் இயந்திரத்தை ஏற்றுதல்:

தேவையான கோப்புகள் அமைந்தவுடன், OpenCV இன் DNN தொகுதி முன் பயிற்சி பெற்ற நெட்வொர்க்கை நினைவகத்தில் ஏற்றுவதற்கான பொறிமுறையை வழங்குகிறது. cv2.dnn.readNetFromCaffe செயல்பாடு (அல்லது பிற கட்டமைப்புகளுக்கான சமமானவை) கட்டமைப்பு மற்றும் எடைகள் கோப்புகளை உள்ளீடாக எடுத்து நெட்வொர்க்கை நிறுவுகிறது, இது அனுமானத்திற்கு (புதிய தரவுகளில் கணிப்புகளைச் செய்யும் செயல்முறை) தயாராகிறது. .npy கோப்பிலிருந்து வண்ண அளவுபடுத்தல் புள்ளிகளும் ஏற்றப்படுகின்றன, பொதுவாக NumPy ஐப் பயன்படுத்தி.

4. நெட்வொர்க் கூறுகளைச் சரிசெய்தல் (தேவைப்பட்டால்):

சில நேரங்களில், முன் பயிற்சி பெற்ற நெட்வொர்க்கிற்குள் உள்ள குறிப்பிட்ட அடுக்குகள் அனுமானத்திற்கு முன் சிறிய சரிசெய்தல் தேவைப்படலாம். விவாதிக்கப்பட்ட வகைப்பாடு அடிப்படையிலான வண்ணமயமாக்கல் மாதிரியின் சூழலில்:

  • வெளியீட்டு அடுக்கு சரிசெய்தல்: ‘a’ மற்றும் ‘b’ சேனல் கணிப்புகளை வெளியிடுவதற்குப் பொறுப்பான இறுதி அடுக்கு (எ.கா., குறிப்பு மாதிரியில் class8_ab எனப் பெயரிடப்பட்டது) .npy கோப்பிலிருந்து வண்ணத் தொட்டி மையங்களுடன் வெளிப்படையாக ஏற்றப்பட வேண்டியிருக்கலாம். இது நெட்வொர்க்கின் வெளியீட்டு நிகழ்தகவுகள் முன் வரையறுக்கப்பட்ட வண்ணத் தட்டுடன் சரியாகப் பொருந்துவதை உறுதி செய்கிறது. புள்ளிகள் பெரும்பாலும் மறுவடிவமைக்கப்பட்டு பொருத்தமான தரவு வகைக்கு (எ.கா., float32) மாற்றப்பட்டு, பின்னர் அடுக்கின் “blobs” (தரவுக் கொள்கலன்களுக்கான Caffe இன் சொல்) க்கு ஒதுக்கப்படுகின்றன.
  • வண்ண மறுசீரமைப்பு: மற்றொரு அடுக்கு (எ.கா., conv8_313_rh) வெளியீட்டில் வெவ்வேறு வண்ணங்களுக்கு இடையிலான சமநிலையை பாதிக்க சரிசெய்யப்படலாம், இது பயிற்சியின் போது கற்றுக்கொண்ட செறிவூட்டலை அதிகரிக்கலாம் அல்லது சார்புகளை சரிசெய்யலாம். இது பெரும்பாலும் அடுக்கின் blobs ஐ குறிப்பிட்ட கற்றறிந்த மதிப்புகளுக்கு (அசல் குறியீட்டில் குறிப்பிடப்பட்டுள்ள 2.606 மதிப்பு போன்றவை, அனுபவ ரீதியாக அல்லது பயிற்சியின் போது பெறப்பட்டது) அமைப்பதை உள்ளடக்குகிறது.

இந்த படிகள் வகைப்பாடு அணுகுமுறையைப் பயன்படுத்தி வண்ணமயமாக்கல் பணியின் குறிப்பிட்ட நுணுக்கங்களுக்காக பொதுவான முன் பயிற்சி பெற்ற மாதிரியைத் தனிப்பயனாக்குகின்றன.

5. உள்ளீட்டுப் படத்தைத் தயார்படுத்துதல்:

உள்ளீட்டு கிரேஸ்கேல் படம் நரம்பியல் நெட்வொர்க்கிற்குள் செலுத்தப்படுவதற்கு முன்பு பல முன் செயலாக்கப் படிகளுக்கு உட்படுத்தப்பட வேண்டும்:

  • ஏற்றுதல்: படம் குறிப்பிட்ட கோப்பு பாதையிலிருந்து cv2.imread ஐப் பயன்படுத்திப் படிக்கப்படுகிறது. அது கிரேஸ்கேலாக இருந்தாலும், OpenCV அதை இயல்பாக 3-சேனல் BGR படமாக ஏற்றக்கூடும், சேனல்கள் முழுவதும் சாம்பல் மதிப்பை நகலெடுக்கிறது.
  • இயல்பாக்கம்: பிக்சல் மதிப்புகள், பொதுவாக 0 முதல் 255 வரை இருக்கும், 255.0 ஆல் வகுப்பதன் மூலம் சிறிய வரம்பிற்கு, பெரும்பாலும் 0.0 முதல் 1.0 வரை அளவிடப்படுகின்றன. இந்த இயல்பாக்கம் நெட்வொர்க்கின் கற்றல் மற்றும் அனுமான செயல்முறையை நிலைப்படுத்த உதவுகிறது.
  • வண்ண வெளி மாற்றம்: படம் இயல்புநிலை BGR வண்ண வெளியிலிருந்து cv2.cvtColor ஐப் பயன்படுத்தி CIELab வண்ண வெளிக்கு மாற்றப்படுகிறது. Lightness (L) சேனலைப் பிரித்தெடுப்பதற்கு இது முக்கியமானது.
  • மறுஅளவிடுதல்: பெரும்பாலான முன் பயிற்சி பெற்ற CNN கள் ஒரு நிலையான அளவிலான உள்ளீட்டுப் படங்களை எதிர்பார்க்கின்றன (எ.கா., 224x224 பிக்சல்கள், ImageNet போன்ற தரவுத்தொகுப்புகளால் பாதிக்கப்பட்ட ஒரு பொதுவான தரநிலை). LAB படம் cv2.resize ஐப் பயன்படுத்தி அதற்கேற்ப மறுஅளவிடப்படுகிறது. இந்த தரப்படுத்தல் நெட்வொர்க்கின் கட்டமைப்புடன் பொருந்தக்கூடிய தன்மையை உறுதி செய்கிறது.
  • L சேனல் தனிமைப்படுத்தல் மற்றும் மையப்படுத்துதல்: Lightness (L) சேனல் மறுஅளவிடப்பட்ட LAB படத்திலிருந்து பிரித்தெடுக்கப்படுகிறது. பெரும்பாலும், அதன் மதிப்புகள் (பொதுவாக LAB இல் 0-100) பின்னர் ஒரு சராசரி மதிப்பை (எ.கா., 50) கழிப்பதன் மூலம் பூஜ்ஜியத்தைச் சுற்றி மையப்படுத்தப்படுகின்றன. இந்த மையப்படுத்துதல் நெட்வொர்க் செயல்திறனை மேம்படுத்தக்கூடிய மற்றொரு பொதுவான நடைமுறையாகும்.

இந்த நுணுக்கமாக முன் செயலாக்கப்பட்ட L சேனல் இப்போது நெட்வொர்க்கிற்கு வழங்கத் தயாராக உள்ளது.

6. அனுமானப் படி: வண்ணத்தைக் கணித்தல்:

இங்குதான் மாயாஜாலம் நிகழ்கிறது:

  • Blob உருவாக்கம்: செயலாக்கப்பட்ட L சேனல் (இப்போது ஒரு 2D வரிசை) DNN தொகுதி (cv2.dnn.blobFromImage) எதிர்பார்க்கும் 4-பரிமாண வரிசை வடிவமான “blob” ஆக மாற்றப்படுகிறது. இந்த வடிவம் பொதுவாக தொகுதி அளவு, சேனல்கள், உயரம் மற்றும் அகலம் ஆகியவற்றிற்கான பரிமாணங்களை உள்ளடக்குகிறது.
  • முன்னோக்கிச் செலுத்துதல்: blob ஆனது net.setInput ஐப் பயன்படுத்தி ஏற்றப்பட்ட நெட்வொர்க்கிற்கான உள்ளீடாக அமைக்கப்படுகிறது. பின்னர், net.forward() முறை அழைக்கப்படுகிறது. இது கணக்கீட்டைத் தூண்டுகிறது: உள்ளீட்டுத் தரவு நெட்வொர்க்கின் அடுக்குகள் வழியாகப் பாய்கிறது, கற்றறிந்த எடைகளால் கட்டளையிடப்பட்ட உருமாற்றங்களுக்கு உட்படுகிறது, இறுதியில் கணிக்கப்பட்ட வெளியீட்டை உருவாக்குகிறது. நமது வண்ணமயமாக்கல் மாதிரிக்கு, வெளியீடு கணிக்கப்பட்ட ‘a’ மற்றும் ‘b’ சேனல்களை (அல்லது மாறாக, வண்ணத் தொட்டிகள் மீதான நிகழ்தகவு பரவல்கள்) குறிக்கிறது.
  • வெளியீட்டு மறுவடிவமைப்பு: நெட்வொர்க்கிலிருந்து வரும் மூல வெளியீடு ‘a’ மற்றும் ‘b’ சேனல்களுக்கு ஒத்த 2D இடஞ்சார்ந்த வடிவத்திற்கு மறுவடிவமைக்கப்பட்டு மாற்றியமைக்கப்பட வேண்டும்.

நெட்வொர்க் இப்போது உள்ளீட்டு கிரேஸ்கேல் படத்தின் அடிப்படையில் வண்ணத் தகவலுக்கான அதன் சிறந்த யூகத்தை உருவாக்கியுள்ளது.

7. வண்ணப் படத்தை மறுகட்டமைத்தல்:

இறுதி நிலை, கணிக்கப்பட்ட வண்ணத் தகவலை அசல் படத் தரவுடன் இணைப்பதை உள்ளடக்குகிறது:

  • கணிக்கப்பட்ட சேனல்களை மறுஅளவிடுதல்: கணிக்கப்பட்ட ‘a’ மற்றும் ‘b’ சேனல்கள் (தற்போது 224x224 அளவில் உள்ளன, நெட்வொர்க் உள்ளீட்டுடன் பொருந்துகிறது) cv2.resize ஐப் பயன்படுத்தி உள்ளீட்டுப் படத்தின் அசல் பரிமாணங்களுக்கு மீண்டும் மறுஅளவிடப்பட வேண்டும். இது வண்ணத் தகவல் அசல் படக் கட்டமைப்புடன் சரியாகப் பொருந்துவதை உறுதி செய்கிறது.
  • அசல் Lightness ஐப் பிரித்தெடுத்தல்: முக்கியமாக, Lightness (L) சேனல் அசல், முழு அளவிலான LAB படத்திலிருந்து (முன் செயலாக்கத்தின் போது மறுஅளவிடுவதற்கு முன்பு உருவாக்கப்பட்டது) பிரித்தெடுக்கப்படுகிறது. அசல் L சேனலைப் பயன்படுத்துவது படத்தின் அசல் விவரம் மற்றும் ஒளிர்வு கட்டமைப்பைப் பாதுகாக்கிறது, இது மறுஅளவிடப்பட்ட L சேனல் பயன்படுத்தப்பட்டால் சிதைந்துவிடும்.
  • இணைத்தல்: அசல் 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). ஸ்கிரிப்ட் பின்னர் ஏற்றுதல், முன் செயலாக்கம், அனுமானம் மற்றும் மறுகட்டமைப்பு படிகளைச் செயல்படுத்துகிறது, இறுதியில் வண்ணமயமாக்கப்பட்ட முடிவைக் காண்பிக்கிறது அல்லது சேமிக்கிறது.

இந்த பணிப்பாய்வு, முன் பயிற்சி பெற்ற மாதிரிகள் மற்றும் சக்திவாய்ந்த நூலகங்களைப் பயன்படுத்தி, ஆழ் கற்றல் வண்ணமயமாக்கலின் சிக்கலான கோட்பாட்டை, மோனோக்ரோம் படங்களுக்கு துடிப்பான, நம்பத்தகுந்த வண்ணத்தைச் சேர்க்கும் திறன் கொண்ட ஒரு நடைமுறைக் கருவியாக மாற்றுகிறது, கடந்த காலத்திற்கும் நிகழ்காலத்திற்கும் இடையிலான இடைவெளியை திறம்படக் குறைக்கிறது.