ਪੁਰਾਣੀਆਂ ਤਸਵੀਰਾਂ ਦੇ ਸੇਪੀਆ ਟੋਨ ਅਤੇ ਗ੍ਰੇਸਕੇਲ ਗਰੇਡੀਐਂਟ ਇੱਕ ਵਿਲੱਖਣ ਖਿੱਚ ਰੱਖਦੇ ਹਨ, ਸਮੇਂ ਵਿੱਚ ਜੰਮੇ ਹੋਏ ਪਲਾਂ ਨੂੰ ਕੈਦ ਕਰਦੇ ਹਨ। ਫਿਰ ਵੀ, ਉਹਨਾਂ ਵਿੱਚ ਅਕਸਰ ਅਸਲ ਦ੍ਰਿਸ਼ ਦੀ ਜੀਵੰਤ ਤੁਰੰਤਤਾ ਦੀ ਘਾਟ ਹੁੰਦੀ ਹੈ। ਕਲਪਨਾ ਕਰੋ ਕਿ ਇਹਨਾਂ ਪਿਆਰੀਆਂ ਯਾਦਾਂ ਵਿੱਚ ਜੀਵਨ ਦੇ ਰੰਗਾਂ ਨੂੰ ਵਾਪਸ ਭਰਨਾ, ਇੱਕ ਫਿੱਕੇ ਕਾਲੇ-ਚਿੱਟੇ ਪੋਰਟਰੇਟ ਨੂੰ ਇੱਕ ਖਿੜਕੀ ਵਿੱਚ ਬਦਲਣਾ ਜੋ ਵਿਸ਼ੇ ਦੀ ਦੁਨੀਆ ਨੂੰ ਪੂਰੇ ਰੰਗ ਵਿੱਚ ਪ੍ਰਗਟ ਕਰਦਾ ਹੈ। ਇਹ ਪਰਿਵਰਤਨਸ਼ੀਲ ਪ੍ਰਕਿਰਿਆ, ਜਿਸਨੂੰ ਚਿੱਤਰ ਰੰਗੀਨੀਕਰਨ ਵਜੋਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਨੇ ਲੰਬੇ ਸਮੇਂ ਤੋਂ ਕਲਾਕਾਰਾਂ ਅਤੇ ਇਤਿਹਾਸਕਾਰਾਂ ਨੂੰ ਮੋਹਿਤ ਕੀਤਾ ਹੈ। ਅੱਜ, ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ, ਖਾਸ ਤੌਰ ‘ਤੇ deep learning
ਵਿੱਚ ਤਰੱਕੀ ਦੁਆਰਾ ਪ੍ਰੇਰਿਤ, ਸਵੈਚਾਲਤ ਰੰਗੀਨੀਕਰਨ ਅਜਿਹੇ ਨਤੀਜੇ ਪ੍ਰਾਪਤ ਕਰ ਰਿਹਾ ਹੈ ਜੋ ਕਦੇ ਵਿਗਿਆਨ ਗਲਪ ਦੀ ਸਮੱਗਰੀ ਸਨ।
ਇੱਕ ਗ੍ਰੇਸਕੇਲ ਚਿੱਤਰ ਨੂੰ ਰੰਗ ਦੇਣਾ ਇੱਕ ਦਿਲਚਸਪ ਚੁਣੌਤੀ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਜਾਣਕਾਰੀ ਦੀ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਮਾਤਰਾ - ਅਸਲ ਕ੍ਰੋਮੈਟਿਕ ਡੇਟਾ - ਜਦੋਂ ਇੱਕ ਚਿੱਤਰ ਨੂੰ ਮੋਨੋਕ੍ਰੋਮ ਵਿੱਚ ਪੇਸ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਕੁਦਰਤੀ ਤੌਰ ‘ਤੇ ਗੁੰਮ ਹੋ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਐਲਗੋਰਿਦਮ ਸਿਰਫ ਚਮਕ ਮੁੱਲਾਂ ਤੋਂ ਇੱਕ ਫੁੱਲ, ਇੱਕ ਪਹਿਰਾਵੇ, ਜਾਂ ਅਸਮਾਨ ਦੇ ਅਸਲ ਰੰਗ ਨੂੰ ਕਿਵੇਂ ਜਾਣ ਸਕਦਾ ਹੈ? ਜਵਾਬ ਗ੍ਰੇਸਕੇਲ ਚਿੱਤਰ ਵਿੱਚ ਹੀ ਸ਼ਾਮਲ ਸੂਖਮ ਸੁਰਾਗਾਂ ਵਿੱਚ ਹੈ: ਟੈਕਸਚਰ, ਆਕਾਰ, ਸੰਦਰਭ, ਅਤੇ ਰੋਸ਼ਨੀ ਅਤੇ ਪਰਛਾਵੇਂ ਦਾ ਆਪਸੀ ਤਾਲਮੇਲ। ਜਦੋਂ ਕਿ ਸਹੀ ਅਸਲ ਰੰਗ ਨੂੰ ਦਰਸਾਉਣਾ ਅਸੰਭਵ ਹੋ ਸਕਦਾ ਹੈ (ਕੀ ਉਹ ਗੁਲਾਬ ਸੱਚਮੁੱਚ ਗੂੜ੍ਹਾ ਲਾਲ ਸੀ, ਜਾਂ ਸ਼ਾਇਦ ਗੁਲਾਬੀ ਦਾ ਇੱਕ ਸ਼ੇਡ?), ਟੀਚਾ ਇੱਕ ਸੰਭਾਵੀ ਅਤੇ ਸੁਹਜਾਤਮਕ ਤੌਰ ‘ਤੇ ਵਿਸ਼ਵਾਸਯੋਗ ਰੰਗੀਨੀਕਰਨ ਬਣਾਉਣ ਵੱਲ ਬਦਲ ਜਾਂਦਾ ਹੈ। ਉਦੇਸ਼ ਇੱਕ ਅਜਿਹਾ ਚਿੱਤਰ ਤਿਆਰ ਕਰਨਾ ਹੈ ਜਿਸਨੂੰ ਇੱਕ ਮਨੁੱਖੀ ਦਰਸ਼ਕ ਵਿਸ਼ਵਾਸਯੋਗ ਸਮਝੇਗਾ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਸੰਭਾਵੀ ਤੌਰ ‘ਤੇ ਇੱਕ ਅਸਲ ਰੰਗੀਨ ਤਸਵੀਰ ਤੋਂ ਵੱਖਰਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।
Deep learning
ਮਾਡਲ ਵਿਸ਼ਾਲ ਡੇਟਾਸੈਟਾਂ ਦੇ ਅੰਦਰ ਗੁੰਝਲਦਾਰ ਪੈਟਰਨਾਂ ਅਤੇ ਅੰਕੜਾਤਮਕ ਸਬੰਧਾਂ ਨੂੰ ਉਜਾਗਰ ਕਰਨ ਵਿੱਚ ਉੱਤਮ ਹਨ। ਇਹਨਾਂ ਮਾਡਲਾਂ ਨੂੰ ਲੱਖਾਂ ਚਿੱਤਰਾਂ ‘ਤੇ ਸਿਖਲਾਈ ਦੇ ਕੇ, ਗ੍ਰੇਸਕੇਲ ਸੰਸਕਰਣਾਂ ਦੀ ਉਹਨਾਂ ਦੇ ਅਸਲ ਰੰਗ ਦੇ ਹਮਰੁਤਬਾ ਨਾਲ ਤੁਲਨਾ ਕਰਕੇ, ਐਲਗੋਰਿਦਮ ਖਾਸ ਟੈਕਸਚਰ ਅਤੇ ਢਾਂਚਿਆਂ ਨੂੰ ਸੰਭਾਵਿਤ ਰੰਗਾਂ ਨਾਲ ਜੋੜਨਾ ਸਿੱਖਦੇ ਹਨ। ਉਹ ਸਿੱਖਦੇ ਹਨ ਕਿ ਘਾਹ ਆਮ ਤੌਰ ‘ਤੇ ਹਰਾ ਹੁੰਦਾ ਹੈ, ਅਸਮਾਨ ਅਕਸਰ ਨੀਲੇ ਹੁੰਦੇ ਹਨ, ਅਤੇ ਕੁਝ ਟੈਕਸਚਰ ਲੱਕੜ ਦੇ ਦਾਣੇ ਜਾਂ ਫੈਬਰਿਕ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ। ਇਹ ਇੱਕ ਪੜ੍ਹੇ-ਲਿਖੇ ਅੰਦਾਜ਼ੇ ਦੇ ਸਮਾਨ ਹੈ, ਪਰ ਇੱਕ ਵਿਸ਼ਾਲ ਵਿਜ਼ੂਅਲ ਐਨਸਾਈਕਲੋਪੀਡੀਆ ਦੁਆਰਾ ਸੂਚਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਐਲਗੋਰਿਦਮ ਮਨੁੱਖੀ ਅਰਥਾਂ ਵਿੱਚ ਅਸਲ ਰੰਗ ਨੂੰ “ਨਹੀਂ ਜਾਣਦਾ”, ਪਰ ਇਹ ਸਿੱਖੇ ਹੋਏ ਸਬੰਧਾਂ ਦੇ ਅਧਾਰ ਤੇ ਬਹੁਤ ਸੰਭਾਵਿਤ ਭਵਿੱਖਬਾਣੀਆਂ ਕਰ ਸਕਦਾ ਹੈ।
ਰੰਗ ਦੀ ਭਾਸ਼ਾ: CIELab ਅਤੇ ਨਿਊਰਲ ਨੈੱਟਵਰਕ
ਰੰਗੀਨੀਕਰਨ ਨੂੰ ਕੰਪਿਊਟੇਸ਼ਨਲ ਤੌਰ ‘ਤੇ ਹੱਲ ਕਰਨ ਲਈ, ਸਾਨੂੰ ਰੰਗ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਇੱਕ ਢੁਕਵੇਂ ਤਰੀਕੇ ਦੀ ਲੋੜ ਹੈ। ਜਦੋਂ ਕਿ RGB
(ਲਾਲ, ਹਰਾ, ਨੀਲਾ) ਡਿਸਪਲੇ ਲਈ ਆਮ ਹੈ, ਇਹ ਚਮਕ (brightness) ਅਤੇ ਕ੍ਰੋਮਿਨੈਂਸ (color) ਜਾਣਕਾਰੀ ਨੂੰ ਮਿਲਾਉਂਦਾ ਹੈ। ਇਸ ਕਾਰਜ ਲਈ ਇੱਕ ਵਧੇਰੇ ਲਾਭਦਾਇਕ ਪ੍ਰਣਾਲੀ CIELab
ਕਲਰ ਸਪੇਸ ਹੈ। ਇਹ ਮਾਡਲ ਸ਼ਾਨਦਾਰ ਢੰਗ ਨਾਲ ਰੰਗ ਨੂੰ ਤਿੰਨ ਵੱਖ-ਵੱਖ ਭਾਗਾਂ ਵਿੱਚ ਵੰਡਦਾ ਹੈ:
- L (Lightness): ਇਹ ਚੈਨਲ ਗ੍ਰੇਸਕੇਲ ਜਾਣਕਾਰੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ, ਸ਼ੁੱਧ ਕਾਲੇ ਤੋਂ ਸ਼ੁੱਧ ਚਿੱਟੇ ਤੱਕ। ਇਹ ਲਾਜ਼ਮੀ ਤੌਰ ‘ਤੇ ਇਨਪੁਟ ਡੇਟਾ ਹੈ ਜੋ ਸਾਡੇ ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਾਲੇ-ਚਿੱਟੇ ਚਿੱਤਰ ਵਿੱਚ ਹੈ।
- a: ਇਹ ਚੈਨਲ ਹਰੇ (ਨਕਾਰਾਤਮਕ ਮੁੱਲ) ਤੋਂ ਲਾਲ (ਸਕਾਰਾਤਮਕ ਮੁੱਲ) ਤੱਕ ਸਪੈਕਟ੍ਰਮ ਨੂੰ ਏਨਕੋਡ ਕਰਦਾ ਹੈ।
- b: ਇਹ ਚੈਨਲ ਨੀਲੇ (ਨਕਾਰਾਤਮਕ ਮੁੱਲ) ਤੋਂ ਪੀਲੇ (ਸਕਾਰਾਤਮਕ ਮੁੱਲ) ਤੱਕ ਸਪੈਕਟ੍ਰਮ ਨੂੰ ਏਨਕੋਡ ਕਰਦਾ ਹੈ।
CIELab
ਦੀ ਖੂਬਸੂਰਤੀ ਇਸ ਵੱਖਰੇਪਣ ਵਿੱਚ ਹੈ। ਸਾਡਾ deep learning
ਮਾਡਲ ਸਿਰਫ ਇਨਪੁਟ Lightness (‘L’) ਚੈਨਲ ਦੇ ਅਧਾਰ ਤੇ ਦੋ ਕ੍ਰੋਮਿਨੈਂਸ ਚੈਨਲਾਂ (‘a’ ਅਤੇ ‘b’) ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਨ ‘ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਮੁੱਖ ਕਾਰਜ ਬਣ ਜਾਂਦਾ ਹੈ: ਗ੍ਰੇਸਕੇਲ ਜਾਣਕਾਰੀ (L) ਦਿੱਤੀ ਗਈ ਹੈ, ਹਰੇਕ ਪਿਕਸਲ ਲਈ ਸਭ ਤੋਂ ਵੱਧ ਸੰਭਾਵਿਤ ਅਨੁਸਾਰੀ ‘a’ ਅਤੇ ‘b’ ਮੁੱਲ ਕੀ ਹਨ?
ਸ਼ੁਰੂਆਤੀ ਕੋਸ਼ਿਸ਼ਾਂ ਵਿੱਚ ਅਕਸਰ ਕਨਵੋਲਿਊਸ਼ਨਲ ਨਿਊਰਲ ਨੈੱਟਵਰਕ (CNNs
) ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਸੀ - ਇੱਕ ਕਿਸਮ ਦਾ deep learning
ਆਰਕੀਟੈਕਚਰ ਜੋ ਖਾਸ ਤੌਰ ‘ਤੇ ਗਰਿੱਡ-ਵਰਗੇ ਡੇਟਾ ਜਿਵੇਂ ਕਿ ਚਿੱਤਰਾਂ ਦੀ ਪ੍ਰੋਸੈਸਿੰਗ ਵਿੱਚ ਮਾਹਰ ਹੈ। ਇਹਨਾਂ ਨੈੱਟਵਰਕਾਂ ਨੂੰ ਵੱਡੇ ਚਿੱਤਰ ਡੇਟਾਸੈਟਾਂ (ਜਿਵੇਂ ਕਿ ImageNet
) ‘ਤੇ ਸਿਖਲਾਈ ਦਿੱਤੀ ਗਈ ਸੀ ਤਾਂ ਜੋ ਹਰੇਕ ਪਿਕਸਲ ਲਈ ‘a’ ਅਤੇ ‘b’ ਮੁੱਲਾਂ ਦੀ ਸਿੱਧੀ ਭਵਿੱਖਬਾਣੀ ਕੀਤੀ ਜਾ ਸਕੇ, ਇਸ ਨੂੰ ਇੱਕ regression
ਸਮੱਸਿਆ (ਨਿਰੰਤਰ ਮੁੱਲਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ) ਵਜੋਂ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇੱਕ ਆਮ ਕਮਜ਼ੋਰੀ ਸਾਹਮਣੇ ਆਈ: ਨਤੀਜੇ ਵਜੋਂ ਰੰਗੀਨੀਕਰਨ ਅਕਸਰ ਅਸੰਤ੍ਰਿਪਤ ਜਾਂ ਫਿੱਕੇ ਦਿਖਾਈ ਦਿੰਦੇ ਸਨ। ਕਿਉਂ? ਇੱਕ ਸੇਬ ਵਰਗੀ ਵਸਤੂ ‘ਤੇ ਗੌਰ ਕਰੋ। ਇਹ ਸੰਭਾਵੀ ਤੌਰ ‘ਤੇ ਲਾਲ, ਹਰਾ, ਜਾਂ ਪੀਲਾ ਵੀ ਹੋ ਸਕਦਾ ਹੈ। ਜੇਕਰ ਨੈੱਟਵਰਕ regression
ਦੌਰਾਨ ਇਹਨਾਂ ਸੰਭਾਵਨਾਵਾਂ ਦਾ ਔਸਤ ਕੱਢਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਇੱਕ ਜੀਵੰਤ, ਖਾਸ ਰੰਗ ਦੀ ਬਜਾਏ ਇੱਕ ਫਿੱਕੇ, ਭੂਰੇ ਸਮਝੌਤੇ ‘ਤੇ ਸੈਟਲ ਹੋ ਸਕਦਾ ਹੈ। ਕਈ ਸੰਭਾਵਿਤ ਰੰਗਾਂ ਵਿੱਚ ਇਸ ਔਸਤ ਪ੍ਰਭਾਵ ਨੇ ਨਤੀਜਿਆਂ ਨੂੰ ਫਿੱਕਾ ਕਰ ਦਿੱਤਾ।
ਇੱਕ ਪੈਰਾਡਾਈਮ ਸ਼ਿਫਟ: ਵਰਗੀਕਰਨ ਵਜੋਂ ਰੰਗੀਨੀਕਰਨ
ਅਸੰਤ੍ਰਿਪਤਾ ਦੇ ਮੁੱਦੇ ਨੂੰ ਦੂਰ ਕਰਨ ਅਤੇ ਵਧੇਰੇ ਜੀਵੰਤ, ਯਥਾਰਥਵਾਦੀ ਰੰਗ ਪੈਦਾ ਕਰਨ ਲਈ, ਇੱਕ ਵਧੇਰੇ ਆਧੁਨਿਕ ਪਹੁੰਚ ਸਮੱਸਿਆ ਨੂੰ ਮੁੜ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੀ ਹੈ। ਰੰਗ ਦੀ ਭਵਿੱਖਬਾਣੀ ਨੂੰ regression
ਵਜੋਂ ਮੰਨਣ ਦੀ ਬਜਾਏ, ਇਸਨੂੰ ਇੱਕ ਵਰਗੀਕਰਨ ਕਾਰਜ ਵਜੋਂ ਦੇਖਿਆ ਜਾਂਦਾ ਹੈ।
ਇੱਥੇ ਸੰਕਲਪਿਕ ਤਬਦੀਲੀ ਹੈ:
- ਕੁਆਂਟਾਈਜ਼ਡ ਕਲਰ ਸਪੇਸ: ਸੰਭਾਵਿਤ ‘a’ ਅਤੇ ‘b’ ਮੁੱਲਾਂ ਦੇ ਨਿਰੰਤਰ ਸਪੈਕਟ੍ਰਮ ਨੂੰ ਪ੍ਰਤੀਨਿਧ ਰੰਗ “ਬਿਨ” ਜਾਂ ਕਲਾਸਾਂ ਦੇ ਇੱਕ ਪੂਰਵ-ਪ੍ਰਭਾਸ਼ਿਤ ਸਮੂਹ ਵਿੱਚ ਵੰਡਿਆ ਜਾਂਦਾ ਹੈ। ਇਸਨੂੰ ‘a’-‘b’ ਪਲੇਨ ਦੇ ਅੰਦਰ ਇੱਕ ਵਿਸ਼ਾਲ ਪੈਲੇਟ ਨੂੰ ਇੱਕ ਪ੍ਰਬੰਧਨਯੋਗ, ਪਰ ਵਿਆਪਕ, ਵੱਖਰੇ ਰੰਗ ਵਿਕਲਪਾਂ ਦੇ ਸਮੂਹ ਵਿੱਚ ਘਟਾਉਣ ਬਾਰੇ ਸੋਚੋ।
- ਸੰਭਾਵਨਾਵਾਂ ਦੀ ਭਵਿੱਖਬਾਣੀ: ਇਨਪੁਟ ਗ੍ਰੇਸਕੇਲ ਚਿੱਤਰ ਵਿੱਚ ਹਰੇਕ ਪਿਕਸਲ ਲਈ,
CNN
ਇੱਕ ਸਿੰਗਲ ‘a’ ਅਤੇ ‘b’ ਮੁੱਲ ਦੀ ਭਵਿੱਖਬਾਣੀ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਬਜਾਏ, ਇਹ ਕੁਆਂਟਾਈਜ਼ਡ ਰੰਗ ਬਿਨਾਂ ਵਿੱਚ ਇੱਕ ਸੰਭਾਵਨਾ ਵੰਡ ਨੂੰ ਆਉਟਪੁੱਟ ਕਰਦਾ ਹੈ। ਇਹ ਲਾਜ਼ਮੀ ਤੌਰ ‘ਤੇ ਕਹਿੰਦਾ ਹੈ, “ਇਸ ਪਿਕਸਲ ਲਈ, 70% ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਇਹ ‘ਵਾਈਬ੍ਰੈਂਟ ਰੈੱਡ ਬਿਨ #5’ ਨਾਲ ਸਬੰਧਤ ਹੈ, 20% ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਇਹ ‘ਪੇਲ ਰੈੱਡ ਬਿਨ #2’ ਹੈ, 5% ਸੰਭਾਵਨਾ ਹੈ ਕਿ ਇਹ ‘ਬ੍ਰਾਊਨਿਸ਼ ਬਿਨ #12’ ਹੈ,” ਅਤੇ ਇਸ ਤਰ੍ਹਾਂ ਹੋਰ। - ਅਸਪਸ਼ਟਤਾ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਨਾ: ਇਹ ਸੰਭਾਵੀ ਪਹੁੰਚ ਕੁਦਰਤੀ ਤੌਰ ‘ਤੇ ਰੰਗ ਦੀ ਅਸਪਸ਼ਟਤਾ ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ। ਜੇਕਰ ਕੋਈ ਵਸਤੂ ਕਈ ਰੰਗਾਂ ਦੀ ਹੋ ਸਕਦੀ ਹੈ (ਜਿਵੇਂ ਕਿ ਸੇਬ), ਤਾਂ ਨੈੱਟਵਰਕ ਕਈ ਵੱਖ-ਵੱਖ ਰੰਗ ਬਿਨਾਂ ਨੂੰ ਮਹੱਤਵਪੂਰਨ ਸੰਭਾਵਨਾਵਾਂ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਅਨਿਸ਼ਚਿਤਤਾ ਨੂੰ ਇੱਕ ਫਿੱਕੇ ਔਸਤ ਦਾ ਸਹਾਰਾ ਲਏ ਬਿਨਾਂ ਦਰਸਾਉਂਦਾ ਹੈ।
- ਵਾਈਬ੍ਰੈਂਟ ਰੰਗ ਵਿੱਚ ਡੀਕੋਡਿੰਗ: ਅੰਤਮ ਕਦਮ ਵਿੱਚ ਇਸ ਸੰਭਾਵਨਾ ਵੰਡ ਨੂੰ ਹਰੇਕ ਪਿਕਸਲ ਲਈ ਇੱਕ ਸਿੰਗਲ, ਖਾਸ ਰੰਗ ਵਿੱਚ ਵਾਪਸ ਅਨੁਵਾਦ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ। ਇੱਕ ਸਧਾਰਨ ਪਹੁੰਚ ਸਿਰਫ਼ ਸਭ ਤੋਂ ਵੱਧ ਸੰਭਾਵਨਾ (ਮੋਡ) ਵਾਲੇ ਰੰਗ ਬਿਨ ਨੂੰ ਚੁਣਨਾ ਹੋ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਜੀਵੰਤਤਾ ਨੂੰ ਉਤਸ਼ਾਹਿਤ ਕਰਨ ਅਤੇ ਅਸੰਤ੍ਰਿਪਤਾ ਦੀ ਸਮੱਸਿਆ ਤੋਂ ਬਚਣ ਲਈ, ਵੰਡ ਦੇ ਐਨੀਲਡ ਮੀਨ ਦੀ ਗਣਨਾ ਕਰਨ ਵਰਗੀਆਂ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਵਿਧੀ ਘੱਟ ਸੰਭਾਵਿਤ ਪਰ ਵਧੇਰੇ ਰੰਗੀਨ (ਉੱਚ ਸੰਤ੍ਰਿਪਤਾ) ਭਵਿੱਖਬਾਣੀਆਂ ਨੂੰ ਵਧੇਰੇ ਭਾਰ ਦਿੰਦੀ ਹੈ, ਸਮੁੱਚੀ ਭਵਿੱਖਬਾਣੀ ਕੀਤੀ ਵੰਡ ਦਾ ਸਨਮਾਨ ਕਰਦੇ ਹੋਏ ਜੀਵੰਤਤਾ ਦੇ ਪੱਖ ਵਿੱਚ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ “ਟਾਈ ਤੋੜਦੀ” ਹੈ।
ਇਹ ਵਰਗੀਕਰਨ ਢਾਂਚਾ, ਖਾਸ ਤੌਰ ‘ਤੇ ਰੰਗੀਨੀਕਰਨ ਲਈ ਨੁਕਸਾਨ ਫੰਕਸ਼ਨ (ਸਿਖਲਾਈ ਦੌਰਾਨ ਮਾਡਲ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਦਾ ਮੁਲਾਂਕਣ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਮੈਟ੍ਰਿਕ) ਦੇ ਸਾਵਧਾਨ ਡਿਜ਼ਾਈਨ ਦੇ ਨਾਲ ਮਿਲ ਕੇ, ਮਾਡਲ ਨੂੰ ਗ੍ਰੇਸਕੇਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਸੰਭਾਵਿਤ ਰੰਗਾਂ ਦੀ ਵੰਡ ਵਿਚਕਾਰ ਗੁੰਝਲਦਾਰ ਸਬੰਧ ਸਿੱਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਨਤੀਜਾ ਉਹ ਚਿੱਤਰ ਹਨ ਜੋ ਨਾ ਸਿਰਫ ਸੰਭਾਵੀ ਤੌਰ ‘ਤੇ ਰੰਗੀਨ ਹਨ ਬਲਕਿ ਇੱਕ ਅਮੀਰੀ ਅਤੇ ਵਿਜ਼ੂਅਲ ਅਪੀਲ ਵੀ ਰੱਖਦੇ ਹਨ ਜੋ ਅਕਸਰ ਪਹਿਲਾਂ ਦੇ regression
-ਅਧਾਰਿਤ ਤਰੀਕਿਆਂ ਵਿੱਚ ਘੱਟ ਹੁੰਦੀ ਹੈ।
ਪਰਦੇ ਪਿੱਛੇ ਝਾਤ: ਇੱਕ ਪ੍ਰੈਕਟੀਕਲ ਡੀਪ ਲਰਨਿੰਗ ਵਰਕਫਲੋ
ਜਦੋਂ ਕਿ ਅਜਿਹੇ ਆਧੁਨਿਕ CNN
ਨੂੰ ਸ਼ੁਰੂ ਤੋਂ ਸਿਖਲਾਈ ਦੇਣਾ ਇੱਕ ਬਹੁਤ ਵੱਡਾ ਕੰਮ ਹੈ ਜਿਸ ਲਈ ਬਹੁਤ ਜ਼ਿਆਦਾ ਕੰਪਿਊਟੇਸ਼ਨਲ ਸਰੋਤਾਂ ਅਤੇ ਵਿਸ਼ਾਲ ਡੇਟਾਸੈਟਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਪੂਰਵ-ਸਿਖਲਾਈ ਪ੍ਰਾਪਤ ਮਾਡਲਾਂ ਦਾ ਲਾਭ ਉਠਾਉਣਾ ਇਸ ਤਕਨਾਲੋਜੀ ਨੂੰ ਪਹੁੰਚਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। ਆਓ ਪਾਈਥਨ ਅਤੇ ਆਮ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲਾਗੂ ਕੀਤੇ ਗਏ ਚਿੱਤਰ ਰੰਗੀਨੀਕਰਨ ਲਈ ਇੱਕ ਪੂਰਵ-ਸਿਖਲਾਈ ਪ੍ਰਾਪਤ deep learning
ਮਾਡਲ (ਖਾਸ ਤੌਰ ‘ਤੇ Caffe
ਫਰੇਮਵਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਣਾਇਆ ਗਿਆ, ਜਿਵੇਂ ਕਿ ਅਸਲ ਉਦਾਹਰਨ ਵਿੱਚ) ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਿੱਚ ਸ਼ਾਮਲ ਸੰਕਲਪਿਕ ਕਦਮਾਂ ‘ਤੇ ਚੱਲੀਏ।
1. ਟੂਲਕਿੱਟ ਨੂੰ ਇਕੱਠਾ ਕਰਨਾ:
ਨੀਂਹ ਵਿੱਚ ਆਮ ਤੌਰ ‘ਤੇ ਪਾਈਥਨ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ, ਇੱਕ ਬਹੁਮੁਖੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਜੋ ਡੇਟਾ ਵਿਗਿਆਨ ਅਤੇ AI ਵਿੱਚ ਪ੍ਰਸਿੱਧ ਹੈ। ਮੁੱਖ ਲਾਇਬ੍ਰੇਰੀਆਂ ਮਹੱਤਵਪੂਰਨ ਭੂਮਿਕਾਵਾਂ ਨਿਭਾਉਂਦੀਆਂ ਹਨ:
NumPy
: ਕੁਸ਼ਲ ਸੰਖਿਆਤਮਕ ਕਾਰਵਾਈਆਂ ਲਈ ਜ਼ਰੂਰੀ, ਖਾਸ ਤੌਰ ‘ਤੇ ਬਹੁ-ਆਯਾਮੀ ਐਰੇ ਨੂੰ ਸੰਭਾਲਣਾ ਜੋ ਚਿੱਤਰਾਂ ਨੂੰ ਦਰਸਾਉਂਦੇ ਹਨ।OpenCV (cv2)
: ਕੰਪਿਊਟਰ ਵਿਜ਼ਨ ਕਾਰਜਾਂ ਲਈ ਇੱਕ ਪਾਵਰਹਾਊਸ ਲਾਇਬ੍ਰੇਰੀ। ਇਹ ਚਿੱਤਰਾਂ ਨੂੰ ਪੜ੍ਹਨ, ਲਿਖਣ, ਹੇਰਾਫੇਰੀ ਕਰਨ ਅਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਮਹੱਤਵਪੂਰਨ ਤੌਰ ‘ਤੇ, ਇੱਕ ਡੀਪ ਨਿਊਰਲ ਨੈੱਟਵਰਕ (DNN
) ਮੋਡੀਊਲ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਜੋCaffe
,TensorFlow
, ਅਤੇPyTorch
ਵਰਗੇ ਵੱਖ-ਵੱਖ ਫਰੇਮਵਰਕਾਂ ਵਿੱਚ ਸਿਖਲਾਈ ਪ੍ਰਾਪਤ ਮਾਡਲਾਂ ਨੂੰ ਲੋਡ ਕਰਨ ਅਤੇ ਚਲਾਉਣ ਦੇ ਸਮਰੱਥ ਹੈ।Argparse
: ਉਪਭੋਗਤਾ-ਅਨੁਕੂਲ ਕਮਾਂਡ-ਲਾਈਨ ਇੰਟਰਫੇਸ ਬਣਾਉਣ ਲਈ ਇੱਕ ਮਿਆਰੀ ਪਾਈਥਨ ਲਾਇਬ੍ਰੇਰੀ, ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਇਨਪੁਟ ਪੈਰਾਮੀਟਰ ਜਿਵੇਂ ਕਿ ਚਿੱਤਰ ਫਾਈਲ ਮਾਰਗ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।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 ਤੱਕ ਸਕੇਲ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਇਹ ਨਾਰਮਲਾਈਜ਼ੇਸ਼ਨ ਨੈੱਟਵਰਕ ਦੀ ਸਿਖਲਾਈ ਅਤੇ ਅਨੁਮਾਨ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਥਿਰ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ।
- ਕਲਰ ਸਪੇਸ ਪਰਿਵਰਤਨ: ਚਿੱਤਰ ਨੂੰ
cv2.cvtColor
ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਿਫੌਲਟBGR
ਕਲਰ ਸਪੇਸ ਤੋਂCIELab
ਕਲਰ ਸਪੇਸ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ Lightness (L) ਚੈਨਲ ਨੂੰ ਅਲੱਗ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। - ਰੀਸਾਈਜ਼ਿੰਗ: ਜ਼ਿਆਦਾਤਰ ਪੂਰਵ-ਸਿਖਲਾਈ ਪ੍ਰਾਪਤ
CNNs
ਇੱਕ ਨਿਸ਼ਚਿਤ ਆਕਾਰ (ਉਦਾਹਰਨ ਲਈ, 224x224 ਪਿਕਸਲ,ImageNet
ਵਰਗੇ ਡੇਟਾਸੈਟਾਂ ਦੁਆਰਾ ਪ੍ਰਭਾਵਿਤ ਇੱਕ ਆਮ ਮਿਆਰ) ਦੇ ਇਨਪੁਟ ਚਿੱਤਰਾਂ ਦੀ ਉਮੀਦ ਕਰਦੇ ਹਨ।LAB
ਚਿੱਤਰ ਨੂੰcv2.resize
ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਉਸ ਅਨੁਸਾਰ ਮੁੜ ਆਕਾਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਮਾਨਕੀਕਰਨ ਨੈੱਟਵਰਕ ਦੇ ਆਰਕੀਟੈਕਚਰ ਨਾਲ ਅਨੁਕੂਲਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ। - L ਚੈਨਲ ਆਈਸੋਲੇਸ਼ਨ ਅਤੇ ਸੈਂਟਰਿੰਗ: Lightness (L) ਚੈਨਲ ਨੂੰ ਮੁੜ ਆਕਾਰ ਦਿੱਤੇ
LAB
ਚਿੱਤਰ ਤੋਂ ਕੱਢਿਆ ਜਾਂਦਾ ਹੈ। ਅਕਸਰ, ਇਸਦੇ ਮੁੱਲਾਂ (ਆਮ ਤੌਰ ‘ਤੇLAB
ਵਿੱਚ 0-100) ਨੂੰ ਫਿਰ ਇੱਕ ਔਸਤ ਮੁੱਲ (ਉਦਾਹਰਨ ਲਈ, 50) ਘਟਾ ਕੇ ਜ਼ੀਰੋ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਕੇਂਦਰਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਕੇਂਦਰੀਕਰਨ ਇੱਕ ਹੋਰ ਆਮ ਅਭਿਆਸ ਹੈ ਜੋ ਨੈੱਟਵਰਕ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ।
ਇਹ ਸਾਵਧਾਨੀ ਨਾਲ ਪ੍ਰੀਪ੍ਰੋਸੈਸ ਕੀਤਾ L ਚੈਨਲ ਹੁਣ ਨੈੱਟਵਰਕ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਲਈ ਤਿਆਰ ਹੈ।
6. ਅਨੁਮਾਨ ਕਦਮ: ਰੰਗ ਦੀ ਭਵਿੱਖਬਾਣੀ:
ਇਹ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਜਾਦੂ ਹੁੰਦਾ ਹੈ:
- ਬਲੌਬ ਬਣਾਉਣਾ: ਪ੍ਰੋਸੈਸ ਕੀਤੇ L ਚੈਨਲ (ਹੁਣ ਇੱਕ 2D ਐਰੇ) ਨੂੰ ਇੱਕ “ਬਲੌਬ” ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ, ਇੱਕ 4-ਆਯਾਮੀ ਐਰੇ ਫਾਰਮੈਟ ਜਿਸਦੀ
DNN
ਮੋਡੀਊਲ (cv2.dnn.blobFromImage
) ਦੁਆਰਾ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਫਾਰਮੈਟ ਵਿੱਚ ਆਮ ਤੌਰ ‘ਤੇ ਬੈਚ ਆਕਾਰ, ਚੈਨਲ, ਉਚਾਈ ਅਤੇ ਚੌੜਾਈ ਲਈ ਮਾਪ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। - ਫਾਰਵਰਡ ਪਾਸ: ਬਲੌਬ ਨੂੰ
net.setInput
ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਲੋਡ ਕੀਤੇ ਨੈੱਟਵਰਕ ਦੇ ਇਨਪੁਟ ਵਜੋਂ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਫਿਰ,net.forward()
ਵਿਧੀ ਨੂੰ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਗਣਨਾ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ: ਇਨਪੁਟ ਡੇਟਾ ਨੈੱਟਵਰਕ ਦੀਆਂ ਪਰਤਾਂ ਵਿੱਚੋਂ ਲੰਘਦਾ ਹੈ, ਸਿੱਖੇ ਹੋਏ ਵਜ਼ਨ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਪਰਿਵਰਤਨਾਂ ਵਿੱਚੋਂ ਗੁਜ਼ਰਦਾ ਹੈ