பகுதி 7: நாமே நம்முடைய சொந்த செய்யறிவை(AI) உருவாக்குதல் -பயிற்சித் தொடர்– உருவப்பட செயலாக்கத்திற்கான மாற்று நரம்பியல் வலைபின்னல்கள் (CNNs)

மாற்று நரம்பியல் வலைபின்னல்கள் (Convolutional Neural Networks (CNNs))ஆனவை கணினியின் காட்சித் (vision) துறையில் புரட்சியை ஏற்படுத்தியுள்ளன, முக அங்கீகாரம், சுய-ஓட்டுநர் கார்கள் , மருத்துவ உருவப்படம் போன்ற பயன்பாடுகளை இயக்குகின்றன. இந்தக் கட்டுரையானது CNNகளின் அடிப்படைகள், அவற்றின் கட்டமைப்பு , TensorFlow/Keras ஐப் பயன்படுத்தி உருவப்படச் செயலாக்கப் பணிகளுக்கு அவற்றை எவ்வாறு செயல்படுத்துவது என்பவற்றைக் காண்போம்.
1. மாற்று நரம்பியல் வலைபின்னல்கள் (Convolutional Neural Networks (CNNs)) என்றால் என்ன?
மாற்று நரம்பியல் வலைபின்னல்கள் (Convolutional Neural Networks (CNNs)) என்பது உருவப்படங்களின், கட்டம்(grid) போன்ற தரவைச் செயலாக்க குறிப்பாக வடிவமைக்கப்பட்ட ஆழ்ந்த நரம்பியல் வலைபின்னல்கள் ஆகும். பாரம்பரிய நரம்பியல் வலைபின்னல்களைப் போலன்றி, விளிம்புகள், இழைமங்கள், வடிவங்கள் போன்ற இடஞ்சார்ந்த படிநிலைகளையும் வடிவங்களையும் பிரித்தெடுப்பதில் CNNகள் சிறந்து விளங்குகின்றன, அவை உருவப்படம் தொடர்பான பணிகளுக்கு ஏற்றதாக அமைகின்றன.
2. CNNஇன் கட்டமைப்பு
அ. மாற்றும் (Convolutional) அடுக்குகள்
CNN களின் இதயம் போன்ற இந்த அடுக்குகள் உள்ளீட்டு படங்களுக்கு வடிப்பான்களை (உருவாக்கமையங்களை) பயன்படுத்துகின்றன, விளிம்புகள் அல்லது அமைப்பு போன்ற இயல்புகளைக் கண்டறிகின்றது.
செயல்முறை:
படத்தின் மேல் வடிகட்டியை படவில்லையில் செய்திடுதல்.
உறுப்பு வாரியான பெருக்கல், கூட்டுத்தொகை (புள்ளி தயாரிப்பு) செய்திடுதல்.
கண்டறியப்பட்ட இயல்புகளை முன்னிலைப்படுத்துகின்ற இயல்பின் வரைபடத்தை வெளியிடுதல்.
ஆ. Pooling அடுக்குகள்
இயல்புநிலை வரைபடங்களின் இடப் பரிமாணங்களைக் குறைத்தல், கணக்கீட்டை விரைவுபடுத்துதல், அதிகப்படியான பொருத்துதலைக் குறைத்தல்.
பொதுவான வகைகள்:
அதிகபட்ச Pooling: ஒரு பகுதியில் அதிகபட்ச மதிப்பை எடுக்கின்றது.
சராசரி Pooling: ஒரு பகுதியில் உள்ள மதிப்புகளின் சராசரியை எடுக்கின்றது.
இ. முழுமையாக இணைக்கப்பட்ட அடுக்குகள்
ஒவ்வொரு நரம்பனுவையும் (neuron) முந்தைய அடுக்கிலிருந்து அடுத்த அடுக்குடன் இணைக்கின்றது.
இறுதி கணிப்புகள் அல்லது வகைப்பாடுகளைச் செய்யப் பயன்படுகிறது.
ஈ. செயல்படுத்திடுகின்ற செயலிகள்
சிக்கலான தன்மையை அறிமுகப்படுத்த ஒவ்வொரு அடுக்கிற்குப் பிறகும் நேரியல் அல்லாத செயலிகள் பயன்படுத்தப்படுகின்றன.
எடுத்துக்காட்டுகள்: ReLU, Softmax.
3. CNNs கள் எவவாறு செயல்படுகின்றன
உள்ளீடு: ஏதேனுமொரு உருவப்படம் (எ.கா., 28×28 grayscale எண்ணிமப் படம்).
உருமாற்றம்: வடிகட்டிகளின் இயல்புகளைப் பிரித்தெடுக்கின்றன (எ.கா., விளிம்புகள், முனைகள்(corners) ).
Pooling: இயல்புநிலையிலான வரைபட அளவைக் குறைக்கிறது, முக்கிய இயல்புகளைத் தக்கவைக்கிறது.
தட்டையாக்குதல்(Flattening): இயல்பு வரைபடங்களை ஒருபரிமான1D வரிசையாக மாற்றுகிறது.
வகைப்பாடு: முழுமையாக இணைக்கப்பட்ட அடுக்குகள் வெளியீட்டு இனத்தைக் கணிக்கின்றன.
4. நடப்பு உலக பயன்பாடுகள்
உருவப்பட வகைப்பாடு: ஒரு படத்தில் உள்ள பொருட்களை அடையாளம் காணுதல்.
பொருட்களை கண்டறிதல்: உருவப்படங்களில் உள்ள பொருட்களைக் கண்டறிந்து உள்ளூர்மயமாக்குதல்.
முகஉருவப்படத்தினை ஏற்புகைசெய்தல்: அடையாளங்களை பொருத்துதல் அல்லது சரிபார்த்தல்.
மருத்துவ உருவப்படம்: ஊடுகதிர்களில் அல்லது MRIகளில் உள்ள கட்டிகள் (tumors) போன்ற முரண்பாடுகளை கண்டறிதல்.
5. CNN ஐ செயல்படுத்துதல்: உருவப்பட வகைப்பாடு எடுத்துக்காட்டு
படிமுறை 1: நூலகங்களை நிறுவுகைசெய்திடுதல்.இதற்கான குறிமுறைவரி பின்வருமாறு
pip install tensorflow
படிமுறை 2: நூலகங்களை பதிவிறக்கம் செய்திடுதல்.இதற்கான குறிமுறைவரிகள் பின்வருமாறு
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
படிமுறை 3: தரவை பதிவேற்றம்செய்து தயார் செய்திடுதல்.இதற்கான குறிமுறைவரிகள் பின்வருமாறு

Load MNIST dataset

(X_train, y_train), (X_test, y_test) = mnist.load_data()

Reshape and normalize

X_train = X_train.reshape(X_train.shape[0], 28, 28, 1) / 255.0
X_test = X_test.reshape(X_test.shape[0], 28, 28, 1) / 255.0

One-hot encode labels

y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

படிமுறை 4: CNN ஐ உருவாக்கிடுதல். இதற்கான குறிமுறைவரிகள் பின்வருமாறு
model = Sequential([
Conv2D(32, (3, 3), activation=’relu’, input_shape=(28, 28, 1)),
MaxPooling2D(pool_size=(2, 2)),
Conv2D(64, (3, 3), activation=’relu’),
MaxPooling2D(pool_size=(2, 2)),
Flatten(),
Dense(128, activation=’relu’),
Dense(10, activation=’softmax’) # Output layer for 10 classes
])
படிமுறை 5: மாதிரியை தொகுத்து பயிற்சி செய்திடுதல்.இதற்கான குறிமுறைவரிகள் பின்வருமாறு
model.compile(optimizer=’adam’, loss=’categorical_crossentropy’, metrics=[‘accuracy’])
model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))
படிமுறை 6: மாதிரியை மதிப்பிடு.இதற்கான குறிமுறைவரிகள் பின்வருமாறு
loss, accuracy = model.evaluate(X_test, y_test)
print(f”Test Accuracy: {accuracy:.2f}”)
6. CNN பயிற்சிக்கான குறிப்புகள்
தரவு பெருக்கம் (Augmentation): தரவுத்தொகுப்பின் அளவை அதிகரிக்க சுழற்சி, இருநிலைமாற்றுதல் , பெரிதாக்குதல் போன்ற நுட்பங்களைப் பயன்படுத்திடுக.
முன்கூட்டியே நிறுத்துதல்: அதிகப்படியான பொருத்தத்தைத் தவிர்க்க சரிபார்ப்பு இழப்பைக் கண்காணித்திடுக.
தொகுதியை(Batch) இயல்பாக்கம்செய்தல்: வெளியீடுகளை இயல்பாக்குகிறது, பயிற்சியை விரைவுபடுத்துகிறது.
7. சவால்களும் வரம்புகளும்
கணக்கீட்டு வளங்கள்: பெரிய தரவுத்தொகுப்புகளில் திறமையான பயிற்சிக்காக CNN களுக்கு GPUகள் தேவைப்படுகின்றன.
அதிகப்படியான பொருத்துதல்: தரவுத்தொகுப்புக்கு மாதிரி மிகவும் சிக்கலானதாக இருந்தால் இந்தநிலை ஏற்படலாம்.
தரவின் சார்புநிலை: CNN களுக்கு உகந்த செயல்திறனுக்காக அதிக அளவு அடையாளமிடப்பட்ட(labeled) தரவு தேவையாகும்.

தொடரும்