Đại học Sư Phạm TP. Hồ Chí Minh
Khoa: Công Nghệ Thông Tin
ĐỒ ÁN: XÂY DỰNG ỨNG
DỤNG OBJECT
DETECTION - OPENCV
Giảng viên hướng dẫn: Thầy NGUYỄN ĐÌNH HIỂN
1
MỤC LỤC
2
I.
Các chức năng ứng dụng thực hiện:
Ứng dụng Object Detection của nhóm chạy trên nền tảng Windows và được xây dựng
bằng ngôn ngữ Python. Ứng dụng sẽ nhận diện trong hình ảnh chứa các vật thể, và nêu ra
các vật thể đó là gì qua các đặc điểm được so sánh với dữ liệu và đưa ra độ tin cậy
khoảng bao nhiêu phần trăm.
Sau đó nhóm đã thêm tính năng cho ứng dụng, đó là nhận diện vật thể qua camera của
Laptop. Ứng dụng sẽ nhận diện qua camera và nêu ra các vật thể hiện tại trong khung
hình của camera là gì và đồng thời cũng đưa ra độ tin cậy khoảng bao nhiêu phần trăm.
1 Phát hiện một vật thể đơn giản trong hình ảnh:
Ứng dụng có thể phát hiện những vật thể đứng riêng lẻ trong một hình ảnh.
1. Phát hiện nhiều vật thể giống nhau trong hình ảnh:
Ứng dụng có thể phát hiện những vật thể giống nhau trong một hình ảnh, cho dù là
nhiều vật thể chồng lên nhau vẫn có thể nhận ra.
3
2. Phát hiện các vật thể khác nhau trong hình ảnh:
Ứng dụng có thể phát hiện những vật thể khác nhau trong một hình ảnh, cho dù là
nhiều vật thể vẫn có thể nhận ra.
4
3. Phát hiện vật thể qua Camera máy tính:
Ứng dụng sử dụng Camera để liên tục quét và nhận diện các vật thể nằm trong khung
hình của Camera.
5
II.
Phương pháp thiết kế, cài đặt:
1 Phương pháp thiết kế:
Trong quy trình xử lý và đưa ra kết quả của việc nhận diện vật thể cần có nhiều bước,
nhưng các bước cơ bản có thể giới thiệu như sau:
1. Đầu tiên, ta đưa 1 hình ảnh vào máy tính như là 1 input.
2. Tiếp theo, là bước tiền xử lý ảnh (preprocessing) bao gồm các bước căn chỉnh ảnh
(image alignment) và chuẩn hóa ánh sáng (illumination normalization).
3. Sau đó, ảnh sẽ được chia cắt thành nhiều vùng khác nhau để tiện cho việc xử lí.
4. Chúng ta xem như mỗi vùng là một tấm ảnh mới và bắt đầu nhận diện.
5. Chuyển tất cả các vùng ảnh này tới DNN và phân loại chúng thành các lớp khác nhau.
Ở bước này, ta sẽ sử dụng các phương pháp trích chọn đặc điểm (feature extraction) để
đưa ra các thông tin đặc trưng cho từng đối tượng.
6. Kết quả là mỗi vùng ảnh sẽ được biểu diễn dưới dạng một vector đặc điểm (feature
vector), bước tiếp theo là bước nhận dạng (recognition) và phân lớp (classification), tức
6
là xác định đó là đối tượng nào.
7. Khi chúng ta đã chia từng khu vực thành lớp tương ứng của nó, chúng ta có thể kết hợp
tất cả các vùng này để có được hình ảnh gốc với các đối tượng khoanh vùng được phát
hiện.
4. Cài đặt:
a. Các bước tiền xử lý ảnh:
+ Image Gradients: Chuyển đổi hình ảnh sang các mảng màu sáng tối. Chúng ta sẽ
sử dụng các hàm: hàm sau: cv2.Laplacian(),…
+ Changing Colorspaces: Chuyển đổi hình ảnh từ một không gian màu hiện tại
sang một không gian màu khác, như BGR, HSV,.… Chúng ta sẽ sử dụng các hàm
sau: cv2.dnn.blobFromImage(),.…
+ Geometric Transformations of Images: Chuyển đổi hình học khác nhau cho các
hình ảnh như dịch, xoay, điều chỉnh kích thước. Chúng ta sẽ sử dụng các hàm:
cv.resize()…
b. Các bước trích chọn đặc điểm:
+ Feature Extraction: Trích chọn các đặc điểm của vật thể. Chúng ta sẽ sử dụng
các hàm: cv2.HaarFeature
+ Feature Detection: Phát hiện các đặc trưng của vật thể qua xác định các góc.
Chúng ta sẽ sử dụng các hàm: cv2. cornerSubPix()
+ Feature Classification: Phân nhóm các đối tượng theo những đặc trưng đã xác
định. Chúng ta sẽ sử dụng hàm: cv2.HaarClassification()
c. Các bước tổng hợp và đưa ra kết quả:
cv2.rectangle(): Vẽ hình chữ nhật bao quanh các đối tượng đã xác định.
7
cv2.putText(): Đặt tên cho đối tượng
cv2.imshow(): Gom lại và thể hiện khung kết quả cuối cùng
8
III.
Tài liệu tham khảo:
[1] Kỹ năng phát hiện vật thể (người) bằng phương pháp trích đặc trưng ảnh HOG và phân
lớp sử dụng SVM (Support Vector Machine) (2018). Retrieved from:
/>%E1%BB%87n-v%E1%BA%ADt-th%E1%BB%83-ng%C6%B0%E1%BB%9Di-b
%E1%BA%B1ng-ph%C6%B0%C6%A1ng-phap-trich-%C4%91%E1%BA%B7c-tr
%C6%B0ng-%E1%BA%A3nh-HOG-va-phan-l%E1%BB%9Bp-s%E1%BB%AD-d
%E1%BB%A5ng-SVM-Support-Vector-Machine
[2] OpenCV library (2018). Retrieved from:
/>9
[3] Ứng dụng Convolutional Neural Network trong bài toán phân loại ảnh – Viblo (2018).
Retrieved from:
a/p/ung-dung-convolutional-neural-network-trong-bai-toan-phan-loaianh-4dbZNg8ylYM?
fbclid=IwAR0FwSR0E5txUmraYr9PEhXElNkJfhW3DWkqAGUM3lWcCwNWZ7JkO
PN2yio
[4] Tìm hiểu regression trong object detection (2018). Retrieved from:
/>
[5] Lý thuyết Cơ Bản về Machine Learning – Máy học (2018). Retrieved from:
/>[6] Joseph Redmon: Máy tính nhận diện vật thể ngay lập tức như thế nào? (2018). Retrieved
from:
/>_objects_instantly
[7] Object detection (2018). Retrieved from:
/>[8] Deep learning: Nhận diện vật thể qua ảnh chụp (2018). Retrieved from:
/>[9] Xử lý ảnh bằng Python và OpenCV: Mở đầu - Blog kỹ thuật máy tính (2018). Retrieved
from:
/>[10]
Introduction to OpenCV-Python Tutorials — OpenCV-Python Tutorials 1
documentation (2018). Retrieved from:
/>[11]
Sự khác nhau giữa AI, Machine learning và deep learning | Tech Talk (2018).
Retrieved from:
/>[12]
Deep learning based Object Detection and Instance Segmentation using Mask RCNN in OpenCV (Python / C++) | Learn OpenCV (2018). Retrieved from:
/>[13]
Deep Learning with OpenCV – PyImageSearch (2018). Retrieved from:
/>10