గ్రేస్కేల్ చిత్రానికి రంగులు తీసుకురావడం ఒక ఆసక్తికరమైన సవాలును అందిస్తుంది. ఒక చిత్రం మోనోక్రోమ్లో అందించబడినప్పుడు గణనీయమైన సమాచారం - అసలు క్రోమాటిక్ డేటా - స్వాభావికంగా కోల్పోతుంది. కేవలం ల్యూమినెన్స్ విలువల నుండి ఒక పువ్వు, దుస్తులు లేదా ఆకాశం యొక్క నిజమైన రంగును ఒక అల్గోరిథం ఎలా తెలుసుకోగలదు? సమాధానం గ్రేస్కేల్ చిత్రంలోనే పొందుపరచబడిన సూక్ష్మ ఆధారాలలో ఉంది: ఆకృతులు, ఆకారాలు, సందర్భం మరియు కాంతి మరియు నీడల పరస్పర చర్య. ఖచ్చితమైన అసలు రంగును గుర్తించడం అసాధ్యం కావచ్చు (ఆ గులాబీ నిజంగా క్రిమ్సన్ రంగులో ఉందా, లేదా బహుశా గులాబీ రంగులో ఉందా?), లక్ష్యం నమ్మదగిన మరియు సౌందర్యపరంగా ఒప్పించే కలరైజేషన్ను సృష్టించడం వైపు మారుతుంది. ఒక మానవ పరిశీలకుడు నమ్మదగినదిగా, అసలు రంగు ఫోటోగ్రాఫ్ నుండి వేరు చేయలేనిదిగా భావించే చిత్రాన్ని ఉత్పత్తి చేయడమే లక్ష్యం.
డీప్ లెర్నింగ్ నమూనాలు విస్తారమైన డేటాసెట్లలోని క్లిష్టమైన నమూనాలను మరియు గణాంక సంబంధాలను వెలికితీయడంలో రాణిస్తాయి. ఈ నమూనాలను లక్షలాది చిత్రాలపై శిక్షణ ఇవ్వడం ద్వారా, గ్రేస్కేల్ వెర్షన్లను వాటి అసలు రంగు ప్రతిరూపాలతో పోల్చడం ద్వారా, అల్గోరిథంలు నిర్దిష్ట ఆకృతులు మరియు నిర్మాణాలను సంభావ్య రంగులతో అనుబంధించడం నేర్చుకుంటాయి. గడ్డి సాధారణంగా ఆకుపచ్చగా ఉంటుందని, ఆకాశం తరచుగా నీలం రంగులో ఉంటుందని మరియు కొన్ని ఆకృతులు కలప గింజ లేదా బట్టకు అనుగుణంగా ఉంటాయని అవి నేర్చుకుంటాయి. ఇది విద్యావంతులైన అంచనా లాంటిది, కానీ అపారమైన దృశ్య విజ్ఞాన సర్వస్వం ద్వారా తెలియజేయబడింది. అల్గోరిథం మానవ కోణంలో నిజమైన రంగును ‘తెలుసుకోదు’, కానీ అది నేర్చుకున్న సహసంబంధాల ఆధారంగా అత్యంత సంభావ్య అంచనాలను చేయగలదు.
రంగుల భాష: CIELab మరియు న్యూరల్ నెట్వర్క్లు
కలరైజేషన్ను గణనపరంగా పరిష్కరించడానికి, రంగును సూచించడానికి మాకు తగిన మార్గం అవసరం. డిస్ప్లేల కోసం RGB (Red, Green, Blue) సాధారణంగా ఉన్నప్పటికీ, ఇది ల్యూమినెన్స్ (ప్రకాశం) మరియు క్రోమినెన్స్ (రంగు) సమాచారాన్ని మిళితం చేస్తుంది. ఈ పనికి మరింత ప్రయోజనకరమైన వ్యవస్థ CIELab కలర్ స్పేస్. ఈ నమూనా రంగును మూడు విభిన్న భాగాలుగా చక్కగా విభజిస్తుంది:
- L (Lightness): ఈ ఛానెల్ గ్రేస్కేల్ సమాచారాన్ని సూచిస్తుంది, స్వచ్ఛమైన నలుపు నుండి స్వచ్ఛమైన తెలుపు వరకు ఉంటుంది. ఇది తప్పనిసరిగా నలుపు-తెలుపు చిత్రంలో మనకు ఇప్పటికే ఉన్న ఇన్పుట్ డేటా.
- a: ఈ ఛానెల్ ఆకుపచ్చ (ప్రతికూల విలువలు) నుండి ఎరుపు (సానుకూల విలువలు) వరకు స్పెక్ట్రమ్ను ఎన్కోడ్ చేస్తుంది.
- b: ఈ ఛానెల్ నీలం (ప్రతికూల విలువలు) నుండి పసుపు (సానుకూల విలువలు) వరకు స్పెక్ట్రమ్ను ఎన్కోడ్ చేస్తుంది.
CIELab యొక్క అందం ఈ విభజనలో ఉంది. మా డీప్ లెర్నింగ్ నమూనా కేవలం ఇన్పుట్ లైట్నెస్ (‘L’) ఛానెల్ ఆధారంగా రెండు క్రోమినెన్స్ ఛానెల్లను (‘a’ మరియు ‘b’) అంచనా వేయడంపై దృష్టి పెట్టగలదు. ప్రధాన విధి ఇలా మారుతుంది: గ్రేస్కేల్ సమాచారం (L) ఇవ్వబడినప్పుడు, ప్రతి పిక్సెల్కు అత్యంత సంభావ్య సంబంధిత ‘a’ మరియు ‘b’ విలువలు ఏమిటి?
ప్రారంభ ప్రయత్నాలు తరచుగా కన్వల్యూషనల్ న్యూరల్ నెట్వర్క్లను (CNNలు) ఉపయోగించాయి - చిత్రాల వంటి గ్రిడ్ లాంటి డేటాను ప్రాసెస్ చేయడంలో ప్రత్యేకంగా నైపుణ్యం కలిగిన ఒక రకమైన డీప్ లెర్నింగ్ ఆర్కిటెక్చర్. ఈ నెట్వర్క్లు పెద్ద ఇమేజ్ డేటాసెట్లపై (ImageNet వంటివి) శిక్షణ పొందాయి, ప్రతి పిక్సెల్కు ‘a’ మరియు ‘b’ విలువలను నేరుగా అంచనా వేయడానికి, దానిని రిగ్రెషన్ సమస్యగా (నిరంతర విలువలను అంచనా వేయడం) పరిగణిస్తాయి. అయినప్పటికీ, ఒక సాధారణ లోపం ఉద్భవించింది: ఫలిత కలరైజేషన్లు తరచుగా డీశాచురేటెడ్ లేదా మ్యూటెడ్ గా కనిపించాయి. ఎందుకు? ఆపిల్ వంటి వస్తువును పరిగణించండి. ఇది నమ్మదగిన విధంగా ఎరుపు, ఆకుపచ్చ లేదా పసుపు రంగులో కూడా ఉండవచ్చు. రిగ్రెషన్ సమయంలో నెట్వర్క్ ఈ అవకాశాలను సగటు చేయడానికి ప్రయత్నిస్తే, అది శక్తివంతమైన, నిర్దిష్ట రంగుకు బదులుగా నిస్తేజమైన, గోధుమ రంగు రాజీపై స్థిరపడవచ్చు. బహుళ నమ్మదగిన రంగులలో ఈ సగటు ప్రభావం ఫలితాలను కడిగివేసే ధోరణిని కలిగి ఉంది.
ఒక నమూనా మార్పు: వర్గీకరణగా కలరైజేషన్
డీశాచురేషన్ సమస్యను అధిగమించడానికి మరియు మరింత శక్తివంతమైన, వాస్తవిక రంగులను ఉత్పత్తి చేయడానికి, మరింత అధునాతన విధానం సమస్యను పునర్నిర్వచిస్తుంది. రంగు అంచనాను రిగ్రెషన్గా పరిగణించే బదులు, ఇది వర్గీకరణ పనిగా చూడబడుతుంది.
ఇక్కడ సంభావిత మార్పు ఉంది:
- క్వాంటైజ్డ్ కలర్ స్పేస్: సాధ్యమయ్యే ‘a’ మరియు ‘b’ విలువల యొక్క నిరంతర స్పెక్ట్రం ప్రతినిధి రంగు ‘బిన్లు’ లేదా తరగతుల యొక్క ముందే నిర్వచించబడిన సెట్గా వివిక్తీకరించబడుతుంది. ‘a’-‘b’ ప్లేన్లో విస్తారమైన పాలెట్ను నిర్వహించదగిన, ఇంకా సమగ్రమైన, విభిన్న రంగు ఎంపికల సెట్కు తగ్గించడం గురించి ఆలోచించండి.
- సంభావ్యతలను అంచనా వేయడం: ఇన్పుట్ గ్రేస్కేల్ చిత్రంలోని ప్రతి పిక్సెల్ కోసం, CNN ఒకే ‘a’ మరియు ‘b’ విలువను అంచనా వేయదు. బదులుగా, ఇది క్వాంటైజ్డ్ కలర్ బిన్లలో సంభావ్యత పంపిణీని అవుట్పుట్ చేస్తుంది. ఇది తప్పనిసరిగా ఇలా చెబుతుంది, ‘ఈ పిక్సెల్ కోసం, ఇది ‘వైబ్రెంట్ రెడ్ బిన్ #5’కి చెందిన 70% అవకాశం ఉంది, ఇది ‘లేత ఎరుపు బిన్ #2’ అయ్యే 20% అవకాశం ఉంది, ఇది ‘బ్రౌనిష్ బిన్ #12’ అయ్యే 5% అవకాశం ఉంది,’ మొదలైనవి.
- సందిగ్ధతను పరిష్కరించడం: ఈ సంభావ్యతా విధానం స్వాభావికంగా రంగు సందిగ్ధతను నిర్వహిస్తుంది. ఒక వస్తువు బహుళ రంగులలో (ఆపిల్ లాగా) ఉండగలిగితే, నెట్వర్క్ అనేక విభిన్న రంగు బిన్లకు గణనీయమైన సంభావ్యతలను కేటాయించగలదు, ఈ అనిశ్చితిని నిస్తేజమైన సగటుకు పాల్పడకుండా ప్రతిబింబిస్తుంది.
- వైబ్రెంట్ రంగుకు డీకోడింగ్: చివరి దశ ఈ సంభావ్యత పంపిణీని ప్రతి పిక్సెల్ కోసం ఒకే, నిర్దిష్ట రంగులోకి తిరిగి అనువదించడం. ఒక అమాయక విధానం అత్యధిక సంభావ్యతతో (మోడ్) రంగు బిన్ను ఎంచుకోవడం కావచ్చు. అయినప్పటికీ, వైబ్రెన్సీని ప్రోత్సహించడానికి మరియు డీశాచురేషన్ సమస్యను నివారించడానికి, పంపిణీ యొక్క అనీల్డ్ మీన్ ను లెక్కించడం వంటి పద్ధతులు ఉపయోగించబడతాయి. ఈ పద్ధతి తక్కువ సంభావ్యత కానీ మరింత రంగురంగుల (అధిక సంతృప్తత) అంచనాలకు ఎక్కువ ప్రాధాన్యతనిస్తుంది, మొత్తం అంచనా వేయబడిన పంపిణీని గౌరవిస్తూనే వైబ్రెన్సీకి అనుకూలంగా ‘టైలను బద్దలు కొడుతుంది’.
ఈ వర్గీకరణ ఫ్రేమ్వర్క్, కలరైజేషన్ కోసం ప్రత్యేకంగా లాస్ ఫంక్షన్ (శిక్షణ సమయంలో నమూనా పనితీరును మూల్యాంకనం చేయడానికి ఉపయోగించే మెట్రిక్) యొక్క జాగ్రత్తగా రూపకల్పనతో కలిపి, గ్రేస్కేల్ లక్షణాలు మరియు సంభావ్య రంగుల పంపిణీ మధ్య సంక్లిష్ట సంబంధాన్ని నేర్చుకోవడానికి నమూనాను అనుమతిస్తుంది. ఫలితం కేవలం నమ్మదగిన రంగులతో కూడిన చిత్రాలు మాత్రమే కాదు, మునుపటి రిగ్రెషన్-ఆధారిత పద్ధతులలో తరచుగా లోపించే గొప్పతనం మరియు దృశ్య ఆకర్షణను కూడా కలిగి ఉంటాయి.
తెర వెనుక చూద్దాం: ఒక ప్రాక్టికల్ డీప్ లెర్నింగ్ వర్క్ఫ్లో
అటువంటి అధునాతన CNN ను మొదటి నుండి శిక్షణ ఇవ్వడం అపారమైన గణన వనరులు మరియు విస్తారమైన డేటాసెట్లు అవసరమయ్యే ఒక స్మారక పని అయినప్పటికీ, ముందుగా శిక్షణ పొందిన నమూనాలను ఉపయోగించడం ఈ సాంకేతికతను అందుబాటులోకి తెస్తుంది. ఇమేజ్ కలరైజేషన్ కోసం ముందుగా శిక్షణ పొందిన డీప్ లెర్నింగ్ నమూనాను (ప్రత్యేకంగా Caffe ఫ్రేమ్వర్క్ని ఉపయోగించి నిర్మించబడింది, అసలు ఉదాహరణలో వలె) ఉపయోగించడంలో సంభావిత దశల ద్వారా నడుద్దాం, Python మరియు సాధారణ లైబ్రరీలను ఉపయోగించి అమలు చేయబడింది.
1. టూల్కిట్ను సమీకరించడం:
పునాది సాధారణంగా Python ను కలిగి ఉంటుంది, ఇది డేటా సైన్స్ మరియు AI లో ప్రసిద్ధి చెందిన బహుముఖ ప్రోగ్రామింగ్ భాష. కీలక లైబ్రరీలు కీలక పాత్రలు పోషిస్తాయి:
- NumPy: సమర్థవంతమైన సంఖ్యా కార్యకలాపాలకు అవసరం, ముఖ్యంగా చిత్రాలను సూచించే బహుళ-డైమెన్షనల్ శ్రేణులను నిర్వహించడం.
- OpenCV (cv2): కంప్యూటర్ విజన్ పనుల కోసం ఒక పవర్హౌస్ లైబ్రరీ. ఇది చిత్రాలను చదవడం, వ్రాయడం, మార్చడం మరియు ప్రదర్శించడం కోసం ఫంక్షన్లను అందిస్తుంది మరియు కీలకమైనది, Caffe, TensorFlow మరియు PyTorch వంటి వివిధ ఫ్రేమ్వర్క్లలో శిక్షణ పొందిన నమూనాలను లోడ్ చేయగల మరియు అమలు చేయగల డీప్ న్యూరల్ నెట్వర్క్ (DNN) మాడ్యూల్ను కలిగి ఉంటుంది.
- 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 చిత్రంగా లోడ్ చేయవచ్చు, ఛానెల్లలో గ్రే విలువను నకిలీ చేస్తుంది. - నార్మలైజేషన్: పిక్సెల్ విలువలు, సాధారణంగా 0 నుండి 255 వరకు ఉంటాయి, 255.0తో భాగించడం ద్వారా చిన్న పరిధికి, తరచుగా 0.0 నుండి 1.0 వరకు స్కేల్ చేయబడతాయి. ఈ నార్మలైజేషన్ నెట్వర్క్ యొక్క అభ్యాసం మరియు అనుమితి ప్రక్రియను స్థిరీకరించడంలో సహాయపడుతుంది.
- కలర్ స్పేస్ మార్పిడి: చిత్రం డిఫాల్ట్ BGR కలర్ స్పేస్ నుండి
cv2.cvtColor
ఉపయోగించి 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 ఛానెల్ ఉపయోగించబడితే క్షీణిస్తుంది.
- కంకాటినేషన్: అసలు L ఛానెల్ రంగు ఛానెల్ అక్షం వెంట రీసైజ్ చేయబడిన, అంచనా వేయబడిన ‘a’ మరియు ‘b’ ఛానెల్లతో కలపబడుతుంది (కంకాటినేట్ చేయబడుతుంది). ఇది పూర్తి 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
). స్క్రిప్ట్ అప్పుడు లోడింగ్, ప్రీప్రాసెసింగ్, అనుమితి మరియు పునర్నిర్మాణ దశలను అమలు చేస్తుంది, చివరికి రంగు వేయబడిన ఫలితాన్ని ప్రదర్శిస్తుంది లేదా సేవ్ చేస్తుంది.
ఈ వర్క్ఫ్లో, ముందుగా శిక్షణ పొందిన నమూనాలు మరియు శక్తివంతమైన లైబ్రరీలను ఉపయోగించుకోవడం, డీప్ లెర్నింగ్ కలరైజేషన్ యొక్క సంక్లిష్ట సిద్ధాంతాన్ని మోనోక్రోమ్ చిత్రాలకు శక్తివంతమైన, నమ్మదగిన రంగును జోడించగల ప్రాక్టికల్ సాధనంగా మారుస్తుంది, గతం మరియు వర్తమానం మధ్య అంతరాన్ని సమర్థవంతంగా తగ్గిస్తుంది.