OpenCV + Deep Learning: Tutorial Komprehensif
Daftar Isi
Pendahuluan
OpenCV (Open Source Computer Vision Library) merupakan salah satu library yang paling banyak digunakan untuk tugas-tugas computer vision. Ketika digabungkan dengan framework deep learning, OpenCV menjadi toolkit yang sangat powerful untuk membangun aplikasi vision tingkat produksi. Tutorial ini membahas teknik-teknik esensial untuk memanfaatkan OpenCV bersama model deep learning, mulai dari preprocessing gambar dasar hingga deployment pipeline inferensi dengan jaringan saraf pre-trained.
Baik Anda sedang membangun sistem deteksi wajah real-time, pipeline deteksi objek, atau mengintegrasikan model vision ke dalam aplikasi yang lebih besar, memahami cara OpenCV berinteraksi dengan deep learning adalah keterampilan yang sangat penting.
Prasyarat
Sebelum memulai, pastikan Anda telah menginstal paket-paket berikut:
# Instal paket yang diperlukan
pip install opencv-python opencv-contrib-python numpy
pip install torch torchvision
pip install tensorflow
pip install albumentations
Persyaratan sistem:
- Python 3.8 atau lebih tinggi
- Mesin dengan minimal 8 GB RAM (GPU direkomendasikan untuk pelatihan)
- Pemahaman dasar tentang Python, NumPy, dan konsep jaringan saraf
Verifikasi instalasi Anda:
import cv2
import numpy as np
import torch
import tensorflow as tf
print(f"Versi OpenCV: {cv2.version}")
print(f"Versi NumPy: {np.version}")
print(f"Versi PyTorch: {torch.version}")
print(f"Versi TensorFlow: {tf.version}")
Dasar-Dasar Preprocessing Gambar
Preprocessing gambar adalah fondasi dari setiap pipeline computer vision. Preprocessing yang tepat memastikan model deep learning Anda menerima data input yang bersih dan ternormalisasi.
Membaca Gambar dan Konversi Ruang Warna
import cv2
import numpy as np
Membaca gambar (format BGR secara default)
image = cv2.imread("input.jpg")
Konversi ruang warna
rgbimage = cv2.cvtColor(image, cv2.COLORBGR2RGB)
grayimage = cv2.cvtColor(image, cv2.COLORBGR2GRAY)
hsvimage = cv2.cvtColor(image, cv2.COLORBGR2HSV)
labimage = cv2.cvtColor(image, cv2.COLORBGR2LAB)
Resize dan Normalisasi
def preprocessuntukmodel(image, targetsize=(224, 224)):
"""
Pipeline preprocessing standar untuk model deep learning.
Menerima gambar BGR dan mengembalikan tensor yang ternormalisasi.
"""
# Resize dengan mempertahankan aspect ratio menggunakan padding
h, w = image.shape[:2]
scale = min(target
size[0] / h, targetsize[1] / w)
new
h, neww = int(h scale), int(w scale)
resized = cv2.resize(image, (new
w, newh), interpolation=cv2.INTERLINEAR)
# Buat kanvas dan tempatkan gambar di tengah
canvas = np.zeros((targetsize[0], targetsize[1], 3), dtype=np.uint8)
yoffset = (targetsize[0] - newh) // 2
xoffset = (targetsize[1] - neww) // 2
canvas[yoffset:yoffset + newh, xoffset:xoffset + neww] = resized
# Normalisasi ke rentang [0, 1]
normalized = canvas.astype(np.float32) / 255.0
# Terapkan normalisasi mean dan std ImageNet
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
normalized = (normalized - mean) / std
return normalized