List of topics
LECTURE 1: Giới thiệu chung về Computer vision
[Chuẩn bị trước] Mạng tích chập - Convolutional neural network
LECTURE 2: Mô hình Convolution neural network (2 buổi)
LECTURE 3: Bài toán object detection (2 buổi)
LECTURE 4: Kỹ thuật Data augmentation trong computer vision
LECTURE 5: Bài toán image segmentation (2 buổi)
LECTURE 6: Bài toán Face recognition (2 buổi)
LECTURE 7: Bài toán Image generation
LECTURE 8: Trực quan hoá mô hình CNN với GradCAM
LECTURE 9: Self-supervised learning với dữ liệu hình ảnh
LECTURE 10: Các mô hình xử lý video
LECTURE 11: Docker + Cloud

LECTURE 2: Mô hình Convolution neural network (2 buổi)

  • Phép toán convolution và các tham số của phép toán convolution

  • Các loại layer trong mô hình CNN

  • Các mô hình CNN nổi tiếng: VGG, ResNet, MobileNet …

  • Dự án mẫu: Giải bài toán Image classification

1. Giới thiệu thư viện OpenCV

1.1. Giới thiệu thư viện OpenCV

Giới thiệu thư viện OpenCV

OpenCV là một thư viện rất mạnh mẽ để giải quyết các bài toán thị giác máy tính.

OpenCV chứa một số mô hình giải quyết các bài toán Object Detection, Face Detection. Tuy nhiên OpenCV mạnh nhất trong xử lý ảnh.

OpenCV được xây dựng trên ngôn ngữ lập trình C để tăng tốc độ xử lý.

Cài đặt thư viện OpenCV

  • Pip:

    • pip install opencv-python

  • Conda

    • conda install conda-forge::opencv

Các hướng dẫn sử dụng OpenCV

Chi tiết tại đây

Chú ý

Nên sử dụng OpenCV cho các trường hợp xử lý dữ liệu nhanh tuy nhiên để tạo ra những ứng dụng phức tạp hơn nhanh hơn vì OpenCV hỗ trợ tính toán trên GPU chưa tốt.

Một số thư viện tượng tự OpenCV

1.2. Đọc ảnh với OpenCV và chú ý về hệ màu

Đọc ảnh với OpenCV

  • Dữ liệu OpenCV đọc là Numpy Array

  • OpenCV không quan trọng hình ảnh là màu sắc như thế nào, có thể đen trắng có thể là ảnh màu, có giá trị opacity thế nào (độ mờ).

import cv2
import matplotlib.pyplot as plt

# Read image
image = cv2.imread('image.jpg')

# Display image with OpenCV
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Chú ý quan trọng

  • Chiều ma trận đọc vào. (Chiều cao, Chiều rộng, Số kênh)

  • Mặc định kênh màu openCV đọc dưới định dạng BGR (B - Blue, G - Green, R - Red). Rất nhiều thư viện mặc định là RGB.

  • Khi đào tạo mạng thì lúc train dùng hệ màu nào thì khi inference cũng phải dùng hệ màu tương tự. OpenCV cung cấp hàm chuyển hệ màu.

# Convert BGR to RGB

image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Display image with Matplotlib

plt.imshow(image_rgb)

plt.show()

Truy cập vào các kênh:

# Access individual color channels
blue_channel = image[:, :, 0]
green_channel = image[:, :, 1]
red_channel = image[:, :, 2]
  • Trong dự án thực tế nếu không cài đặt đúng sẽ dẫn đến kết quả không tốt.

  • Một số thư viện không làm việc tốt trên ảnh có chất lượng cao như thư viện Pillow. Lỗi này có tên truncation.

1.3. Các hàm cơ bản của OpenCV

Hàm thay đổi kích cỡ


w = 300
h = 200
resized_image = cv2.resize(rgb_image, (w, h))

Hàm vẽ hình dạng


top_left_x = 530
top_left_y = 1050
bottom_right_x = 2150
bottom_right_y = 1705
color = (255, 0, 255) # BGR
thickness = 10
rgb_image = cv2.rectangle(rgb_image, (top_left_x, top_left_y), (bottom_right_x, bottom_right_y), color, thickness)

Hàm phát hiện cạnh


edges_image = cv2.Canny(rgb_image, threshold_1, threshold_2)

Hàm đọc video


Hàm này sử dụng tương tự Generator trong Python. Xử lý đến đâu sẽ đọc đến đó thay vì xử lý tất cả các frame.

  • ret là kết quả frame có được đọc thành công hay không

  • frame là ảnh của frame hiện tại

  • Hàm video.read sẽ liên tục các frame tiếp theo khi chạy hàm này.

  • Hàm video.release là giải phóng bộ nhớ khi đọc video

1.4. Kinh nghiệm thực tế - Bài toán phát hiện thẻ tín dụng

1.5. Video 28-5-2024 - Thực hành sử dụng OpenCV

1.6. Notebook

2. Mạng tích chập - Buổi 1

2.1. Slide

2.2. Video 4-6-2024 - CNN

3. Mạng tích chập - Buổi 2

3.1. Video

3.2. Code

1. Giới thiệu thư viện OpenCV
1.1. Giới thiệu thư viện OpenCV
1.2. Đọc ảnh với OpenCV và chú ý về hệ màu
1.3. Các hàm cơ bản của OpenCV
1.4. Kinh nghiệm thực tế - Bài toán phát hiện thẻ tín dụng
1.5. Video 28-5-2024 - Thực hành sử dụng OpenCV
1.6. Notebook
2. Mạng tích chập - Buổi 1
2.1. Slide
2.2. Video 4-6-2024 - CNN
3. Mạng tích chập - Buổi 2
3.1. Video
3.2. Code
3.3. Link tập dữ liệu