Professional Documents
Culture Documents
HÀ NỘI, 3/2020
1
ĐỀ TÀI LUẬN VĂ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
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.
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.
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.
Hình 2.1 Các giai đoạn của một quá trình xử lý ảnh
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.
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
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)
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]
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.
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.
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.
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ỏ.
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ở”.
(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.
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.
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
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.
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:
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:
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.
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
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.
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.
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.
Độ 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
(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:
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:
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
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
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
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:
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.
Để 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)
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)
Darknet Network
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)
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.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
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.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
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
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