Khóa học lập trình ứng dụng Computer Vision – Deep Learning trên Windows

Computer Vision – Deep Learning là lĩnh vực có kiến thức rất rộng, các bạn phải xác định rõ mục tiêu từ đầu. Mục tiêu càng rõ ràng, phạm vi càng cụ thể thì càng dễ thành công: đọc biển số xe, nhận diện khuôn mặt, OCR (nhận diện ký tự), object detection (phát hiện hoặc đếm vật thể),…

Khóa học này giúp bạn xây dựng ứng dụng trên Windows (Windows application) tích hợp giải thuật Computer Vision – Deep Learning.

Khóa học đang được xây dựng, bổ sung hàng ngày

Để học cách tạo ra 1 ứng dụng đầy đủ chức năng để người dùng sử dụng thì cần có 4 giai đoạn:

Bước 1: học kiến thức nền

Kiến thức nền rất quan trọng, các bạn không nên bỏ qua vì khi gặp các vấn đề cần điều chỉnh cần phải hiểu nguyên lý để làm cho đúng.

  1. Logic, Toán rời rạc: học để biết cách viết giải thuật đúng đắn
  2. Ngôn ngữ lập trình: Python có nhiều ưu điểm như dễ học, dễ ứng dụng nhưng khó đóng gói. C++ tốc độ nhanh, là ngôn ngữ chủ yếu của các thư viện. Recommend học Python với người mới.
  3. Kỹ năng lập trình: cách viết code dễ đọc, không dư thừa, dễ hiểu, dễ bảo trì
  4. Command Line (cmd): cú pháp, quy tắc tại bài Hướng dẫn sử dụng cmd trên Windows
  5. Visual Studio: bạn cần phải cài đặt để có thể compile các lib như OpenCV, Dlib sử dụng CUDA.
  6. Git: quản lý source code, cty nào cũng sử dụng nên bắt buộc các bạn phải học.
  7. Sourcetree: phần mềm quản lý Git với giao diện người dùng (GUI) thân thiện

Bước 2: học xử lý ảnh

Các giải thuật xử lý ảnh hầu như đã được OpenCV implement sẵn, các bạn chỉ cần tập trung học các giải thuật của OpenCV là được.

Tổng hợp bài viết về OpenCV: https://thigiacmaytinh.com/opencv-co-ban/

Giai đoạn 3: training model và tích hợp vào ứng dụng

Mục tiêu của giai đoạn này là tạo ra được model chạy đúng & chạy nhanh đủ để tích hợp vào ứng dụng. Đối với các bài toán nhỏ không đòi hỏi gắt gao thì download các model training sẵn về sử dụng.

Các model nổi tiếng hiện nay là YOLOv7 hoặc YOLOv8, các phiên bản mới hơn đã ra mắt, tuy nhiên chưa có sự đột phá đáng kể. Khóa học này sử dụng YOLOv8 làm giải thuật chính.

Chạy nhanh (realtime) nghĩa là tốc độ dưới 0.1 giây cho mỗi lần xử lý ảnh 640x480px

3.1 Thu thập dữ liệu

3.2 Đánh nhãn

🔗 YOLO label – công cụ đánh nhãn Yolo tương tự labelImg

3.3 Huấn luyện mô hình

3.4 Tích hợp vào ứng dụng

Giai đoạn 4: hoàn thiện sản phẩm

Sau khi đã viết xong giải thuật thì bạn cần viết chức năng người dùng cần lưu & hiển thị kết quả cho người dùng xem. Sau đó là làm giao diện đẹp, dễ sử dụng và đóng gói là xong sản phẩm hoàn chỉnh

4.1 Tích hợp cơ sở dữ liệu:

nếu bạn viết ứng dụng nhỏ hoặc chỉ lưu vài dữ liệu cơ bản, đơn giản như history inference, nên dùng MongoDB, SQlite. Ưu điểm của 2 loại CSDL này là nhỏ gọn, tốc độ nhanh, dễ backup/restore.

  1. SQL Server: phù hợp với các CSDL lớn, phức tạp, nhiều bảng, nhiều quan hệ (relation). Phù hợp cho các ứng dụng lớn.
  2. SQLite: ưu điểm là chạy được trên nhiều hệ điều hành, platform khác nhau: Windows, Raspbian, Android. CSDL được lưu trong 1 file *.sqlite3, không cần import hay restore phức tạp, cứ copy qua máy khác là sử dụng.

4.2 Tích hợp thiết bị ngoại vi

Thiết bị ngoại vi được chia thành 2 loại: input và output.

Thiết bị input

🔗 TGMTplayer – thư viện đọc camera IP bằng C# ít giật lag

Thiết bị output

🔗 Điều khiển mạch Relay USB bằng C# và C++

4.2 Tích hợp giao diện

Ứng dụng phải có các control phù hợp, VD nếu chỉ có 1 vài lựa chọn có thể dùng radio button, nhưng nếu có nhiều lựa chọn thì nên dùng Combobox.

Ứng dụng viết cho người dùng sẽ được đánh giá cao nếu như có giao diện đẹp, bắt mắt.

4.3 Xuất report Excel

Trong các loại report thì Excel được ưa chuộng nhất. Từ file excel có thể dễ dàng export ra định dạng PDF hoặc xử lý tiếp dữ liệu, nếu cần có thể import vào phần mềm khác.

Sau khi học đủ theo lộ trình các bạn có thể tạo ra ứng dụng Computer Vision/AI hoàn chỉnh.