You are on page 1of 67

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

LUẬN VĂN THẠC SĨ


Nghiên cứu hệ thống kiểm tra chiết rót chai tự động
TRẦN THIÊN NAM
thiennam.tran2009@gmail.com

Chuyên ngành Kỹ thuật Cơ Điện Tử

Giảng viên hướng dẫn: GVCC. TS. Nguyễn Trọng Doanh


Chữ ký của GVHD
Bộ môn: Cơ Điện Tử
Viện: Cơ Khí

HÀ NỘI, 3/2020

1
ĐỀ TÀI LUẬN VĂN

Đề tài tên tiếng Việt


“Nghiên cứu hệ thống kiểm tra chiết rót chai tự động”.

Đề tài tên tiếng Anh


“Research of automatic vision system for bottle filling inspection”.

Giáo viên hướng dẫn: GVCC.TS. Nguyễn Trọng Doanh

Giáo viên hướng dẫn


Ký và ghi rõ họ tên

2
LỜI CẢM ƠN
Đầu tiên em xin chân thành cảm ơn GVCC.TS. Nguyễn Trọng Doanh và TS.
Hoàng Hồng Hải – người đã trực tiếp hướng dẫn và định hướng giúp em có thể
nhanh chóng tiếp cận, nắm bắt kiến thức và hoàn thành đề tài luận văn.
Em xin gửi lời cảm ơn tới toàn thể thầy cô giáo khoa bộ môn Cơ điện tử – Viện
Cơ khí trường Đại học Bách Khoa – Hà Nội, đã tận tình giảng dạy trang bị cho em
những kiến thức quý báu trong những năm học vừa qua.
Mặc dù em đã cố gắng hoàn thành tốt đề tài nhưng cũng không thể tránh khỏi
những sai sót nhất định, rất mong nhận được đóng góp ý kiến của thầy cô giáo và
các bạn.
TÓM TẮT NỘI DUNG LUẬN VĂN
Nội dung nghiên cứu:
Nghiên cứu sơ lược về hệ thống kiểm tra chiết rót chai tự động
Nghiên cứu tổng quan về hệ thống xử lý ảnh
Nghiên cứu về các kĩ thuật thuật toán nhận dạng và phát hiện đối tượng
Nghiên cứu về mô hình YOLO trong bài toán nhận dạng đối tượng
Nghiên cứu và tối ưu hóa thuật toán phát hiện và nhận dạng lỗi chai
Kết quả nghiên cứu:
Bằng phương pháp kết hợp sử dụng mạng nơ-ron (YOLO) và phương pháp tìm
biên cạnh truyền thống, thuật toán phát hiện lỗi đạt được hai mục tiêu chính: nâng
cao độ chính xác và khả năng kiểm tra trực tuyến đảm bảo tính ổn đinh và tiết kiệm
thời gian xử lý của hệ thống. Một hệ thống kiểm tra trên chai Cocacola được thực
nghiệm. Kết quả thực nghiệm thu được chỉ ra với thuật toán phát triển độ chính
xác có thể đạt được 95% và có thể được ứng dụng trong sản xuất tự động.
Giáo viên hướng dẫn Học viên
Ký và ghi rõ họ tên Ký và ghi rõ họ tên

3
MỤC LỤC

ĐỀ TÀI LUẬN VĂN 2


LỜI CẢM ƠN 3
TÓM TẮT NỘI DUNG LUẬN VĂN 3
MỤC LỤC 4
DANH MỤC HÌNH VẼ 6
DANH MỤC BẢNG 8
CHƯƠNG 1. MỞ ĐẦU 9
1.1 Đặt vấn đề 9
1.2 Tính cấp thiết của đề tài 9
1.3 Mục tiêu đề tài 9
1.4 Nội dung của luận văn 10
CHƯƠNG 2. TỔNG QUAN VỀ XỬ LÝ ẢNH 11
2.1 Cơ bản về xử lý ảnh 11
2.2 Các kĩ thuật lọc nhiễu trong ảnh 12
2.2.1 Nguyên tắc chung của lọc ảnh 12
2.2.2 Một số bộ lọc làm mịn ảnh:13
2.3 Các kĩ thuật dò cạnh 17
2.3.1 Khái quát về dò cạnh 17
2.3.2 Các phương pháp dò cạnh 17
2.4 Kĩ thuật hình thái học (Morphological technique) 21
CHƯƠNG 3. MỘT SỐ KĨ THUẬT THUẬT TOÁN PHÁT HIỆN VÀ NHẬN
DẠNG ĐỐI TƯỢNG 25
3.1 Tổng quát chung khái niệm nhận dạng đối tượng 25
3.2 Các thuật toán chính để phát hiện và nhận dạng đối tượng 26
3.2.1 Lớp các mô hình họ R-CNN 26
3.2.2 Lớp các mô hình họ YOLO31
3.2.3 SSD máy dò Multi-Box 32
CHƯƠNG 4. MÔ HÌNH YOLO TRONG BÀI TOÁN NHẬN DẠNG ĐỐI
TƯỢNG 34
4.1 Giới thiệu khái quát thuật toán 34
4.2 Tổng quát mô hình của thuật toán 35
4.2.1 Grid System 35
4.2.2 CNN cho YOLO object detection: 37
4.2.3 Hàm lỗi Loss Function: 38
a, Classification Loss 38
b, Localization Loss: 39
4
c, Confidence Loss: 40
4.2.4 Dự đoán lớp và tọa độ boundary box sau quá trình training 40
CHƯƠNG 5. THUẬT TOÁN NHẬN DẠNG LỖI CHAI 43
5.1 Cấu trúc phần cứng của hệ thống: 43
5.1.1 Tổng quan hệ thống 43
5.1.2 Hệ xử lý ảnh trong hệ thống 44
5.2 Xây dựng thuật toán phân loại chai coca 46
5.2.1 Phương pháp 1: (Sử thuật thuật toán Template Matching) 47
5.2.2 Phương pháp 2: Thuật toán sử dụng Edge Detection (tìm biên cạnh)………
52
5.2.3 Phương pháp 3 được đề xuất trong bài toàn của luận văn (kết hợp giữa thuật
toán YOLO trong neural network và edge detection sử dụng trong phương pháp 2)
56
5.3 Phân tích kết quả đã đạt được của phương pháp đề xuất 62
CHƯƠNG 6. KẾT LUẬN CHUNG VÀ HƯỚNG PHÁT TRIỂN CỦA LUẬN
VĂN 66
6.1 Kết luận chung 66
6.2 Hướng phát triển của luận văn 66

5
DANH MỤC HÌNH VẼ
Hình 2.1 Các giai đoạn của một quá trình xử lý ảnh 11
Hình 2.2 Quy tắc nhân chập ma trận lọc kernel 13
Hình 2.3 Kết quả sau khi lọc trung bình [8] 14
Hình 2.4 Sơ đồ phân phối Gauss [8] 15
Hình 2.5 Kết quả sau khi lọc Gauss [8] 16
Hình 2.6 Kết quả sau khi lọc trung vị [8]17
Hình 2.7 Lọc biên theo phương pháp Robert Cross [8] 18
Hình 2.8 Lọc biên theo phương pháp [8] 19
Hình 2.9 Lọc biên theo phương pháp Canny 21
Hình 2.10 Quá trình chập trong phép toán Giãn nở 23
Hình 2.11 Quá trình chập trong phép toán co 24
Hình 3.1 Sơ đồ tổng hợp các tác vụ Vision [9] 26
Hình 3.2 Quá trình phát triện của thuật toán phát hiện và nhận dạng đối tượng [9]
26
Hình 3.3 Kiến trúc mô hình R-CNN [9] 27
Hình 3.4 Kiến trúc mô hình Fast R-CNN [9] 28
Hình 3.5 Kiến trúc single model Fast R-CNN [9] 29
Hình 3.6 Kiến trúc mô hình Faster R-CNN [9] 30
Hình 3.7: Các kích thước tỉ lệ của mô hình [9] 31
Hình 3.8 Quá trình nhận dạng đối tượng mô hình họ YOLO [9] 31
Hình 3.9 Cấu trúc mạng của SSD [9] 33
Hình 4.1 Kết quả nhận dạng các đối tượng trong khung hình 34
Hình 4.2 Xác định tâm của bounding box thuộc đối tượng 36
Hình 4.3 Dự đoán độ lệch của 2 box chứa object 37
Hình 4.4 Quá trình hoạt động của mô hình CNN với đối tượng đã cho [7] 38
Hình 4.5 Dự đoán box của đối tượng [7] 39
Hình 4.6 Một ví dụ về phát hiện biển báo Stop từ hình ảnh [7] 41
Hình 4.7 Công thức tính tỉ lệ IoU [7] 41
Hình 4.8 Các đánh giá tỉ lệ IoU [7] 42
Hình 5.1 Hệ thống cấu trúc phần cứng 43
Hình 5.2 Sơ đồ các phần cấu trúc chính của hệ thống nhận dạng 43
Hình 5.3 Camera Basler 44
Hình 5.4 Vùng làm việc Field of View 45
Hình 5.5 Các thông số hoạt động của Camera trong hệ thống 46
Hình 5.6 Sơ đồ thuật toán của phương pháp Template Matching 49
Hình 5.7 (a) Ảnh mẫu thu được (b) Ảnh nhị phân (c) Ảnh lấy phần bù (d) Ảnh sau
lọc nhiễu 50
6
Hình 5.8 (a) Ảnh thu được bị thiếu (thiếu nắp) (b) Ảnh nhị phân (c) Ảnh lấy phần
bù (d) Ảnh sau lọc nhiễu 51
Hình 5.9 (a) Ảnh thu dược bị thiếu ( thiếu tamper) (b) Ảnh nhị phân (c) Ảnh lấy
phần bù (d) Ảnh sau lọc nhiễu 51
Hình 5.10 (a) Ảnh thu được bị thiếu (Nắp và phần tem bị tách khỏi nhau) (b) Ảnh
nhị phân (c) Ảnh lấy phần bù (d) Ảnh sau lọc nhiễu 51
Hình 5.11: Ảnh thu nhận bị từ chối do lỗi 51
Hình 5.12 Sơ đồ thuật toán Edge Detection 52
Hình 5.13 Kết quả chương trình báo đạt khi nhận diện thành công nắp chai và mực
nước 54
Hình 5.14 Kết quả chương trình báo lỗi nhận được nắp chai nhưng mực nước
không chính xác 54
Hình 5.15 Kết quả chương trình báo lỗi khi không tồn tại nắp chai và mực nước
không chính xác 55
Hình 5.16 Kết quả chương trình báo lỗi khi nắp chai bị lắp lệch và mực nước
không chính xác 55
Hình 5.17 Sơ đồ thuật toán được sử dụng trong luận văn 56
Hình 5.18 Kết quả kiểm tra chai coca lần 1 (Chai 1 chính xác, Chai 2 thiếu nắp)
58
Hình 5.19 Kết quả kiểm tra chai coca lần 2 (Chai 1 chính xác, Chai 2 thiếu nhãn
dán) 58
Hình 5.20 Vùng roi cắt từ bbox chai 59
Hình 5.21 Ảnh sau khi cắt ROI chưa dùng Filter 59
Hình 5.22 Ảnh sau khi cắt ROI dùng Median Filer 59
Hình 5.23 Chai sau khi sử dụng bộ lọc Canny (chưa điều chỉnh Threshold) 60
Hình 5.24 Chai sau khi sử dụng bộ lọc Canny (đã điều chỉnh Threshold) 60
Hình 5.25 Đường thẳng tìm được 61
Hình 5.26 Kết quả hai đường mực nước và đường chuẩn 61
Hình 5.27 Chương trình GUI hoàn thiện hoạt động trong thực tế 62
Hình 5.28 Biểu đồ kết quả thực nghiệm đo liên tiếp các chai trên dây chuyền sản
xuất mô phỏng 63
Hình 5.29 Biểu đồ kết quả đo thực nghiệm đo 1 chai 10 lần 64

7
DANH MỤC BẢNG
Bảng 5.1 Nhận xét đưa ra kết luận chung của hai Phương pháp 1 và 2 56
Bảng 5.2 Kết quả thực nghiệm đo liên tiếp các chai trên dây chuyền sản xuất mô
phỏng 63
Bảng 5.3 Kết quả thực nghiệm đo 1 chai lần lượt 10 lần 64
Bảng 5.4 Đưa ra kết luận chung và so sánh giữa ba phương pháp 65

8
MỞ ĐẦU

Đặt vấn đề
Các dây chuyền công nghệ sản xuất hiện đại hiện nay gần như là hoàn toàn tự động
hoặc bán tự động. Đặc biệt với các ngành nghề đòi hỏi độ chính xác cao và khử
trùng tuyệt đối thì việc tham gia 100% của máy móc trong quá trình sản xuất sẽ
đáp ứng được các tiêu chí về yêu cầu công nghệ. Trong đó có ngành sản xuất nước
ngọt đóng chai với đặc thù được sản xuất trên dây chuyền khép kín, đảm bảo vệ
sinh. Với các công nghệ cân đo định lường kiểm tra chính xác, khâu đóng gói,
chiết rót chai, thùng thành phẩm đảm bảo khử trùng.
Một hệ thống sản xuất các chất lỏng đóng chai thường được phân chia thành nhiều
khâu nối tiếp nhau. Trong đó khâu kiểm tra chất lượng của chai sau quá trình chiết
rót là một quy trình rất quan trọng của hệ thống. Chính vì vậy trong luận văn này,
ta sẽ đi vào nghiên cứu về các giải pháp kiểm tra của hệ thống mà xử lý ảnh sẽ là
một công cụ quan trọng để hướng đến các nhiệm vụ phân tích và nhận dạng các
lỗi của hệ thống.

Tính cấp thiết của đề tài


Xử lý ảnh là một lĩnh vực khoa học đã xuất hiện từ lâu và được ứng dụng nhiều
trong y học, khoa học vũ trụ và dự báo thời tiết. Ngày nay, sự phát triển của kỹ
thuật điện tử đã cho ra đời nhiều loại camera và cảm biến hình ảnh có độ phân giải
cao và tốc độ lấy ảnh nhanh, với giá cả phù hợp tùy hãng sản xuất và tùy mức độ
thông minh của thiết bị, chất lượng hình ảnh. Từ đó đã cho phép xử lý ảnh được
ứng dụng nhiều hơn vào công nghiệp, nhất là trong lĩnh vực quản lý chất lượng,
nhận dạng lỗi sản phẩm và phân loại sản phẩm dựa vào các đặc tính có thể nhận
dạng được bằng mắt thường và những đặc điểm bề ngoài không thể nhận dạng
bằng mắt thường. Với những đặc tính không thể nhận dạng bằng mắt thường do
đặc điểm cần nhận dạng quá nhỏ hoặc hình dạng quá phức tạp, hoặc yêu cầu nhận
diện nhiều vị trí ở cùng một thời điểm, xử lý ảnh là một công cụ vô cùng hiệu quả
với độ chính xác và độ tin cậy cao.
Thực tế, ở Việt Nam hiện nay, xử lý ảnh trong công nghiệp vẫn còn là một lĩnh
vực khá mới mẻ và đang trên đà phát triển. Do đó, việc nghiên cứu, khai thác các
ứng dụng của xử lý ảnh sẽ mở ra nhiều cơ hội cho việc nghiên cứu và phát triển
các hệ thống mới. Các vấn đề tự động hóa trong điều khiển và giám sát các thiết
bị nói chung là một trong những giải pháp hàng đầu trong sự nghiệp công nghiệp
hóa và hiện đại hóa ở Việt Nam hiện nay. Do đó, luận văn này đưa ra một mô hình
điều khiển hệ thống nhận dạng và phân loại chai bị lỗi trong dây chuyền sản xuất
cocacola bằng phần xử lý ảnh sử dụng công nghệ học sâu mạng nơron để đáp ứng
yêu cầu điều khiển thực tế nêu trên.

Mục tiêu đề tài

9
Trong phạm vi của luận văn, tôi sẽ nghiên cứu về các thuật toán xử lý ảnh nói cung
để đưa ra một phương án tối ưu nhất trong hệ thống đảm bảo được tính chính xác
của hệ thống và cải thiện được thời gian nhận diện các lỗi của sản phẩm. Nghiên
cứu đó kết hợp với các thuật toán trong DeepLearning để phát hiện hệ thống trong
tương lai.

Nội dung của luận văn


Nội dung luận văn gồm 6 chương:
Chương 1: Mở đầu
Chương 2: Tổng quan về xử lý ảnh
Chương 3: Một số kĩ thuật thuật toán phát hiện và nhận dạng đối tượng
Chương 4: Mô hình YOLO trong bài toán nhận dạng đối tượng
Chương 5: Thuật toán nhận dạng lỗi chai
Chương 6: Kết luận chung và hướng phát triển của luận văn

10
TỔNG QUAN VỀ XỬ LÝ ẢNH
Cơ bản về xử lý ảnh
Các giai đoạn của một quá trình xử lý ảnh
Để có thể hình dung cấu hình một hệ thống xử lý ảnh chuyên dụng hay một hệ
thống xử lý ảnh trong nghiên cứu, các bước cần thiết trong xử lý ảnh được xem xét
như sau.

Thu nhận Tách các


Xử lý trước Phân đoạn Phân loại
ảnh đặc tính

Hình 2.1 Các giai đoạn của một quá trình xử lý ảnh

Thu nhận ảnh


Ảnh có thể thu nhận qua camera. Thường ảnh thu nhận qua camera là tín hiệu
tương tự (loại camera ống kiểu CCIR), nhưng cũng có thể là tín hiệu số hoá (loại
CCD - Charge Coupled Device). Ảnh cũng có thể thu nhận từ vệ tinh qua các bộ
cảm ứng hay ảnh, tranh được quét trên scanner. Sau đó được lưu trữ trong máy
tính. Gồm có 2 quá trình:
- Biến đổi năng lượng quang học sang năng lượng điện
- Biến đổi năng lượng điện sang các ma trận.

Xử lí trước
Quá trình xử lí trước thực ra bao gồm nhiều công đoạn nhỏ. Trước hết là công việc
tăng cường ảnh để nâng cao chất lượng ảnh. Do những nguyên nhân khác nhau: có
thể do chất lượng thiết bị thu nhận ảnh, do nguồn sáng hay do nhiễu, ảnh có thể bị
suy biến. Do vậy cần phải tăng cường và khôi phục lại ảnh để làm nổi bật một số
đặc tính chính của ảnh, hay làm cho ảnh gần giống nhất với trạng thái gốc (trạng
thái trước khi ảnh bị biến dạng). Nhằm các mục đích phục vụ cho các bước tiếp
theo.
Những mục đích riêng biệt có thể đặt ra cho quá trình xử lý trước là:
+ Thực hiện điều chỉnh độ chiếu sáng để khắc phục hậu quả của sự chiếu sáng
không đồng đều.
+ Giảm nhỏ thành phần nhiễu.
+ Cải thiện độ tương phản của ảnh màu do khuôn màu không tốt.
+ Hiệu chỉnh độ méo giá trị xám
+ Loại bỏ tính không đồng thể của ảnh gây nên từ tính không đồng bộ của lớp nhạy
quang của hệ thống thu nhận ảnh.
+ Chuẩn hóa độ lớn, dạng và màu.
+ Điều chỉnh bộ lọc để khuyếch đại các tần số với những thông tin quan trọng được
khuyếch đại và nén đi các tần số khác.

11
Phân đoạn
Là quá trình phân chia các đối tượng cần khảo sát ra khỏi phần nội dung còn lại
của ảnh, phân tách các đối tượng tiếp giáp nhau và phân tách những đối tượng
riêng biệt thành những đối tượng con. Một phương pháp phân đoạn ảnh là sử dụng
một ngưỡng giá trị xám để phân tách ảnh thành đối tượng và nền (những điểm dưới
ngưỡng xám thuộc về nền, ngược lại thuộc về đối tượng).
Tách ra các đặc tính
Dựa trên các thông tin thu nhận được qua quá trình phân đoạn, kết hợp với các kỹ
thuật xử lý để đưa ra các đặc trưng, đối tượng ảnh cũng như các thông tin cần thiết
trong quá trình xử lý. Nhờ các đặc tính có được từ ảnh ta có thể phân loại các đối
tượng khác nhau của ảnh.
Phân loại ảnh
Thực hiện công việc sắp xếp một đối tượng vào một lớp đối tượng cho trước. Để
giải quyết bài toán này thì các đặc tính có ý nghĩa phải được lựa chọn. Ta tìm thấy
các đặc tính có ý nghĩa khi ta phân tích các mẫu được lựa chọn từ những đối tượng
khác nhau.

Các kĩ thuật lọc nhiễu trong ảnh


Nguyên tắc chung của lọc ảnh
Nguyên tắc chung của các phương pháp lọc là cho ma trận ảnh nhân với một ma
trận lọc (Kernel). Trong đó ma trận lọc lọc (Kernel) còn có thể được gọi là cửa số
chập (trong phép nhân chập), cửa sổ lọc, mặt nạ…. Việc nhân ảnh với ma trận lọc
giống như việc trượt ma trận lọc theo hàng trên ảnh và nhân với từng vùng của
ảnh, cộng các kết quả lại tạo thành kết quả của điểm ảnh trung tâm.

12
Hình 2.2 Quy tắc nhân chập ma trận lọc kernel

Ma trận đầu vào I được nhân với ma trận lọc (phần xám ở hình trái) để tạo thành
ma trận đầu ra O.
Trên thực tế, hai phép lọc ảnh là tương quan (correlation) và tích chập
(convolution). Với phép tương quan, ma trận lọc sẽ được trượt đi và nhân với từng
vùng của ảnh như trên. Tuy nhiên với phép tích chập, ma trận lọc sẽ được xoay
180 độ (theo cả chiều ngang và dọc) trước khi thực hiện nhân. 2 phép toán này là
tương đương khi ma trận lọc đối xứng.
Với mỗi phép lọc ta có những ma trận lọc (Kernel) khác nhau, không có một quy
định cụ thể nào cho việc xác định M. Kích thước ma trận M là một số lẻ. Ví dụ:
3x3, 5x5.
Khi nhân các phần tử tương ứng với nhau (giữa pixel, các điểm lân cận – các
thành phần trong kernel), đối với các phần tử ở cạnh thì sẽ có một số pixel bị
khuyết, lúc này, có nhiều cách giải quyết như bỏ qua, chèn thêm một (một số)
hàng, cột mang giá trị 0 hoặc bằng giá trị gần nhất, hoặc tạo một đối xứng gương
ở cạnh ảnh.
Một số bộ lọc làm mịn ảnh:
a, Lọc trung bình (Normanlize Box Filter):
Đây là bộ lọc đơn giản nhất. Nó được xây dựng dựa trên ý tưởng tính giá trị một
điểm ảnh bằng trung bình cộng các điểm ảnh xung quanh nó.
Ma trận lọc của lọc trung bình có dạng:
1 1 1 ... 1 
1 1 1 ... 1 
1  
K =
K _width .K_height . . . ... 1 
 
1 1 1 ... 1  (2.1)
Cách lọc này thường được áp dụng cho làm trơn ảnh vẫn muốn giữ lại biên
không bị mờ.

13
Hình 2.3 Kết quả sau khi lọc trung bình [8]
Ưu điểm:
+Đơn giản trong tính toán
+Ảnh đạt độ trơn mịn
Khuyết điểm:
+Không hoàn toàn loại bỏ được nhiễu, các pixel đơn lẻ (nhiễu sẽ ảnh hướng đến
giá trị trung bình của các pixel lân cận.
+Độ sắc nét của ảnh kém
+Độ tương phản thấp

b, Lọc Gauss (Gaussian Filter):


Bộ lọc Gauss được cho là bộ lọc hữu ích nhất, được thực hiện bằng cách nhân
chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành
ảnh đầu ra.
Ý tưởng chung là giá trị mỗi điểm ảnh sẽ phụ thuộc nhiều vào các điểm ảnh ở
gần hơn là các điểm ảnh ở xa. Trọng số của sự phụ thuộc được lấy theo hàm Gauss
(cũng được sử dụng trong quy luật phân phối chuẩn).

14
Hình 2.4 Sơ đồ phân phối Gauss [8]

Giả sử ảnh là một chiều. Điểm ảnh ở trung tâm sẽ có trọng số lớn nhất. Các điểm
ảnh ở càng xa trung tâm sẽ có trọng số giảm dần khi khoảng cách từ chúng tới
điểm trung tâm tăng lên. Như vậy điểm càng gần trung tâm sẽ càng đóng góp nhiều
hơn vào giá trị điểm trung tâm.
Trên thực tế, việc lọc ảnh dựa trên hàm Gauss 2 chiều (ngang và dọc). Phân phối
chuẩn 2 chiều có thể biểu diễn dưới dạng:
2
−( x − µ _ x )
2 − ( y − µ _y )
+
2σ 2 _ x 2σ 2y
G _ 0( x, y) = Ae (2.2)

Trong đó μ là trung bình (đỉnh), σ2 là phương sai của các biến số x và y


Tham số μ quyết định tác dụng của bộ lọc Gauss lên ảnh. Độ lớn của ma trận lọc
(kernel) cần được lựa chọn cho đủ rộng.

15
Hình 2.5 Kết quả sau khi lọc Gauss [8]

c, Lọc trung vị (Median Filter):


Phép lọc trung vị cũng được thực hiện với các ma trận lọc. Tuy nhiên nó tính
trung vị tất cả các giá trị điểm ảnh trong vùng ma trận lọc và sử dụng trung vị này
cho giá trị điểm trung tâm. Một điều khá thú vị là với các cách lọc ở trên, giá trị
điểm trung tâm được tính mới (có thể bằng hoặc khác với giá trị một điểm trong
vùng ma trận lọc), còn với phép lọc trung vị, giá trị điểm trung tâm luôn được thay
bằng một giá trị điểm ảnh trong bức ảnh đầu vào. Do vậy, phương pháp lọc này có
khả năng loại bỏ nhiễu muối tiêu (salt-and-pepper noise) khá tốt.
Có một điểm cũng cần được chú ý là phép lọc trung bình và lọc Gauss là phép
lọc tuyến tính, nhưng phép lọc trung vị không phải là một phép lọc tuyến tính.

16
Hình 2.6 Kết quả sau khi lọc trung vị [8]
Các kĩ thuật dò cạnh
Khái quát về dò cạnh
Các cạnh là những vùng ảnh mà có độ tương phản cao. Vì thế các cạnh thường
xuyên xuất hiện tại những vị trí được thấy như là những đường bao quanh vật trên
hình ảnh, xác định cạnh thường được dùng phổ biến trên những hình ảnh có nhiều
vật thể khác nhau khi ta muốn chia hình ảnh thành những vùng khác nhau có chứa
vật thể. Biểu diễn một hình ảnh bằng các cạnh thì có nhiều thuận lợi hơn là làm
giảm được dữ liệu ảnh trong khi vẫn đảm bảo giữ được những thông tin về vật thể
trên ảnh.
Các cạnh chủ yếu có tần số cao nên theo lý thuyết, dò cạnh sử dụng lọc tần số cao
bằng phương pháp Fourier hay bằng cách nhân chập hình ảnh với những Kernel
thích hợp trong miền không gian Fourier. Trên thực tế, dò cạnh được thực hiện
trong miền không gian vì thực hiện dễ dàng hơn và thường cho ra kết quả tốt hơn.
Cách xác định cạnh: vì các cạnh tương ứng với sự chiếu sáng mạnh, từ đó có thể
làm nổi bật lên bằng cách tính toán đạo hàm của hình ảnh.
Có thể thấy rằng vị trí của cạnh có thể được ước lượng với giá trị lớn nhất của đạo
hàm bậc nhất hay với điểm uốn của đạo hàm bậc 2. Vì thế sẽ tìm một kĩ thuật để
tính toán đạo hàm của một hình ảnh 2 chiều.
Những Kernel dùng cho việc xác định cạnh được tính dựa theo công thức trên cho
phép tính toán đạo hàm bậc một và bậc hai của một hình ảnh 2 chiều. Có 2 tiến
trình chung tính đạo hàm bậc một trong một hình ảnh hai chiều, dò cạnh Pretwitt
compass và dò cạnh gradient.

Các phương pháp dò cạnh


a, Phương pháp Robert Cross:

17
Theo Roberts, để xác định cạnh ta cần dựa vào các tính chất sau: cạnh được tạo ra
cần được xác định rõ, nền của ảnh có ít nhiễu và cường độ của cạnh được xác định
bằng mắt thường. Với những đặc tính đó, Roberts đưa ra phương trình sau:
,= ,
 
,=


, ,
 + , ,
 (2.3)
. Với x là cường độ sáng ban đầu của ảnh, z là đạo hàm tính được và i, j là tọa độ
của điểm ảnh.
Kết quả tính được sẽ thay đổi cường độ sáng theo đường chéo. Phương pháp này
đơn giản, nhân kernel nhỏ và chỉ chứa giá trị nguyên, tuy nhiên, phương pháp này
nhạy cảm với nhiễu
Để dò cạnh sử dụng phương pháp Robert Cross, ta nhân ma trận ảnh gốc với 2
nhân kernel:
1 0  0 1 
 −  − 
0 1 và 1 0 
Đặt (, ) là điểm ảnh gốc và (, ) là điểm ảnh được thu được khi nhân ma
trận ảnh với nhân kernel 1, (, ) là điểm ảnh thu được khi nhân ma trận ảnh
với nhân kernel 2.
Gradient có thể được xác định bằng công thức:
( , ) = (, ) =  + 
 (2.4)
Hướng của gradient được xác định theo công thức:
 ( ,) 
 , ) = 
( 
   (2.5)
 ( ,)

Hình 2.7 Lọc biên theo phương pháp Robert Cross [8]
b, Phương pháp Sobel:
Sobel đưa ra ý tưởng nhân ảnh với ma trận đẳng hướng 3x3 dùng để tính xấp xỉ sự
thay đổi giá trị của hàm tính cường độ sáng. ở từng điểm ảnh, kết quả của phương
pháp Sobel gồm có hướng và độ lớn của vector. Phương pháp này dựa vào việc
nhân ma trận ảnh với từng ma trận chỉ hướng dó đó không yêu cầu hiệu năng tính

18
toán cào. Mặt khác, tính toán xấp xỉ hướng đưa ra kết quả thô, đặc biệt là với những
ảnh có sự thay đổi cường độ ánh sáng mạnh.
Phương pháp này sử dụng ma trận 3x3 nhân với ma trận ảnh gốc để tính
toán xấp xỉ sự thay đổi theo phương ngang hoặc phương dọc. Ta coi A là ảnh gốc,
Gx và Gy là ảnh sau khi nhân từng điểm ảnh với các phép tính xấp xỉ theo chiều
ngang và dọc tương ứng.
1 0 −1  1 2 1 
2 0 −2  0 0 0 
   
Gx = 1 0
 −1 

*A và Gy =

1 2 1 

*A
Nhân kernel của Sobel có thể được tách thành tích của phép nhân trung bình
và nhân xấp xỉ.  có thể được viết lại như sau:
1 0 −1 
 −2 
2 0 
1 0
 −1 
= [1 2 1] [1 0 -1]
Tại mỗi điểm ảnh, kết quả tính gradient xấp xĩ có thể được kết hợp để tính giá trị
gradient sử dụng công thức:
 =  +  (2.6)
Từ đó, ta tính được hướng của gradient:

 = (2.7)

Với công thức này, khi  = 0 thì phía bên phải của cạnh dọc sẽ sáng hơn phía bên
trái.

Hình 2.8 Lọc biên theo phương pháp [8]


c, Phương pháp Canny:
Phương pháp dò cạnh Canny là kĩ thuật tách dữ liệu cấu trúc từ ảnh và giảm lượng
dữ liệu cần xử lí. Nó được sử dụng rộng rãi trong nhiều hệ thống thị giác máy tính.
Với những hệ thống khác thị giác máy tính khác nhau, việc áp dụng phương pháp
này không có nhiều khác biệt. Do đó, phương pháp dò cạnh này có thể giải quyết
được nhiều lĩnh vực khác nhau. Phương pháp dò cạnh này có một vài đặc tính sau:
Xác định cạnh với sai số thấp, tức là xác định hết tất cả các cạnh có trong ảnh

19
Điểm ảnh thuộc cạnh dò được sẽ nằm ở trung tâm của cạnh.
Cạnh của ảnh sẽ chỉ được đánh dấu một lần và nhiễu trong ảnh sẽ không được xác
định là cạnh.
Thuật toán dò cạnh Canny được chia thành 5 bước sau:
Dùng lọc Gaussian làm mịn ảnh để loại bỏ nhiễu
Kết quả dò cạnh rất nhạy với nhiễu, do đó việc lọc nhiễu của ảnh là cần thiết để
tránh sự xác định nhầm. Lọc Gaussian được dùng để làm mịn ảnh nhằm làm giảm
ảnh hướng của nhiễu lên việc dò cạnh.

Dưới đây là phép nhân làm mờ:


2 4 5 4 2 
4 9 12 9 4 
1  
5 12 15 12 5 
159  
4 9 12 9 4 

2 4 5 4 2  
B= *A (2.8)
Tìm hướng cường độ sáng của ảnh
Cạnh trong ảnh có thể chỉ bất kì hướng nào, dó đó thuật toán Canny sử dụng 4 ma
trận lọc để xác định hướng ngang, dọc và chéo của ảnh sau khi làm mờ. Từ gradient
của cạnh tìm được ta có thể xác định hướng và độ lớn:
= + 
 = 
, 
2
 (2.9)
Với G có thể tính bằng cách sử dụng hàm hypot và atan2 là hàm artangent. Góc
chỉ hướng của cạnh được làm tròn thành 4 giá trị: 0o, 45o, 90o hoặc 135o.
Áp dụng giá trị lớn nhất không cố định để xác định cạnh. Bước này dùng để làm
nhỏ cạnh. Sau khi tính toán hướng, cạnh dò được vẫn còn mờ, do đó, cần xác định
giá trị lớn nhất tại từng vị trí khác nhau để chỉ ra vị trí này có sự thay đổi lớn nhất
về giá trị cường độ. Thuật toán cho từng điểm ảnh là:
So sánh độ rõ của cạnh ở điểm ảnh hiện tại với điểm ảnh ở hướng dương và hướng
âm. Nếu độ rõ của cạnh ở điểm ảnh hiện tại là lớn nhất khi so sánh với các điểm
ảnh khác trong mặt nạ cùng hướng, thì giá trị này được giữ nguyên, nếu không thì
giá trị sẽ bị thay đổi.
Áp dụng ngưỡng trên và dưới để xác định cạnh.
Sau các bước kể trên, điểm ảnh biểu diễn cạnh thể hiện rõ hơn trên ảnh. Tuy nhiên,
một vài điểm ảnh bị gây ra bởi nhiễu và sự thay đổi màu sắc vẫn còn. Để giải quyết
vấn đề này, ta cần lọc ra những điểm ảnh có giá trị gradient nhỏ và giữ lại những
điểm ảnh có giá trị lớn. Việc này được thực hiện bằng cách áp dụng ngưỡng trên
và dưới. Nếu giá trị gradient của điểm ảnh lớn hơn ngưỡn cao hơn, nó được đánh
dấu là điểm ảnh mạnh. Nếu giá trị đó nằm giữa ngưỡng trên và ngưỡng dưới, nó

20
được đánh giá là điểm ảnh yếu. Điểm ảnh có giá trị nhỏ hơn ngưỡng dưới thì bị bỏ
quá. Hai giá trị ngưỡng này phụ thuộc vào người đặt.
Xác định cạnh bởi hysteresis: loại bỏ các cạnh không rõ và không được nối với
cạnh rõ.
Cuối cùng, điểm ảnh của cạnh có cường độ lớn sẽ nằm trên cạnh và khi đó cạnh sẽ
được trích xuất từ ảnh. Tuy nhiên, điểm ảnh thuộc cạnh hoặc điểm ảnh thuộc cạnh
do nhiễu sinh ra vẫn còn. Để thu được kết quả chính xác, những điểm ảnh có xác
suất thấp cần được loại bỏ.

Hình 2.9 Lọc biên theo phương pháp Canny [8]


Kĩ thuật hình thái học (Morphological technique)
Sau khi sử dụng phương pháp phát hiện cạnh, từ đó sẽ tiếp tục sử dụng phương
pháp Đóng Hình Thái (Morphological Closing). Mục đích của phương pháp này
là để loại bỏ nhiễu từ hình ảnh đầu vào và từ đó giúp làm rõ, nổi bật các đường
đáng quan tâm hơn.
Trích lọc biên ảnh (Boundary extraction).
Tô đầy vùng (Region fill).
Trích lọc các thành phần liên thông (Extracting connected components).
Làm mỏng đối tượng trong ảnh (Thinning).
Làm dày đối tượng trong ảnh (Thickening).
Tìm xương đối tượng trong ảnh (Skeletons).
Cắt tỉa đối tượng trong ảnh (Pruning).
Hình thái học là một thuật ngữ xuất xứ từ sinh học, gắn liền với hình dáng và cấu
trúc của sinh vật. Trong xử lý ảnh, nó là một kỹ thuật xử lý ảnh dựa theo hình dáng
và cấu trúc của ảnh. Trong phương pháp này, giá trị của mỗi pixel của ảnh đầu ra
được xác định nhờ so sánh pixel tương ứng của ảnh đầu vào với pixel lân cận của
chúng. Bằng cách lựa chọn kích thước và hình dạng của pixel láng giềng, ta có thể
xây dựng được phép toán hình thái rất nhạy cảm với các hình dạng đặc biệt trong
ảnh đầu vào. OpenCv cung cấp cho người dùng một phương thức nhanh chóng
thuận tiện để thực hiện xử lý ảnh hình thái. Phép biến đổi ảnh hình thái cơ bản là
dilation(giãn nở ) và erosion(co), chúng được ứng dụng trên phạm vi rộng như lọc

21
nhiễu, tách bạch các đối tượng, nối các đối tượng riêng rẽ trên ảnh, và còn thường
được dùng để tìm những nơi có cường độ độ sáng lớn hay nhỏ ( các hố, lỗ) trên
ảnh để tìm chiều hướng của bức ảnh.

Phép giãn nở và co là hai phép toán hình thái tổng quát và đây là hai quá
trình ngược nhau. Trong phép giản nở, các đường biên của một đối tượng trong
ảnh được cộng thêm các pixel trong khi đó ở phép co các đường biên của một đối
tượng nào đó trong ảnh lại bị bỏ bớt đi. Số lượng các pixel được cộng thêm hay
bớt đi khỏi đối tượng ở trong ảnh phụ thuộc vào kích thước và hình dáng của cấu
trúc phần tử được dùng để xử lý. Sự giãn nở có xu hướng mở rộng các đường biên,
đường viền, các vùng, trong khi sự co lại có xu hướng giảm hoặc thậm chí loại bỏ
các vùng nhỏ. Quá trình ăn mòn và giãn nở có thể kết hợp lại với nhau hoặc có thể
thực hiện một cách song hành để tạo nên những phương pháp xử lý hình thái phức
tạp hơn. Vì cả sự co lẫn giãn nở đều là phép toán phi tuyến, nên chúng không có
nghịch đảo, vì vậy có thể thực hiện phép này sau phép kia trên cùng một vùng của
một ảnh.

Nếu thực hiện quá trình co trước rồi tiếp đến quá trình giãn nở thì ta có phép mở
(Opening). Trường hợp nếu ảnh là nhị phân thì phép toán mở có khuynh hướng
làm mất các đối tượng có kích thước nhỏ ở trong ảnh mà không làm thay đổi kích
thước và hình dạng các đối tượng lớn.
Nếu phép giãn nở thực hiện trước, tiếp đến phép co thì quá trình được gọi là
đóng(Closing).Trong bài toán này sẽ sử dụng phép toán đóng.Phép đóng sẽ liên
kết các đối tượng xít lại với nhau và do vậy nó có khuynh hướng lấp đầy các lỗ
hổng nhỏ và làm nhẵn các đường nét của một đối tượng bằng cách lấp đầy những
khe nhỏ.
+ Với phép toán Giãn nở (dilation):
Giãn nở là quá trình chập của những bức ảnh (hay vùng ảnh), ta sẽ gọi chúng là A,
với một số nhân, ta gọi chúng là B. Nhân có thể có nhiều hình dạng và kích thước
khác nhau, nhưng chỉ có một điểm gọi là điểm neo duy nhất. Thông thường, nhân
là một khối hình vuông hay hình đĩa nhỏ với điểm neo nằm ở tâm. Nhân có thể
được nhận định như là mẫu hay mặt nạ và nó có ý nghĩa trong thuật toán giãn nở
là để định vị phần tử có giá trị lớn nhất. Khi nhân B được quét trên toàn ảnh, từ đó
sẽ tính toán được giá trị pixel lớn nhất của vùng ảnh được khớp bởi nhân B và thay
thế pixel xác định bởi điểm neo bằng giá trí lớn nhất đã tính toán. Điều này khiến
cho miền sáng của bức ảnh được mở rộng như đồ hình sau. Chính việc mở rộng
này là gốc của thuật ngữ “quá trình giãn nở”.

Phép giãn nở được mô tả bằng biểu thức toán học sau:

(2.10)
Trong đó:

22
A: Ma trận điểm ảnh của ảnh nhị phân.
B: Là phần tử cấu trúc.

Hình 2.10 Quá trình chập trong phép toán Giãn nở


Phép giãn nở (Dilation) ảnh sẽ cho ra một tập điểm ảnh c thuộc D(i), bạn hoàn toàn
dễ dàng thấy rằng đây là một phép tổng giữa A và B.
A sẽ là tập con của D(i). Chú ý: Nhận xét này không toàn toàn đúng với trường
hợp phần tử cấu trúc B không có gốc (Origin) hay nói cách khác là gốc (Origin)
mang giá trị 0.
Ví dụ
Tôi có ma trận điểm ảnh Isrc, ma trận điểm ảnh sau phép giãn nở Idst và phần tử
cấu trúc B.
Ứng với công thức ở trên, ta lần lượt đặt phần tử cấu trúc vào các điểm ảnh có giá
trị 1 của ma trận điểm ảnh Isrc. Kết quả thu được là ma trận điểm ảnh Idst.

+ Với phép toán co (erosion):


Phép toán co là quá trình ngược lại với giãn nở. Hành vi của toán tử co thì
tương đương với việc định vị giá trị nhỏ nhất của cường độ sáng trên vùng tương
ứng với nhân chập vào. Phép toán co tạo ra một ảnh mới từ ảnh gốc theo thuât toán
sau: khi nhân B quét trên toàn ảnh, ta tính toán pixel có giá trị nhỏ nhất khớp với
B và thay thế giá trị pixel ảnh được xác định bởi điểm neo với giá trị nhỏ nhất (để

23
chính xác, pixel trên ảnh đầu ra sẽ đặt giá trị bằng giá trị nhỏ nhất của những pixel
khởi bởi nhân trên ảnh đầu vào).
Công thức

Trong đó:
A: Ma trận điểm ảnh của ảnh nhị phân.
B: Là phần tử cấu trúc.

Hình 2.11 Quá trình chập trong phép toán co


Phép co ảnh sẽ cho ra một tập điểm ảnh c thuộc A, nếu bạn đi chuyển phần tử cấu
trúc B theo c, thì B nằm trong đối tượng A.

E(i) là một tập con của tập ảnh bị co A. Chú ý: Nhận xét này không toàn toàn
đúng với trường hợp phần tử cấu trúc B không có gốc (Origin) hay nói cách khác
là gốc (Origin) mang giá trị 0.
Ví dụ
Tôi có ma trận điểm ảnh Isrc, ma trận điểm ảnh sau phép co Idst và cấu trúc phần
tử B.
Ứng với công thức ở trên, ta lần lượt đặt phần tử cấu trúc vào các điểm ảnh có giá
trị 1 của ma trận điểm ảnh Isrc. Kết quả thu được là ma trận điểm ảnh Idst.

24
MỘT SỐ KĨ THUẬT THUẬT TOÁN PHÁT HIỆN VÀ NHẬN DẠNG ĐỐI
TƯỢNG

Tổng quát chung khái niệm nhận dạng đối tượng


Nhận dạng đối tượng là một thuật ngữ chung để mô tả một tập hợp các nhiệm vụ
thị giác máy tính có liên quan liên quan đến việc xác định các đối tượng trong ảnh
kỹ thuật số.
Phân loại hình ảnh liên quan đến việc dự đoán lớp của một đối tượng trong một
hình ảnh. Định vị vật thể đề cập đến việc xác định vị trí của một hoặc nhiều đối
tượng trong một hình ảnh và vẽ bounding box xung quanh chúng. Phát hiện đối
tượng kết hợp hai nhiệm vụ trên và thực hiện cho một hoặc nhiều đối tượng trong
hình ảnh. Từ đó có thể phân biệt giữa ba nhiệm vụ thị giác máy tính cơ bản trên
thông qua input và output của chúng như sau:
Phân loại hình ảnh: Dự đoán nhãn của một đối tượng trong một hình ảnh.
Input: Một hình ảnh với một đối tượng, chẳng hạn như một bức ảnh.
Output: Nhãn lớp (ví dụ: một hoặc nhiều số nguyên được ánh xạ tới nhãn lớp).
Định vị đối tượng: Xác định vị trí hiện diện của các đối tượng trong ảnh và cho
biết vị trí của chúng bằng bounding box.
Input: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh.
Output: Một hoặc nhiều bounding box được xác định bởi tọa độ tâm, chiều rộng
và chiều cao.
Phát hiện đối tượng: Xác định vị trí hiện diện của các đối tượng trong bounding
box và nhãn của các đối tượng nằm trong một hình ảnh.
Input: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh.
Output: Một hoặc nhiều bounding box và nhãn cho mỗi bounding box.
Một số định nghĩa khác cũng rất quan trọng trong computer vision là phân đoạn
đối tượng (object segmentation), trong đó các đối tượng được nhận dạng bằng cách
làm nổi bật các pixel cụ thể của đối tượng thay vì bounding box. Và image
captioning kết hợp giữa các kiến trúc mạng CNN và LSTM để đưa ra các lý giải
về hành động hoặc nội dung của một bức ảnh.
Bên dưới là sơ đồ tổng hợp các tác vụ của computer vision:

25
Hình 3.12 Sơ đồ tổng hợp các tác vụ Vision [9]

Các thuật toán chính để phát hiện và nhận dạng đối tượng
Có rất nhiều các thuật toán được sử dụng và liên tục phát triển tối ưu. Đồng thời
các thuật toán đều sẽ có các ưu nhược điểm riêng và sẽ được áp dụng vào từng yêu
cầu của các bài toán khác nhau. Dưới đây là sơ đồ về các thuật toán được phát triển
trong thời gian gần đây dựa trên các lý thuyết về Deep Learning:

Hình 3.13 Quá trình phát triện của thuật toán phát hiện và nhận dạng đối tượng
[9]
Dựa vào sơ đồ trên ta có thể chia làm lớp các mô hình họ chính là R-CNN và
YOLO
Lớp các mô hình họ R-CNN
R-CNN (regions with CNN features) là lớp các mô hình xác định vùng đặc trưng
dựa trên các mạng CNN được phát triển bởi Ross Girshick và các cộng sự. Lớp
các mô hình này gồm 3 mô hình chính là R-CNN, Fast R-CNN và Faster-RCNN
được thiết kế cho các nhiệm vụ định vị vật thể và nhận diện vật thể.
26
a, R-CNN (2014):
R-CNN được giới thiệu lần đầu vào 2014 bởi Ross Girshick và các cộng sự ở UC
Berkeley một trong những trung tâm nghiên cứu AI hàng đầu thế giới trong bài
báo Rich feature hierarchies for accurate object detection and semantic
segmentation.
Nó được coi là một trong những ứng dụng nền móng đầu tiên của mạng nơ ron
tích chập đối với vấn đề định vị, phát hiện và phân đoạn đối tượng. Cách tiếp cận
đã được chứng minh trên các bộ dữ liệu điểm chuẩn, đạt được kết quả tốt nhất trên
bộ dữ liệu VOC-2012 và bộ dữ liệu phát hiện đối tượng ILSVRC-2013 gồm 200
lớp.
Kiến trúc của R-CNN gồm 3 thành phần đó là:
Vùng đề xuất hình ảnh (Region proposal): Có tác dụng tạo và trích xuất các vùng
đề xuất chứa vật thể được bao bởi các bounding box.
Trích lọc đặc trưng (Feature Extractor): Trích xuất các đặc trưng giúp nhận diện
hình ảnh từ các region proposal thông qua các mạng deep convolutional neural
network.
Phân loại (classifier): Dựa vào input là các features ở phần trước để phân loại hình
ảnh chứa trong region proposal về đúng nhãn.

Kiến trúc của mô hình được mô tả trong biểu đồ bên dưới:

Hình 3.14 Kiến trúc mô hình R-CNN [9]


Một kỹ thuật được sử dụng để đề xuất các region proposal hoặc các bounding box
chứa các đối tượng tiềm năng trong hình ảnh được gọi là “selective search”, các
region proposal có thể được phát hiện bởi đa dạng những thuật toán khác nhau.
Nhưng điểm chung là đều dựa trên tỷ lệ IoU giữa bounding box và ground truth
box.
Trích xuất đặc trưng về bản chất là một mạng CNN học sâu (deep learning), ở đây
là AlexNet, mạng đã giành chiến thắng trong cuộc thi phân loại hình ảnh ILSVRC-
2012. Đầu ra của CNN là một vectơ 4096 chiều mô tả nội dung của hình ảnh được
đưa đến một mô hình SVM tuyến tính để phân loại.
Đây là một ứng dụng tương đối đơn giản và dễ hiểu của CNN đối với vấn đề object
localization và object detection. Một nhược điểm của phương pháp này là chậm,
27
đòi hỏi phải vượt qua nhiều module độc lập trong đó có trích xuất đặc trưng từ một
mạng CNN học sâu trên từng region proposal được tạo bởi thuật toán đề xuất vùng
chứa ảnh. Đây là một vấn đề chính cần giải quyết vì bài viết mô tả mô hình hoạt
động trên khoảng 2000 vùng được đề xuất cho mỗi hình ảnh tại thời điểm thử
nghiệm.
Thêm một nhược điểm của thuật toán R-CNN là không thể thực hiện trong thời
gian thực vì phải mất khoảng 47 giây cho mỗi hình ảnh thực nghiệm.

b, Fast R-CNN (2015)

Hình 3.15 Kiến trúc mô hình Fast R-CNN [9]


Nhận ra những hạn chế tồn tại của thuật toán R-CNN:
Training qua một pipeline gồm nhiều bước: Pipeline liên quan đến việc chuẩn bị
và vận hành ba mô hình riêng biệt.
(pipeline: Là một tợp hợp các bước xử lý liên tiếp nhận đầu vào là dữ liệu (ảnh,
âm thanh, các trường dữ liệu) và trả ra kết quả dự báo ở output).
Chi phí training tốn kém về số lượng bounding box và thời gian huấn luyện: Mô
hình huấn luyện một mạng CNN học sâu trên rất nhiều region proposal cho mỗi
hình ảnh nên rất chậm.
Phát hiện đối tượng chậm: Tốc độ xử lý không thể đảm bảo realtime.
Trước đó một bài báo đã đề xuất phương pháp để tăng tốc kỹ thuật được gọi
là mạng tổng hợp kim tự tháp - Spatial Pyramid Pooling in Deep Convolutional
Networks for Visual Recognition, hoặc SPPnets vào năm 2014. Phương pháp này
đã tăng tốc độ trích xuất features nhờ lan truyền thuận trên bộ nhớ đệm.
Điểm đột phá của Fast R-CNN là sử dụng một single model thay vì pipeline để
phát hiện region và classification cùng lúc.
Kiến trúc của mô hình trích xuất từ bức ảnh một tập hợp các region proposals làm
đầu vào và được truyền qua mạng deep CNN. Một pretrained-CNN, chẳng hạn
VGG-16, được sử dụng để trích lọc features. Phần cuối của deep-CNN là một
custom layer được gọi là layer vùng quan tâm (Region of Interest Pooling - RoI
Pooling) có tác dụng trích xuất các features cho một vùng ảnh input nhất định.
Sau đó các features được kết bởi một lớp fully connected. Cuối cùng mô hình chia
thành hai đầu ra, một đầu ra cho dự đoán nhãn thông qua một softmax layer và một

28
đầu ra khác dự đoán bounding box (kí hiệu là bbox) dựa trên hồi qui tuyến tính.
Quá trình này sau đó được lặp lại nhiều lần cho mỗi vùng RoI trong một hình ảnh.
Kiến trúc của mô hình được tóm tắt trong hình dưới đây:

Hình 3.16 Kiến trúc single model Fast R-CNN [9]


Ở bước đầu ta áp dụng một mạng Deep CNN để trích xuất ra feature map. Thay vì
warp image của region proposal như ở R-CNN ta sẽ xác định ngay vị trí hình chiếu
của của region proposal trên feature map thông qua phép chiếu RoI projection. Vị
trí này sẽ tương đối với vị trí trên ảnh gốc. Sau đó tiếp tục truyền output qua các
layer RoI pooling layer và các Fully Connected layers để thu được RoI feature
vecto. Sau đó kết quả đầu ra sẽ được chia làm 2 nhánh. 1 Nhánh giúp xác định
phân phối xác suất theo các class của 1 vùng quan tâm RoI thông qua hàm softmax
và nhánh còn xác định tọa độ của bounding box thông qua hồi qui các offsets
Mô hình này nhanh hơn đáng kể cả về huấn luyện và dự đoán, tuy nhiên vẫn cần
một tập hợp các region proposal được đề xuất cùng với mỗi hình ảnh đầu vào.
c, Faster R-CNN (2016):
Kiến trúc mô hình đã được cải thiện hơn nữa về cả tốc độ huấn luyện và phát hiện
được đề xuất bởi Shaoqing Ren và các cộng sự tại Microsoft Research trong bài
báo năm 2016 có tiêu đề Faster R-CNN: Towards Real-Time Object Detection
with Region Proposal Networks. Dịch nghĩa là “Faster R-CNN: Hướng tới phát
hiện đối tượng theo thời gian thực với các mạng đề xuất khu vực”.
Kiến trúc được thiết kế để đề xuất và tinh chỉnh các region proposals như là một
phần của quá trình huấn luyện, được gọi là mạng đề xuất khu vực (Region Proposal
Network), hoặc RPN. Các vùng này sau đó được sử dụng cùng với mô hình Fast
R-CNN trong một thiết kế mô hình duy nhất. Những cải tiến này vừa làm giảm số
lượng region proposal vừa tăng tốc hoạt động trong thời gian thử nghiệm mô hình
lên gần thời gian thực với hiệu suất tốt nhất. Tốc độ là 5fps trên một GPU.
Mặc dù là một mô hình đơn lẻ duy nhất, kiến trúc này là kết hợp của hai modules:
Mạng đề xuất khu vực (Region Proposal Network, viết tắT là RPN). Mạng CNN
để đề xuất các vùng và loại đối tượng cần xem xét trong vùng.
Fast R-CNN: Mạng CNN để trích xuất các features từ các region proposal và trả
ra các bounding box và nhãn.

29
Cả hai modules hoạt động trên cùng một output của một mạng deep CNN. Mạng
RPN hoạt động như một cơ chế attention cho mạng Fast R-CNN, thông báo cho
mạng thứ hai về nơi cần xem hoặc chú ý.
Kiến trúc của mô hình được tổng kết thông qua sơ đồ bên dưới:

Hình 3.17 Kiến trúc mô hình Faster R-CNN [9]


Ở giai đoạn sớm sử dụng một mạng deep CNN để tạo ra một feature map. Khác
với Fast R-CNN, kiến trúc này không tạo RoI ngay trên feature map mà sử dụng
feature map làm đầu vào để xác định các region proposal thông qua một RPN
network. Đồng thời feature maps cũng là đầu vào cho classifier nhằm phân loại
các vật thể của region proposal xác định được từ RPN network.
RPN hoạt động bằng cách lấy đầu ra của một mạng pretrained deep CNN, chẳng
hạn như VGG-16, và truyền feature map vào một mạng nhỏ và đưa ra nhiều region
proposals và nhãn dự đoán cho chúng. Region proposals là các bounding boxes,
dựa trên các anchor boxes hoặc hình dạng được xác định trước được thiết kế để
tăng tốc và cải thiện khả năng đề xuất vùng. Dự đoán của nhãn được thể hiện dưới
dạng nhị phân cho biết region proposal có xuất hiện vật thể hoặc không.
Một quy trình huấn luyện xen kẽ được sử dụng trong đó cả hai mạng con được đào
tạo cùng một lúc. Điều này cho phép các tham số trong feature dectector của deep
CNN được tinh chỉnh cho cả hai tác vụ cùng một lúc.
Vị trí Neo đóng vai trò quan trọng trong Faster R-CNN.Mỗi một mỏ neo tương
ứng với 1 box. Trong cấu hình mặc địch của Faster R-CNN, có 9 điểm neo tại vị
trí của hình ảnh.Biểu đồ sau đây cho thấy 9 neo tại vị trí (320,320) của hình ảnh
có kích thước (600,800).

30
Hình 3.18: Các kích thước tỉ lệ của mô hình [9]
Ba màu đại diện cho ba tỷ lệ hoặc kích thước: 128x128, 256x256, 512x512.
Hãy chọn ra các hộp / neo màu đỏ. Ba hộp có tỷ lệ chiều cao chiều rộng lần lượt
là 1: 1, 1: 2 và 2: 1.
Nếu chọn một vị trí ở mỗi sải chân là 16, sẽ có các vị trí 1989 (39x51). Điều này
dẫn đến hộp 17901 (1989 x 9) để xem xét. Kích thước tuyệt đối nhỏ hơn so với sự
kết hợp của cửa sổ trượt và kim tự tháp. Hoặc có thể lý do đây là lý do tại sao nó
có phạm vi bảo hiểm tốt như các phương pháp hiện đại khác. Mặt sáng ở đây là ta
có thể sử dụng mạng đề xuất khu vực, phương pháp trong Fast R-CNN, để giảm
đáng kể số lượng.
Lớp các mô hình họ YOLO

Hình 3.19 Quá trình nhận dạng đối tượng mô hình họ YOLO [9]

Đối với tất cả các thuật toán phát hiện đối tượng trước đó sử dụng các vùng để bản
địa hóa đối tượng trong ảnh. Mạng này sẽ không tập trung vào toàn bộ hình ảnh
hoàn chỉnh. Thay vào đó, chỉ tập trung vào các phần của hình ảnh có xác suất cao

31
chứa vật thể. YOLO hoặc You Only Look Again là một thuật toán phát hiện đối
tượng khác nhiều so với các thuật toán ở các phần trên. Trong YOLO, một mạng
chập duy nhất dự đoán các hộp giới hạn và tính xác suất cho các hộp này.

Cách YOLO hoạt động là ta sẽ chụp thu nhận ảnh và chia nó thành một lưới SxS,
trong mỗi lưới ta lấy các hộp giới hạn m. Ứng với mỗi hộp giới hạn, mạng sẽ đưa
ra xác suất các lớp và giá trị bù cho hộp giới hạn.Các hộp giới hạn mà có xác suất
lớp trên giá trị ngưỡng yêu cầu sẽ được chọn và được sử dụng để định vị đối tượng
trong ảnh.

Ưu và nhược điểm của YOLO:


+ YOLO là thuật toán có tốc độ nhanh hơn (45 khung hình mỗi giây) so với các
thuật toán phát hiện đối tượng khác
+ Hạn chế của thuật toán YOLO là sẽ gặp khó khăn khi xác định các đối tượng có
kích thước nhỏ trong ảnh. Ví dụ: Thuật toán có thể gặp khó khan trong việc phát
hiện một đàn chim. Điều này là do hạn chế về không gian của thuật toán.
SSD máy dò Multi-Box
Cũng giống như hầu hết các kiến trúc object detection khác, đầu vào của SSD là
tọa độ bounding box của vật thể (hay còn gọi là offsets của bounding box) và nhãn
của vật thể chứa trong bounding box. Điểm đặc biệt làm nên tốc độ của SSD model
là mô hình sử dụng một mạng neural duy nhất. Cách tiếp cận của nó dựa trên việc
nhận diện vật thể trong các features map (là một output shape 3D của một mạng
deep CNN sau khi bỏ các fully connected layers cuối) có độ phân giải khác nhau.
Mô hình sẽ tạo ra một lưới các ô vuông gọi là grid cells trên các feature map, mỗi
ô được gọi là một cell và từ tâm của mỗi cell xác định một tợp hợp các boxes mặc
định (default boxes) để dự đoán khung hình có khả năng bao quanh vật thể. Tại
thời điểm dự báo, mạng neural sẽ trả về 2 giá trị đó là: phân phối xác suất nhãn
của vật thể chứa trong bounding box và một tọa độ gọi là offsets của bounding
box. Quá trình huấn luyện cũng là quá trình tinh chỉnh xác suất nhãn và bounding
box về đúng với các giá trị ground truth input của mô hình (gồm nhãn và offsets
bounding box).
Thêm nữa, network được kết hợp bởi rất nhiều các feature map với những độ phân
giải khác nhau giúp phát hiện được những vật thể đa dạng các kích thước và hình
dạng. Trái với mô hình fast R-CNN, SSD bỏ qua bước tạo mặt nạ region proposal
network để đề xuất vùng vật thể. Thay vào đó tất cả quá trình phát hiện vật thể và
phân loại vật thể được thực hiện trong cùng 1 mạng. Bản thân tên của mô hình -
Single Shot MultiBox Detector cũng nói lên được rằng mô hình sử dụng nhiều
khung hình box với tỷ lệ scales khác nhau nhằm nhận diện vùng vật thể và phân
loại vật thể, giảm thiểu được bước tạo region proposal network so với fast R-CNN
nên tăng tốc độ xử lý lên nhiều lần mà tốc độ xử lý vẫn đảm bảo. Bên dưới là bảng
so sánh tốc độ running của các mô hình object detection.
Kiến trúc mô hình:

32
Hình 3.20 Cấu trúc mạng của SSD [9]
SSD dựa trên một tiến trình lan truyền thuận của một kiến trúc chuẩn (chẳng hạn
VGG16) để tạo ra một khối feature map output gồm 3 chiều ở giai đoạn sớm. Ta
gọi kiến trúc mạng này là base network (tính từ input Image đến Conv7 trong hình
3). Sau đó ta sẽ thêm những kiến trúc phía sau base network để tiến hành nhận diện
vật thể như phần Extra Feature Layers trong sơ đồ. Các layers này được diễn giải
đơn giản như sau.

33
MÔ HÌNH YOLO TRONG BÀI TOÁN NHẬN DẠNG ĐỐI TƯỢNG

Giới thiệu khái quát thuật toán


You only look once (YOLO) là một mô hình CNN để detect object mà một ưu
điểm nổi trội là nhanh hơn nhiều so với những mô hình cũ. Thậm chí có thể chạy
tốt trên những IOT device như raspberry pi. Đầu vào mô hình là một bức ảnh, đối
với bài toán object detection, ta không chỉ phải phân loại được object trên bức ảnh
mà còn phải xác định vị được vị trí của đối tượng đó. Object Detection có khá
nhiều ứng dụng, ví dụ như hệ thống theo dõi người dân, từ đó có thể giúp chính
quyền xác định được tội phạm lẫn trốn ở đó hay không, hoặc hệ thống xe tự lái,
cũng phải xác định được người đi đường ở đâu từ đó đưa ra quyết định di chuyển
tiếp theo.

Hình 4.21 Kết quả nhận dạng các đối tượng trong khung hình
Có một số hướng tiếp cận để giải quyết vấn đề, đồng thời mỗi lần chạy tốn rất
nhiều thời gian. Vì vậy ta sẽ liệt kê các ý tưởng để giải quyết bài toàn object
detection.
Chia ảnh thành nhiều box, mỗi box các bạn sẽ detect object trong box đó. Vị trí
của object chính là tạo độ của box đó.
Thay vì chia thành từng box, ta sẽ sử dụng một thuật toán để lựa chọn những region
ứng viên (ví dụ như là thuật toán Selective Search), các vùng ứng viên này các bạn
có thể tưởng như là những vùng liên thông với nhau trên kênh màu RGB, sau đó

34
với mỗi vùng ứng viên này, ta dùng model để phân loại object. ta có một số mô
hình xây dựng theo kiểu này như RCNN, Fast RCNN
Rất rõ ràng, nhược điểm của các phương pháp trên là tốn rất nhiều tài nguyên để
tính toán cho mội vùng trên một bức ảnh, và do đó không thể chạy realtime trên
các thiết bị yếu.

Tổng quát mô hình của thuật toán


Một trong nhưng ưu điểm mà YOLO đem lại đó là chỉ sử dụng thông tin toàn bộ
bức ảnh một lần và dự đoán toàn bộ object box chứa các đối tượng, mô hình được
xây dựng theo kiểu end-to-end nên được huấn luyện hoàn toàn bằng gradient
descent. Sau đây, tôi sẽ trình bày chi tiết về mô hình YOLO
Grid System
Ảnh được chia thành ma trận ô vuông 7x7, mỗi ô vuông bao gồm một tập các thông
tin mà mô hình phải dữ đoán.
Đối tượng duy nhất mà ô vuông đó chứa. Tâm của đối tượng cần xác định nằm
trong ô vuông nào thì ô vuông đó chứa đối tượng đó. Ví dụ tâm của chai cocacola
nằm trong ô vuông màu xanh, do đó mô hình phải dự đoán được nhãn của ô vuông
đó là chai nước. Lưu ý, cho dù phần ảnh của chai coca có nằm ở ô vuông khác mà
tâm không thuộc ô vuông đó thì vẫn không tính là chứa chai coca, ngoài ra, nếu có
nhiều tâm nằm trong một ô vuông thì ta vẫn chỉ gán một nhãn cho ô vuông đó thôi.
Chính ràng buộc mỗi ô vuông chỉ chứa một đối tượng là nhược điểm của mô hình
này. Nó làm cho ta không thể detect những object có tầm nằm cùng một ô vuông.
Tuy nhiên ta có thể tăng grid size từ 7x7 lên kích thước lớn hơn để có thể detect
được nhiều object hơn. Ngoài ra, kích thước của ảnh đầu vào phải là bội số của
grid size.

35
Hình 4.22 Xác định tâm của bounding box thuộc đối tượng

Mỗi ô vuông chịu trách nhiệm dự đoán 2 boundary box của đối tượng. Mỗi
boundary box dữ đoán có chứa object hay không và thông tin vị trí của boundary
box gồm trung tâm boundary box của đối tượng và chiều dài, rộng của boundary
box đó. Ví vụ ô vuông màu xanh cần dự đoán 2 boundary box chứa chai coca như
hình minh họa ở dưới. Một điều cần lưu ý, lúc cài đặt ta không dự đoán giá trị pixel
mà cần phải chuẩn hóa kích thước ảnh về đoạn từ [0-1] và dự đoán độ lệch của tâm
đối tượng đến box chứa đối tượng đó. Ví dụ, ta thay vì dữ đoán vị trí pixel của
điểm màu trắng, thì cần dự đoán độ lệch a, b trong ô vuông chứa tâm object.

36
Hình 4.23 Dự đoán độ lệch của 2 box chứa object
Tổng hợp lại, với mỗi ô vuông ta cần dữ đoán các thông tin sau:
Ô vuông có chứa đối tượng nào hay không?
Dự đoán độ lệch 2 box chứa object so với ô vuông hiện tại
Lớp của object đó
Như vậy với mỗi ô vuông ta cần dữ đoán một vector có (nbox+4*nbox+nclass)
chiều. Ví dụ, ta cần dự đoán 2 box, và 3 lớp đối với mỗi ô vuông thì chúng sẽ có
một ma trận 3 chiều 7x7x13 chứa toàn bộ thông tin cần thiết.

CNN cho YOLO object detection:


Ta đã cần biết phải dự đoán những thông tin nào đối với mỗi ô vuông, điều quan
trọng tiếp theo là xây dựng một mô hình CNN có cho ra ouput với shape phù hợp
theo yêu cầu của ta, tức là gridsize x gridsize x (nbox+4*nbox+nclass). Ví dụ với
gridsize là 7x7 là mỗi ô vuông dự đoán 2 boxes, và có 3 loại object tất cả thì ta
phải cần output có shape 7x7x13 từ mô hình CNN

37
Hình 4.24 Quá trình hoạt động của mô hình CNN với đối tượng đã cho [7]

YOLO sử dụng linear regression để dự đoán các thông tin ở mỗi ô vuông. Do đó,
ở layer cuối cùng ta sẽ không sử dụng bất kì hàm kích hoạt nào cả. Với ảnh đầu
vào là 448x448, mô hình CNN có 6 tầng max pooling với size 2x2 sẽ giảm 64 lần
kích thước ảnh xuống còn 7x7 ở output đầu ra. Đồng thời thay vì sử dụng tầng full
connected ở các tầng cuối cùng, ta có thể thay thế bằng tầng 1x1 conv với 13
feature maps để output shape dễ dàng cho ra 7x7x13.

Hàm lỗi Loss Function:


Ta đã định nghĩa được những thông tin mà mô hình cần phải dự đoán, và kiến trúc
của mô hình CNN. Bây giờ là lúc mà sẽ định nghĩa hàm lỗi.
YOLO sử dụng hàm độ lỗi bình phương giữ dự đoán và nhãn để tính độ lỗi cho
mô hình. Cụ thể, độ lỗi tổng sẽ là tổng của 3 độ lỗi con sau:

Độ lỗi của việc dữ đoán loại nhãn của object - Classifycation loss
Độ lỗi của dự đoán tạo độ cũng như chiều dài, rộng của boundary box -
Localization loss
Độ lỗi của ô vuông có chứa object nào hay không - Confidence loss
Ta mong muốn hàm lỗi có chức năng sau. Trong quá trình huấn luyện, mô hình sẽ
nhìn vào những ô vuông có chứa object. Tăng classification score lớp đúng của
object đó lên. Sau đó, cũng nhìn vào ô vuông đó, tìm boundary box tốt nhất trong
2 boxes được dự đoán. Tăng localization score của boundary box đó lên, thay đổi
thông tin boundary box để gần đúng với nhãn. Đối với những ô vuông không chứa
object, giảm confidence score và sẽ không quan tâm đến classification score và
localization score của những ô vuông này.
Tiếp theo, ta sẽ đi lần lượt vào chi tiết ý nghĩa của các độ lỗi trên.
a, Classification Loss
Ta chỉ tính classification loss cho những ô vuông được đánh nhãn là có object.
Classification loss tại những ô vuông đó được tính bằng đỗ lỗi bình phương giữa
nhãn được dự đoán và nhãn đúng của nó.

38
s2
Lclassification = ∑I ∑
i =0
i
obj
c∈ class
(pi ( c) − ˆ
p i ( c)) 2

(4.1)
Trong đó:

I iobj
+ : bằng 1 nếu ô vuông đang xét có object ngược lại bằng 0

+
pˆ i (c) : là xác suất có điều kiện của lớp c tại ô vuông tương ứng mà mô hình dự
đoán

Hình 4.25 Dự đoán box của đối tượng [7]


Ví dụ, trong hình minh họa ở trên, ta có 2 object tại ô vuông (dòng, cột) là (2,1) và
(3,4), chứa object là hình tam giác và hình tức giác đều. Độ lỗi classification loss
chỉ tính cho 2 object này mà ko quan tâm đến những ô vuông khác. Lúc cài đặt ta
cần lưu ý phải nhân với một mask để triệt tiêu giá trị lỗi tại những ô vuông ko quan
tâm.
b, Localization Loss:
Localization loss dùng để tính giá trị lỗi cho boundary box được dự đoán bao gồm
offset x, y và chiều dài, rộng so với nhãn chính xác của ta. Các bạn nên lưu ý rằng,
ta không tính toán trực tiếp giá trị lỗi này trên kích thước của ảnh mà cần chuẩn
dưới kính thước ảnh về đoạn [0-1] đối với tọa độ điểm tâm, và không dữ đoán trực
tiếp điểm tâm mà phải dự đoán giá trị lệch offset x,y so với ô vuông tương ứng.
Việc chuẩn hóa kích thước ảnh và dự đoán offset làm cho mô hình nhanh hội tụ
hơn so với việc dự đoán giá trị mặc định.

(4.2)

Độ lỗi localization loss được tính bằng tổng đỗ lỗi bình phương của offsetx, offsety
và chiều dài, rộng trên tất cả các ô vuông có chứa object. Tại mỗi ô vuông đúng,
39
ta chọn 1 boundary box có IOU (Intersect over union) tốt nhất, rồi sau đó tính độ
lỗi theo các boundary box này. Theo hình mình họa trên ta có 4 boundary box tại
ô vuông đúng có viền màu đỏ, ta chọn 1 box tại mỗi ô vuông để tính độ lỗi. Còn
box xanh được bỏ qua.
Localization loss là độ lỗi quan trọng nhất trong 3 loại độ lỗi trên. Do đó, ta cần
đặt trọng số cao hơn cho độ lỗi này.
c, Confidence Loss:
Confidence loss thể hiện độ lỗi giữa dự đoán boundary box đó chứa object so với
nhãn thực tế tại ô vuông đó. Độ lỗi này tính nên cả những ô vuông chứa object và
không chứa object.

(4.3)
Độ lỗi này là độ lỗi bình phường của dự đoán boundary đó chứa object với nhãn
thực tế của ô vuông tại vị trí tương ứng, ta lưu ý rằng, độ lỗi tại ô vuông mà nhãn
chứa object quan trọng hơn là độ lỗi tại ô vuông không chứa object, do đó ta cần
sử dụng hệ số lambda để cân bằng điều này.
Tổng kết lại, tổng lỗi của ta sẽ bằng tổng của 3 loại độ lỗi trên:

(4.4)
Dự đoán lớp và tọa độ boundary box sau quá trình training
Intersection over Union là chỉ số đánh giá được sử dụng để đo độ chính xác của
Object detector trên tập dữ liệu cụ thể.Ta hay gặp chỉ số này trong các Object
Detection Challenge, dạng như PASCAL VOC challenge.
Để áp dụng được IoU để đánh giá một object detector bất kì ta cần:
Những ground-truth bounding box (bounding box đúng của đối tượng, ví dụ như
bounding box của đối tượng được khoanh vùng và đánh nhãn bằng tay sử dụng
trong tập test.)
Những predicted bounding box được model sinh ra.
Miễn là có hai tập bên trên, ta đều có thể sử dụng được IoU.

Ta chỉ giữ lại những boundary box mà có chứa object nào đó. Để làm điều này, ta
cần tính tích của xác xuất có điều kiện ô vuông thuộc về lớp i nhân với sác xuất ô
vuông đó chứa object, chỉ giữ lại những boundary box có giá trị này lớn hơn
ngưỡng nhất định.
Mỗi object lại có thế có nhiều boundary box khác nhau do mô hình dự đoán. Để
tìm boundary box tốt nhất các object, ta có thể dùng thuật toán non-maximal
suppression để loại những boundary box giao nhau nhiều, tức là có IOU giữ 2
boundary box lớn.
Để tính IOU giữa 2 box ta cần tính diện tích giao nhau giữa 2 box chia cho tổng
diện tích của 2 box đó.

40
Dưới đây là ví dụ trực quan về một ground-truth bounding box và một predicted
bounding box.

Hình 4.26 Một ví dụ về phát hiện biển báo Stop từ hình ảnh [7]
Predicted bounding box được vẽ bằng màu đỏ, trong khi đó Ground-truth được vẽ
bằng màu xanh lá. Mục tiêu của ta là tính toán Intersection over Union giữa hai
bounding box này.
Công thức tính toán Inersection over Union có thể được định nghĩa thông qua:

Hình 4.27 Công thức tính tỉ lệ IoU [7]


Nhìn vào công thức này, bạn sẽ thấy IoU đơn giản là một tỉ lệ. Ở tử số ta tính
toán area of overlap - diện tính phần chồng lên nhau giữa predicted bounding box
và ground-truth bounding box. Phần mẫu số là area of union - diện tích phần hợp -
hay đơn giản hơn là diện tích mà hai bounding box này đang chiếm. Chia diện tích
phần chồng (giao) cho diện tích phần hợp sẽ thu được giá trị mà ta mong muốn
- Intersection over Union (IoU).
Như đã nói ở trên, ground-truth bounding box được "khoanh vùng và đánh nhãn
bằng tay". Khi training một object detector, bạn cần một tập dữ liệu. Tập dữ liệu
này được chia thành (ít nhất) hai nhóm:
Một training set sử dụng để huấn luyện object detector.
Một testing set dùng trong việc đánh giá object detector của bạn.

41
Cả training và testing set đều bao gồm:
Bản thân các hình ảnh.
Các bounding box tương ứng của mỗi object trong ảnh. Bounding box này chỉ đơn
giản là các toạ độ (x, y) của hình chữ nhật bao xung quanh object trong ảnh.
Những bounding box trong training và testing set được khoanh vùng và đánh
nhãn bằng tay, vậy nên đó là lý do ta gọi là ground-truth.

Mục đích cuối cùng là từ các hỉnh ảnh training và bounding box, xây dựng nên
object detector, và sau đó đánh giá performance trên testing set.

Nếu có điểm số IoU > 0.5, prediction sẽ được coi là một "good" prediction.
Nếu trước đây từng thực hiện bất kì project machine learning nào, đặc biệt là
classification, chắc hẳn ta sẽ thường phải predict những class label từ output của
model là chính xác hay không chính xác.
Các binary classification kiểu này có thể tính toán độ chính xác tương đối đơn
giản, tuy nhiên đối với bài toán object detection lại là một câu chuyện khác.

Trong thực tế, các toạ độ (x, y) của predict bounding box hầu như không
thể nào chính xác hoàn toàn với các toạ độ của ground-truth bounding box. Chính
vì thế, ta cần định nghĩa một đại lượng đánh giá có thể khen thưởng những
predicted bounding box trùng khớp nhiều với ground-truth:

Hình 4.28 Các đánh giá tỉ lệ IoU [7]

Như ta có thể thấy, predicted bounding box trùng khớp nhiều với ground-truth có
điểm số cao hơn những box ít trùng. Điều này khiến cho Intersection over Union
trở thành một đại lượng tuyệt vời để đánh giá các object detector.Ta không cần
quan tâm đến sự trùng khớp chính xác của các toạ độ (x, y), nhưng vẫn muốn đảm
bảo các predicted bounding box càng gần với ground-truth càng tốt - IoU có thể
tính đến điều này.

42
THUẬT TOÁN NHẬN DẠNG LỖI CHAI

Cấu trúc phần cứng của hệ thống:


Tổng quan hệ thống

Hình 5.29 Hệ thống cấu trúc phần cứng


Các chai nước sau quá trình chiết rót và đóng nắp sẽ được đưa vào hệ thống kiểm
tra chất lượng trên băng tải. Trong hệ thống này có thể bao gồm các loại cảm biến
hồng ngoại IR hay cảm biến tiệm cận hoặc cũng có thể là cảm biến siêu âm sẽ có
nhiệm vụ phát hiện sự xuất hiện của các chai nước trước Camera. Khi mà các cảm
biến này phát hiện có chai đi qua, hệ thống sẽ đồng thời khởi động camera thông
qua Computer. Hình ảnh được thu nhận thông qua các máy ảnh có độ phân giải và
tốc độ cao và giao tiếp với các phần mềm lập trình xử lý hay các công cụ thu nhận
hình ảnh khác. Từ đó sẽ xây dựng nên một hệ thống xử lý ảnh dựa trên thời gian
thực với mục đích xác định các lỗi trong phần nắp chai.

Hình 5.30 Sơ đồ các phần cấu trúc chính của hệ thống nhận dạng

43
Chú thích:
Khung mô hình
Motor dẫn động băng tải
Motot gạt cocacola lỗi
Biến trở: Phản hồi vị trí thanh gạt
Buồng tối: Bên trong có camera và hệ thống đèn led chiếu sáng
Đế đặt máy tính
Chai Cocacola
Thanh gạt chai lỗi
Băng tải
Hộp điện

Hệ xử lý ảnh trong hệ thống


Hệ Camera

Hình 5.31 Camera Basler


Độ phân giải (Resolution) 1920px x 1080px
Kíc thước cảm biến (Sensor Size) 4,2mm x 2,4mm
Cảm biến hình ảnh (Sensor Type) 1/3.7" CMOS
Tốc độ khung hình (Frame Rate) 26fps
Interface (Kết nối) USB 3.0

Tiếp đó ta cần xác định các thông số yêu cầu của Camera trong hệ thống xử lý ảnh

44
Hình 5.32 Vùng làm việc Field of View

Ta có được sensor size (SS) đã cho sử dụng với camera Basler trong hệ thống là
2,4 mm. Từ đây là dựa vào quy tắc tam giác đồng dạng tính được giá trị tiêu cự
của ống kính Focal Length (FL): FL=WD*SS/FoV.
Trong đó: + FoV (Field of View) là Diện tích vùng làm việc kiểm tra mà Camera
quan sát được
+ Working Distance (WD): Là khoảng cách từ mặt trước của lens đến
vùng đối tượng
+ Sensor size (SS): Là kích thước của cảm biến
Việc chọn tiêu cự của ống kính sao cho đáp ứng được yêu cầu của luận văn sẽ phụ
thuộc vào khoảng cách WD, WD trong thực tế có thể là khoảng cách các kỹ sư tự
ý thiết lập nếu không bị giới hạn về phần cứng (kỹ sư thích đặt camera cách đối
tượng bao nhiêu cũng được), hoặc cũng có thể do yêu cầu của phần cứng là cần
cách mặt nền đặt đối tượng cần kiểm tra một khoảng cách bao nhiêu đó.
Trong bài luận văn này này ta ví dụ ta sẽ đặt camera cách đối tượng là chai cần
nhận dạng với khoảng cách là 250mm.Vậy giá trị tiêu cự của ống kính FL là:
  ×   ×,
FL= = = 1,18 mm
 
Từ đây ta sẽ chọn được Lens phù hợp với bài toán

45
Hình 5.33 Các thông số hoạt động của Camera trong hệ thống

b, Hệ thống chiếu sáng trong luận văn


Hiệu quả của hệ thống xử lý ảnh phụ thuộc vào chất lượng hình ảnh thu được. Hình
ảnh có chất lượng cao cho phép hệ thống phân tích một cách chính xác các thông
tin từ đối tượng kiểm tra, đem lại những kết quả đáng tin cậy của hệ thống. Chất
lượng hình ảnh thu được trong hệ thống xử lí hình ảnh phụ thuộc rất cao vào cấu
hình ánh sáng (màu sắc, góc độ, và cường độ ánh sáng được dùng để chiếu sáng),
quyết định đến chất lượng hình ảnh.
Các thiết bị chiếu sáng nên tối ưu hóa độ tương phản của đối tượng kiểm tra trong
khi giảm thiểu độ tương phản của các phần còn lại, nhờ đó cho phép hệ thống “nhìn
thấy” rõ các vị trí. Hình ảnh đối tượng kiểm tra có độ tương phản cao sẽ đơn giản
hóa và cải thiện độ chính xác của hệ thống; ngược lại hình ảnh với độ tương phản
thấp và phân bố ánh sáng không đồng đều đòi hỏi nhiều thời gian và hiệu suất xử
lý hơn. Cấu hình thiết bị chiếu sáng phù hợp phụ thuộc vào kích thước của các
phần cần kiểm tra, hình dạng, tính chất bề mặt, và các yêu cầu kĩ thuật của thiết
bị. Với nhiều lựa chọn về bước sóng (màu sắc), vùng nhìn (kích thước), và hình
dáng tùy chọn có sẵn, thiết bị chiếu sáng có thể được thay đổi để phù hợp theo yêu
cầu ứng dụng cụ thể.

Xây dựng thuật toán phân loại chai coca


Đối với bài toán kiểm tra nhận dạng lỗi trên dây chuyền đóng chai cocacola sẽ có
2 giai đoạn chính:
+ Giai đoạn kiểm tra hình dáng chai (empty bottle)
+ Giai đoạn chiết xuất nước trong chai (filled bottle)
Ở trong cụ thể luận văn này tôi sẽ tập trung vào giai đoạn thứ hai của hệ thống là
chai đoạn chiết rót. Trong đó sẽ có 3 thành phần quan trọng để kiểm tra và đưa ra
lỗi:

46
+ Nắp chai
+ Nhãn dán
+ Mực nước sau khi chiết rót
Từ các đề xuất trên của bài toán, sẽ có các phương pháp thuật toán sau để giải
quyết và tối ưu bài toán
Phương pháp 1: (Sử thuật thuật toán Template Matching)
Thuật toán nhận dạng lỗi chai dựa trên Template Matching:
Sử dụng phương pháp khớp mẫu (Matching Template Method):
Phương pháp khớp mẫu là một kĩ thuật để tìm các vùng tương đồng của một hình
ảnh mẫu được chọn có trong một hình ảnh lớn hơn.
Trong phương pháp này ta sẽ có 2 thành phần chính:
+ Source Image (Hình ảnh nguồn): Hình ảnh đầu vào chứa đối tượng được quan
tâm
+ Template Image (Hình ảnh mẫu): Hình ảnh bán vá trong quá trình phân tích
sẽ được dùng để tìm kiếm so sánh với Source Image.
Template Image sẽ được “slide” (trượt) từ trái sang phải, từ trên xuống dưới trong
Source Image để so sánh sự tương đồng với nhau và tại mỗi vị trí, mỗi một số liệu
sẽ được tính toán để thể hiện mức độ phù hợp của Template. Phương pháp này sẽ
chuyển về hình ảnh thang độ xám, tại mỗi vị trí, một giá trị sẽ được tính toán để
thể hiện mức độ tốt hay tệ tại vị trí đó (hoặc cũng có thể hiểu là xét mức độ tương
đồng của bản vá hình ảnh với từng khu vực của hình ảnh nguồn).
Dựa trên phương pháp trượt, giả sử ảnh đầu vào có kích thước (WxH) và hình ảnh
mẫu có kích thước là (wxh), thì hình ảnh đầu ra (Result) sẽ có kích thước (W-w+1,
H-h+1).Nói một cách khác, với mỗi giá trị vị trí của T trên I, ta sẽ lưu giữ giá trị
số liệu trong ma trận kết quả thu được R. Mỗi một vị trí (x,y) trong R chứa một số
liệu phù hợp biểu diễn sự tương đồng.
Để thực hiện Template Matching, Open CV cung cấp function
cv2.MatchTemplate():
Result= cv2.matchTemplate(source, template, method)
Trong đó:
source – hình ảnh chứa đối tượng được quan tâm;
template – “object patch” được dùng để tìm kiếm trong source;
method – phương pháp so sánh, gồm cv2.TM_CCOEFF, cv2.TM_SQDIFF,
CV_TM_CCORR…;
result – ma trận chứa kết quả tính toán tại mỗi vị trí để thể hiện mức độ phù hợp
của Template.
Sau khi nhận được kết quả thu được từ ma trận R, ta sẽ sử dụng function
cv2.minMaxLoc()
minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(matrix)
Trong đó:

47
minVal, maxVal – giá trị nhỏ nhất và lớn nhất của matrix;
minLoc, maxLoc – tọa độ của giá trị minVal và maxVal trong matrix, ở dạng (x,
y).
+ Loc max (lọc dãn): đáp ứng tại từng điểm ảnh là giá trị lớn nhất sau quá trình
xếp hạng các giá trị của điểm ảnh lân cận. Tác dụng: Tìm các điểm sáng nhất của
ảnh
+ Loc min (lọc co): đáp ứng tại từng điểm ảnh là giá trị nhỏ nhất sau quá trình xếp
hạng các giá trị của điểm ảnh lân cận. Tác dụng: Tìm các điểm tối nhất của ảnh

Sau đó lấy giá trị này làm góc trên cùng phía bên trái của hình chữ nhật và lấy (w,
h) làm chiều rộng và chiều cao của hình chữ nhật. Hình chữ nhât đó là khu vực
mẫu của chúng ta.

48
*Thuật toán quá trình nhận diện lỗi nắp chai:

Hình ảnh được thu nhận


(Hình ảnh được chuyển Correction
về thang xám)

Phân ngưỡng hình ảnh


(Thresholding)

Ảnh nhị phân


(Binary Image)

Lấy phần bù hình ảnh


(Complement Image)

Biểu diễn các phép


toán hình học
(Perform
Morphological

Tính toán diện tích các


khu vực đối tượng
được liên kết (ROI)

Yes Áp dụng thuật toán No


Template matching
If Area==Ref.Area
Accept Reject

Hình 5.34 Sơ đồ thuật toán của phương pháp Template Matching

49
Hình trên biểu diễn trên sơ đồ khối là quá trình phân tích xử lý hình ảnh. Hình ảnh
thu được là hình ảnh có các giá trị màu xám trong khoảng 0-255. Giá trị 0 sẽ đại
diện cho màu đen, giá trị 255 sẽ đại diện cho màu trắng và ở giữa các giá trị từ 1
đến 254 sẽ đại diện cho các màu xám khác nhau giữa đen và trắng.Hình ảnh tiếp
tục được chuyển đổi thành hình ảnh nhị phân theo phương pháp áp dụng các
ngưỡng phù hợp.Khu vực được quan tâm (ROI) region of interest được tính toán
và sẽ được so sánh với các mẫu ảnh tham chiếu hoàn hảo.Dựa trên kết quả so sánh
này, việc chấp nhận hay loại bỏ đối tượng lỗi sẽ được quyết định.
* Kết quả của việc phân tích xử lý hình ảnh
Hình 5.4 cho thấy hình ảnh chuyển về thang màu xám thu đc (a), ảnh nhị phân (b),
ảnh phần bù (c) và ảnh sau khi trải qua các phương pháp lọc nhiễu để cho ra một
hình mẫu hoàn hảo (d).Hình ảnh mức xám thu được được chuyển đổi thành ảnh
nhị phân bằng cách đặt các giá trị ngưỡng phù hợp.Khi đó khu vực phần nắp sẽ
được chuyển đổi thành vùng màu đen (vì có giá trị nhị phân bằng 0) và các khu
vực còn lại được chuyển đổi thành vùng trắng ( vì có giá trị nhị phân bằng 1).Sau
đó hình ảnh này sẽ được chuyển thành lấy phần bù như hình (c).Với các hình ảnh
này sẽ bị nhiễu từ ảnh hưởng của các môi trường ánh sáng và cần được loại bỏ. Ta
sẽ áp dụng các phương pháp lọc Sobel, Gauss,Median Filters… để loại bỏ nhiễu
của ảnh giúp cho hình ảnh rõ ràng hơn.

Hình 5.35 (a) Ảnh mẫu thu được (b) Ảnh nhị phân (c) Ảnh lấy phần bù (d) Ảnh
sau lọc nhiễu
Hình ảnh kết quả trên cho thấy chỉ bao gồm một liên kết giữa hai thành phần nắp
chai và phần mác của nắp (tamper) và liên kết đó được thể hiện trong khu vực màu
trắng của phần nắp.Khi đó khu vực phần trắng của nắp sẽ được mang ra tính
toán.Ban đầu một phần mẫu tốt của chai sẽ được đưa vào cho việc thu nhận hình
ảnh tham chiếu và các bước phân tích bên trên được thực hiện cho mẫu hình ảnh
chai cụ thể đó và được xét đến để loại bỏ nhiễu của hình ảnh kết quả như hình ảnh
tham chiếu trong suốt quá trình kiểm tra.

50
Hình 5.36 (a) Ảnh thu được bị thiếu (thiếu nắp) (b) Ảnh nhị phân (c) Ảnh lấy phần
bù (d) Ảnh sau lọc nhiễu

Hình 5.37 (a) Ảnh thu dược bị thiếu ( thiếu tamper) (b) Ảnh nhị phân (c) Ảnh lấy
phần bù (d) Ảnh sau lọc nhiễu
Hình ảnh 5.5 và 5.6 cho ta thấy hình ảnh nắp chai hoặc phần tem bên dưới bị thiếu.
Vì vậy, khu vực được xét đến (ROI) được tính toán và so sánh với khu vực của
hình ảnh tham chiếu và cho ra kết quả khác biệt quá lớn. Khi đó thuật toán tiếp tục
được phát triển để hiển thị thông báo lỗi ra màn hình.

Hình 5.38 (a) Ảnh thu được bị thiếu (Nắp và phần tem bị tách khỏi nhau) (b) Ảnh
nhị phân (c) Ảnh lấy phần bù (d) Ảnh sau lọc nhiễu
Hình 5.7 cho ta thấy phần nắp và phần tem bên dưới bị tách khỏi nhau và bị chia
thành 2 phần riêng biệt. Vì vậy trong trường hợp này ROI đã bị chia làm hai thành
phần khu vực khác nhau. Dựa trên các phân tích bên trên sẽ đưa ra kết quả như
hình 5.8.

Hình 5.39: Ảnh thu nhận bị từ chối do lỗi

Để có được sự chính xác trong hệ thống kiểm tra, ánh sáng môi trường sẽ là một
thách thức lớn tạo ra thành phần nhiễu trong hình ảnh dẫn đến sự phức tạp trong

51
quá trình đứa ra việc phát triển các thuật toán cho phù hợp. Về cơ bản để lọc được
tối đa nhiễu thì môi trường của dối tượng cần được đặt trong không gian tối

Phương pháp 2: Thuật toán sử dụng Edge Detection (tìm biên cạnh)

Tiền xử lý Phân đoạn ảnh


Thu nhận ảnh
(Lọc nhiễu) (Tìm biên)

Kĩ thuật hình thái học


(Morphological
techniques)

Phát hiện các cạnh dọc của chai


(Detection Vertical Lines)

Khoảng cách giữa S


hai đường biên dọc

Phát hiện các đường ngang (horizontal line) để xác


định đường qua nắp chai và mực nước

Xác định đường kẻ


ngang trung bình
(Average Line)
So sánh hiệu khoảng cách của So sánh hiệu khoảng cách của
đường trung bình và đường đường trung bình và đường kẻ
kẻ ngang mực nước với giá trị đỉnh nắp với giá trị khoảng cách
khoảng cách chuẩn ban đầu chuẩn ban đầu

Under Over fill No Unpacked


fill Normal cap Normal
level Cap
level

Hình 5.40 Sơ đồ thuật toán Edge Detection


52
Thuật toán xử lý nhận dạng nắp chai và mực nước trong chai:
Công việc đầu tiên để hệ thống nhận dạng phân loại nắp chai và mực nước được
thực thi là xác định thuật toán nhận dạng vật thể là chai cocacola có tồn tại trong
vùng ROI đang xét hay không.Bằng việc nhận dạng được các đường line thông
qua các thuật toán tiền biên cạnh (edge detection), từ đó ta sẽ xác định các đường
vertical có trong vùng ROI.Sử dụng toán tử vecto Vec4i từ các đường vertical line
đã xác định ở bước trước để xác định tọa độ khoảng cách để từ đó đưa ra kết quả
có xuất hiện chai trong khung hình ROI hay không.Bước tiếp theo ta xác định các
đường horizontal line (các đường ngang) là các đường ngang định nghĩa của nắp
chai mực nước trong chai.Từ đó sẽ xác định đường tham chiếu hay đường trung
bình (được xác định trước trong điều kiện là chai chính xác) để từ đó làm tham
chiếu cho tất cả các chai còn lại trong hệ thống.Kết quả sẽ được thể hiện ở hình …
Algorithm:
Thu nhận hình ảnh
Tiền xử lý để khử nhiễu
Chuyển về ảnh nhị phân
Tìm biên của ảnh
Xác định đường line thẳng đứng
FoundBottleWidth = LineVerticalRight – LineVerticalLeft
If (FoundBotleWidth = BottleWidth)
Bottle Found (Tìm thấy chai)
Xác định đường nằm ngang
LineTB = RoiCheck/2
CapDetection = LineCap – LineTB
LevelDetection = LineLevel – LineTB
If (MinCap < CapDetection <MaxCap)
If (MinLevel < LevelDetection < MaxLevel)
Cap and Level fine
Else
Cap fine, level not fine
Else
If (MinLevel < LevelDetection < MaxLevel)
Cap not fine, level fine
Else
Cap and Level not fine
Else
No Bottle Found

Kết quả thực nghiệm

53
Hình 5.41 Kết quả chương trình báo đạt khi nhận diện thành công nắp chai và mực
nước

Hình 5.42 Kết quả chương trình báo lỗi nhận được nắp chai nhưng mực nước
không chính xác

54
Hình 5.43 Kết quả chương trình báo lỗi khi không tồn tại nắp chai và mực nước
không chính xác

Hình 5.44 Kết quả chương trình báo lỗi khi nắp chai bị lắp lệch và mực nước
không chính xác
*KẾT LUẬN CHUNG 2 PHƯƠNG PHÁP TRÊN
Phương án Template Matching Edge detection
Ưu điểm + Thuật toán đơn giản dễ sử dụng +Thuật toán có thể kết
hợp đồng thời việc kiểm
tra nắp và mực nước
+ Độ chính xác được cải
thiện trong môi trường
ánh sáng tốt

55
Nhược điểm + Điều kiện môi trường thực ngiệm + Điều kiện ánh sáng
phải trùng khớp với ảnh mẫu trong quyết định phần lớn đến
bộ dữ liệu độ chính xác của hệ
+ Chỉ có thể nhận lỗi được từng chai thống
+ Độ ổn định của hệ thống thấp khi + Chỉ có thể nhận diện
thay đổi góc nhìn của camera với từng chai đi qua camera
chai
Bảng 5.1 Nhận xét đưa ra kết luận chung của hai Phương pháp 1 và 2

Phương pháp 3 được đề xuất trong bài toàn của luận văn (kết hợp giữa thuật toán
YOLO trong neural network và edge detection sử dụng trong phương pháp 2)

Ảnh đầu vào

Darknet Network

Bounding Box và các id


obj

Phân loại các bbox là


bottle, label, cap

Sắp xếp bbox bottle từ


trái qua phải

Nhóm cap và label vào


bottle đã tìm được

Bottle đủ cap và S
label

Đ
Cắt ROI kiểm tra mực
nước từ bbox bottle
Nhận diện chai và các thành phần của chai

56
Đ Mực nước S
Chai đạt Chai chưa đạt
OK
Sử dụng bộ train YOLO dựa trên mạng darknet (gồm 5000 ảnh chai cocacola thu
nhận theo nhiều góc khác nhau) để training và detect các thành phần của chai, đầu
ra của mạng là các bbox với các label tương ứng một cách lộn xộn
a, Phân loại các bbox
Khi trả ra bbox yolo trả theo tên label để biết đối tượng nào, do đó ta phân thành
các nhóm gồm Chai, Nhãn, Nắp Chai
b, Thuật toán phân chai
BBox chai nhận được
For i=0 to (số chai -1)
For j=i+1 to số chai
If (tọa độ X. BBox[i] > tọa độ X. BBox[j])
Biến tạm = BBoxchai[i]
BBoxchai[i] = BBoxchai[j]
BBoxchai[j] = Biến tạm
List chai từ trái qua phải
Với mỗi BBoxchai tìm được
dCapBottle = Abs (dBBoxCap.X – dBBoxchai.X)
dLabelBottle= Abs (dBBoxLabel.X – dBBoxchai.X)
If (MinCap_Value < dCapBottle < MaxCap_Value)
If (MinLabel_Value < dLabelBottle < MaxLabel_Value)
Chai có nắp, label
Else
Chai có nắp, không label
Else
If (MinLabel_Value < dLabelBottle < MaxLabel_Value)
Chai không nắp, label
Else
Chai không nắp, không label
Kết thúc kiểm tra bên ngoài

57
Hình 5.46 Kết quả kiểm tra chai coca lần 1 (Chai 1 chính xác, Chai 2 thiếu nắp)

Hình 5.47 Kết quả kiểm tra chai coca lần 2 (Chai 1 chính xác, Chai 2 thiếu nhãn
dán)

Đo mực nước có trong chai

58
Sau khi nhận diện chai đủ các thuộc tính nắp và nhãn. Ta tiến hành đo mực nước
có trong chai
Vùng roi được cắt từ bbox chai tìm được để loại bỏ đi các phần không liên quan
đến mực nước

Hình 5.48 Vùng roi cắt từ bbox chai


Sau khi cắt roi xử lí nhiễu để đo mực nước
a, Phương pháp lọc nhiễu
Trong nghiên cứu này sử dụng bộ lọc trung vị (median filter) thay thế các giá trị
trong trung tâm cửa sổ bằng giá trị có cấp bậc ở giữa tất cả các pixel nằm trong
cửa sổ đó

Hình 5.49 Ảnh sau khi cắt ROI chưa dùng Filter

Hình 5.50 Ảnh sau khi cắt ROI dùng Median Filer
Ảnh làm mờ đi các noise làm nổi bật phần nước màu đen để phục vụ cho phần tìm
biên mực nước và không khí
b, Dò cạnh tìm mực nước
59
Có nhiều phương pháp khác nhau để dò cạnh như : Robert Cross, Sobel, laplace,
Canny. Trong nghiên cứu này sử dụng bộ lọc Canny bộ lọc thường sử dụng trong
hệ thống thị giác máy tính khác nhau..

Hình 5.51 Chai sau khi sử dụng bộ lọc Canny (chưa điều chỉnh Threshold)

Hình 5.52 Chai sau khi sử dụng bộ lọc Canny (đã điều chỉnh Threshold)
Điều chỉnh threshold hiển thị rõ ranh giới giữa mực nước và không khí làm đầu
vào cho thuật toán tìm mực nước

c, Tìm đường nằm ngang, xác định mực nước


Trong nghiên cứu này sử dụng phép toán hình thái hình học để tìm ra đường thẳng
nằm ngang chính là mực nước cần tìm
Với đầu vào là vùng roi edges đã tìm được sử dụng phép toàn Openning để tìm
đường nằm ngang
Cách thức hoạt động của phương pháp:

Mặt nạ detect Line Horrizontal


Tạo ra một mặt nạ có chiều là n*1 trong đó n = ảnh đầu vào /30
Sử dùng phép toán co erosion loại đi tất cả các đường không nằm trong mặt nạ
nhằm tìm các đường nằm ngang
Sử dụng tiếp phép toán giãn nơ (dilation) để trả lại kích thước như ban đầu cho
đường nằm ngang, như vậy ta đã đã xác định được đường nằm ngang và hiển thị
lên ảnh
d, Lấy ra tọa độ của đường thẳng nằm ngang đã tìm được ở trên

60
Để tìm được vị trí của đường thẳng đã tìm ra trong ảnh sử dụng houghline
Tranform để tìm đường thẳng
Sử dụng hàm HoughLineP để tìm được ra tọa độ điểm đầu điểm cuối của đường
thẳng đã tìm được

Hình 5.53 Đường thẳng tìm được

f, Trả về kết quả mực nước để kiểm tra


Sau khi lấy được tọa độ của đường thẳng là mặt nước ta tiến hành tính toán để đưa
ra khoảng cách giữa dường chuẩn và đường mực nước
Đường chuẩn ở đây là đường trung bình của ảnh chia đôi phần roi đo mực nước
làm hai phần

Mẫu đường trung bình làm chuẩn


Khi có đường chuẩn ta tính khoảng cách giữa đường chuẩn và đường mực nước
theo công thức:
.    =  Trong đó l.y là tọa độ y của điểm nằm trên đường chuẩn L.y
là tọa độ y của điểm nằm trên đường thẳng là mực nước
Khi kiểm tra chương trình sẽ trả về hai đường và kết quả mực nước đã tính toán

Hình 5.54 Kết quả hai đường mực nước và đường chuẩn
61
Kết quả trả về mực nước tính toán trong cột LevelLength chính là khoảng cách
giữa hai đường
Phân tích kết quả đã đạt được của phương pháp đề xuất

Sau khi kiểm tra tất cả các thuộc tính sẽ đưa ra kết quả chai thiếu gì và có đạt qua
kiểm tra hay không

Hình 5.55 Chương trình GUI hoàn thiện hoạt động trong thực tế

62
TT Đối tượng
Vị trí thực tế Vị trí thừa Vị trí thiếu Kết luận
(pixel) yT= thể tích thể tích
(pixel) (pixel)
1 1 55 50 60 Đạt
2 2 53 50 60 Đạt
3 3 31 50 60 Thừa thể tích
4 4 30 50 60 Thừa thể tích
5 5 68 50 60 Thiếu thể tích
6 6 68 50 60 Thiếu thể tích
7 7 67 50 60 Thiếu thể tích
8 8 54 50 60 Đạt
9 9 53 50 60 Đạt
10 10 29 50 60 Thừa thể tích
Bảng 5.2 Kết quả thực nghiệm đo liên tiếp các chai trên dây chuyền sản xuất mô
phỏng

70

60

50
Giá trị mực nước

40

30

20

10

0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Chai số

Hình 5.56 Biểu đồ kết quả thực nghiệm đo liên tiếp các chai trên dây chuyền sản
xuất mô phỏng
Số lần đo Vị trí thực Vị trí thừa Vị trí thiếu Kết quả Xác suất
(mực tế (pixel) thể tích thể tích kết quả
nước) yT= (pixel) (pixel) đạt
1 54 50 60 Đạt 90%
2 55 50 60 Đạt
3 50 50 60 Đạt

63
4 52 50 60 Đạt
5 54 50 60 Đạt
6 49 50 60 Không đạt
7 54 50 60 Đạt
8 54 50 60 Đạt
9 55 50 60 Đạt
10 53 50 60 Đạt
Bảng 5.3 Kết quả thực nghiệm đo 1 chai lần lượt 10 lần

70

60

50
Giá trị pixel

40

30

20

10

0
0 2 4 6 8 10 12 14 16
Lần đo

Hình 5.57 Biểu đồ kết quả đo thực nghiệm đo 1 chai 10 lần


Kết luận

Phương pháp Template Matching Edge detection YOLO+ edge


detection
Ưu điểm + Thuật toán đơn giản + Thuật toán có thể + Độ chính xác nắp
dễ sử dụng kết hợp đồng thời và nhãn dãn 95%
việc kiểm tra nắp (phụ thuộc vào bộ
và mực nước dữ liệu training qua
+ Độ chính xác YOLO)
được cải thiện + Độ chính xác
trong môi trường mực nước tăng so
ánh sáng tốt với phương pháp 2
(do không cần
nhận thêm đường
ngang của nắp
chai)

64
+ Hệ thống chạy
realtime
+ Hệ thống có thể
xử lý nhận diện
được nhiều chai
cùng một thời điểm
Nhược điểm + Điều kiện môi trường + Điều kiện ánh + Phụ thuộc vào
thực ngiệm phải trùng sáng quyết định ánh sáng môi
khớp với ảnh mẫu trong phần lớn đến độ trường khi kiểm tra
bộ dữ liệu chính xác của hệ mực nước và cần
+ Chỉ có thể nhận lỗi thống điều chỉnh thông số
được từng chai + Chỉ có thể nhận trước mỗi lần chạy
+ Độ ổn định của hệ diện từng chai đi hệ thống
thống thấp khi thay đổi qua camera
góc nhìn của camera
với chai
Bảng 5.4 Đưa ra kết luận chung và so sánh giữa ba phương pháp

65
KẾT LUẬN CHUNG VÀ HƯỚNG PHÁT TRIỂN CỦA LUẬN VĂN

Kết luận chung


Kiểm tra sản phẩm trên dây chuyền đóng chai nước ngọt là một khâu quan trọng
trong quá trình thành phẩm. Nó yêu cầu độ chính xác cao trong khi sự giám sát,
kiểm tra của con người có thể có những sai sót do sức khỏe, mất tập trung hoặc
thiếu cẩn thận dẫn đến các lỗi xảy ra trên sản phẩm.
Từ nghiên cứu trong luận văn ta có thể thấy việc ứng dụng xử lý ảnh trong kiểm
tra dây chuyền sản xuất đóng chai nước ngọt sẽ giúp phát hiện các lỗi sai một cách
nhanh chóng, tự động và chính xác hơn, giúp con người có thể tiết kiệm được sức
lao động, thời gian và nhiều khoản chi phí.Qua quá trình nghiên cứu thực hiện luận
văn tôi đã xây dựng đề xuất một thuật toán chương trình ứng dụng kỹ thuật xử lý
ảnh cơ bản kết hợp với mô hình học sâu (Deep Learning) để phân tích các lỗi theo
yêu cầu và kiểm tra sản phẩm dựa trên tính cấp thiết của luận văn với thiết kế tối
ưu,dễ dàng vận hành, và độ chính xác của hệ thống qua kết quả đo thực nghiệm là
95% .
Qua quá trình tìm hiểu và thực hiện đề tài do trình độ và thời gian có hạn, bài báo
cáo vẫn còn những hạn chế nhất định về hệ thống phần cứng cũng như thuật toán
chưa được tối ưu hoàn toàn để có thể áp dụng vào thực tế. Tôi xin được tiếp thu ý
kiến đánh giá, chỉ bảo của các thầy cô giáo để đề tài có những hướng mới phát
triển và hoàn thiện hơn.

Hướng phát triển của luận văn


+ Sử dụng thêm 1 camera theo chiều thẳng đứng để nhận dạng và kiểm tra lỗi của
chai nước rỗng trước khi bước vào quá trình chiết rót.
+ Mở rộng thuật toán huấn luyện trên các model mạng học sâu (deep learning) để
tăng độ chính xác ở các góc camera trong quá trình nhận diện đối tượng.
+ Mở rộng bài toán để có thể đồng bộ hóa quá trình kiểm tra lỗi chai vào toàn bộ
hệ thống chiết rót chai từ động.

66
TÀI LIỆU THAM KHẢO

[1]. Phạm Việt Bình, Đỗ Năng Toàn, Xử lý ảnh. NXB Khoa học và kỹ thuật, Hà
Nội, 2008.
[2]. Ngô Diên Tập, Xử lý ảnh bằng máy tính, NXB Khoa học và kỹ thuật, Hà Nội,
1997.
[3]. Lương Mạnh Bá - Nguyễn Thanh Thuỷ, Nhập môn xử lý ảnh số, NXB Khoa
học và Kỹ thuật, 1999.
[4]. Leila Yazdi, Anton Satria Prabuwono and Ehsan Golkar, “Feature Extraction
Algorithm for Fill Level and Cap Inspection in Bottling Machine”, Proceedings of
IEEE International Conference on Pattern Analysis and Intelligent Robotics, Vol.
1, pp. 47-52, 2011.
[5]. Shubhi Sharma, K. Vinaya Krupa, Roshni Gandhi, Aditi Jain and Nehal Shah,
EMPTY AND FILLED BOTTLE INSPECTION SYSTEM
[6]. H. Zhu, “New algorithm of liquid level of infusion bottle based on image
processing,” in Proc. International Conference on Information Engineering and
Computer Science, 2009.
[7]. Joseph Redmon, Ali Farhadi, YOLOv3: An Incremental Improvement
[8].http://en.wikipedia.org/wiki/Morphological_image_processing#Properties_of
_the_basic_operators
[9]. https://medium.com/analytics-vidhya/beginners-guide-to-object-detection-
algorithms-6620fb31c375

67

You might also like