๐ง Part 7: Computer Vision with OpenCV and Deep Learning
๐️ What Is Computer Vision?
Computer Vision (CV) enables machines to “see” and understand images or videos. It’s used in:
-
Face detection
-
Object recognition
-
Medical imaging
-
Self-driving cars
๐งฐ Tools We'll Use
-
OpenCV – Image processing library
-
TensorFlow/Keras – Deep learning models (CNNs)
-
Pre-trained Models – For fast and accurate image classification
Install with:
pip install opencv-python tensorflow
๐ผ️ Step-by-Step: Image Classification with a CNN
๐️ Step 1: Load & Preprocess the CIFAR-10 Dataset
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
import matplotlib.pyplot as plt
(X_train, y_train), (X_test, y_test) = cifar10.load_data()
X_train, X_test = X_train / 255.0, X_test / 255.0
# Show a sample image
plt.imshow(X_train[0])
plt.title(f"Label: {y_train[0][0]}")
plt.show()
๐ง Step 2: Build a Convolutional Neural Network (CNN)
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3)),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
tf.keras.layers.MaxPooling2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
⚙️ Step 3: Compile & Train the Model
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, validation_split=0.2)
๐ Step 4: Evaluate and Predict
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test Accuracy: {test_acc:.2f}")
predictions = model.predict(X_test)
print("Predicted class:", predictions[0].argmax())
๐งฐ Bonus: Load and Process Custom Images with OpenCV
import cv2
image = cv2.imread('your_image.jpg')
resized = cv2.resize(image, (32, 32)) / 255.0
reshaped = resized.reshape(1, 32, 32, 3)
prediction = model.predict(reshaped)
print("Predicted class:", prediction.argmax())
๐ Alternative: Use Pretrained Model (MobileNet)
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions
model = MobileNetV2(weights='imagenet')
from tensorflow.keras.preprocessing import image
import numpy as np
img = image.load_img('your_image.jpg', target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
print("Predicted:", decode_predictions(preds, top=1)[0])
๐งช Practice Challenge
-
Try using other datasets like Fashion MNIST or CelebA
-
Detect faces using
cv2.CascadeClassifier
-
Implement edge detection with OpenCV
๐ What You’ve Learned:
-
Image classification using CNNs
-
Using OpenCV for image processing
-
How to use pre-trained models for instant predictions
๐งญ What’s Next?
In Part 8, we’ll explore Reinforcement Learning (RL)—where agents learn to make decisions through trial and error using rewards and penalties.