Professional Documents
Culture Documents
PHƯƠNG PHÁP PHÂN TÍCH ẢNH VÀ NHẬN DIỆN QUẢ DỨA
PHƯƠNG PHÁP PHÂN TÍCH ẢNH VÀ NHẬN DIỆN QUẢ DỨA
Hình 4.2 Màu sắc của quả dứa, lá dứa, vương miện tương đồng nhau
Bài toán phân loại trên không có đặc trưng cụ thể vì vậy cần một phương pháp để dạy cho
máy tính hiểu được đâu là quả dứa trong ảnh.
Phương pháp nhận diện mà các bạn kì trước đã làm là dùng thuật toán Haar Cascade. Khi đó
sẽ đẩy hai bộ dữ liệu bao gồm một tập dữ liệu có chứa ảnh quả dứa và một tập dữ liệu là không
chứa ảnh quả dứa để huấn luyện và nhận diện quả dứa.
Kết quả thu được:
Hình 4.3 Kết quả nhận diện quả dứa bằng phương pháp Haar Cascade
Từ kết quả cho ta thấy kết quả đang còn sai lệch nhiều, những quả dứa ở gần camera có thể
nhận diện được, tuy nhiên ở những vị trí không có quả dứa máy tính vẫn cho đó là quả dứa, có
quả dứa được nhận diện hai lần.
1.2.2 Phương pháp Deep Learning
Deep learning là một nhánh của học máy, chủ yếu dựa trên mạng nơ-ron nhân tạo. Mạng nơ-
ron nhân tạo sử dụng trong Deep learning chứa nhiều lớp ẩn, nên được gọi là mạng nơ-ron sâu,
tên gọi Deep learning cũng xuất phát từ đây. Ngoài ra, Deep learning cũng có thể hiểu theo nghĩa
là hiểu sâu vấn đề. Đối với phương pháp Machine learning thông thường, từ dữ liệu đầu vào, ta
cần thực hiện nhiều giải thuật để phân tích ra các đặc trưng (ví dụ đối với ảnh ta cần phân tích đặc
trưng về ánh sáng, màu sắc, độ tương phản,...). Như vậy, trong phương pháp Machine learning
thông thường, con người đang bắt máy tính phải hiểu về vấn đề giống cách con người hiểu. Tuy
nhiên, kiến trúc não bộ và kiến trúc máy tính khác nhau rất nhiều, việc hiểu về một vấn đề theo
cùng một cách, chưa chắc đã giúp cho máy tính suy luận giống với con người, do đó, kết quả mà
các mô hình Machine learning thông thường đưa ra vẫn có khả năng là kết quả của một quá trình
học “vẹt”.
Một mạng nơ-ron nhân tạo đơn giản có cấu trúc như hình dưới:
Hình 4.4 Mạng nơ-ron nhân tạo
Lớp đầu vào (lớp input): Là lớp nhận kích thích, mọi kích thích vào mạng sẽ đều thông qua
lớp này.
Lớp ẩn (lớp hidden): Nằm sau lớp đầu vào, nhận tín hiệu từ lớp đầu vào trước khi chuyển
sang lớp tiếp theo.
Lớp đầu ra (lớp output): Nhận tín hiệu từ lớp ẩn và đưa ra kết quả.
Ứng với mỗi liên kết sẽ có các trọng số.
Ứng với mỗi nơ-ron (trong mạng nơ-ron nhân tạo gọi là unit – đơn vị) sẽ có một giá trị
ngưỡng (giá trị mà tại đó nơ-ron phát tín hiệu) và một giá trị tương ứng với xung điện được
phát đi, tất cả được quy định bởi một hàm kích hoạt. Một hàm kích hoạt thường thấy là hàm
ReLU:
F(x) = max(0, x).
Hàm này sẽ chỉ cho tín hiệu truyền đi khi giá trị truyền đến nơ-ron ≥ 0
Khi giá trị truyền đơn nơ-ron ≥ 0, nó sẽ truyền toàn bộ giá trị này đi.
Mạng nơ-ron nhân tạo cơ bản gồm có nhiều lớp, mỗi lớp lại gồm nhiều nơ-ron, các nơ-ron
được liên kết với nhau bởi các liên kết. Ban đầu, mạng nơ-ron được thiết kế để mỗi nơ-ron đều
liên kết với mọi nơ-ron ở lớp liền trước và lớp liền sau, mỗi một liên kết lại mang một trọng số
khác nhau. Mạng nơ-ron nhân tạo như vậy gọi là mạng nơ-ron kết nối đầy đủ (fully-connected
neural network).
Với mạng nơ-ron nhân tạo, các trọng số cần điều chỉnh trong quá trình huấn luyện chính là
các trọng số của các liên kết. Có thể thấy, mạng nơ-ron kết nối đầy đủ, số trọng số cần tối ưu là
rất lớn.
Ta có thể nhận thấy, với một đầu vào cụ thể, sẽ chỉ có một số thuộc tính là có ảnh hưởng lên
nhau. Ví dụ với dữ liệu đầu vào là một bức ảnh, hầu như chỉ có các điểm ảnh gần nhau mới cùng
nhau tạo nên một đối tượng (object). Ngoài ra, đối với ảnh, mỗi quan hệ giữa một cụm điểm ảnh
liên tiếp cũng không thay đổi nếu chúng được đặt ở các vị trí khác nhau trong bức ảnh này. Vì
vậy, một kiến trúc mạng nơ-ron nhân tạo mới đã được đề xuất, cắt bỏ đi các liên kết không gây
nhiều ảnh hưởng và bắt các liên kết có cùng bản chất chia sẻ trọng số với nhau. CNN chính là một
kiến trúc mạng nơ-ron như vậy.
Phương pháp Deep learning tiếp cận vấn đề theo một hướng khác, thay vì phải đưa ra những
đặc trưng tương đối cụ thể như đã kể trên, thì ta chỉ đưa cho mô hình những đặc trưng “thô”, ví dụ
đối với ảnh là một ma trận 3 chiều chứa các giá trị, mỗi giá trị ứng với cường độ một kênh màu (R
– đỏ, G – lục, B – lam) tại một điểm ảnh nào đó. Mô hình sẽ tự phân tích, kết hợp, suy luận và lựa
chọn ra các đặc trưng phù hợp để quyết định đầu ra. Mạng nơ-ron nhân tạo sâu thực hiện việc này
một cách hiệu quả, do càng vào sâu, các tham số càng trở nên khó hiểu (trừu tượng) đối với con
người, nên con người càng khó can thiệp vào, vì vậy, deep learning sẽ hoàn thành nhiệm vụ đầu
tiên: để cho máy tính tự hiểu vấn đề theo cách hiểu của máy. Các đặc trưng trừu tượng này sẽ
được đưa qua một mô hình Machine learning, tương tự như phương pháp Machine learning thông
thường, để tạo ra kết quả cuối cùng. Nếu mô hình Machine learning này là một mạng nơ-ron nhân
tạo, ta có thể nối hai mạng này với nhau, thành một mạng duy nhất. Việc sử dụng một mạng nơ-
ron duy nhất sẽ giúp quá trình học trở nên xuyên suốt, liền mạch, giúp nâng cao hiệu quả của quá
trình huấn luyện cũng như tối ưu cho kết quả.
1.2.3 CNN – mạng nơ-ron tích chập (Convolutional Neural Network)
1
i 0
obj
i
cclasses
( pi (c) pˆ i (c)) 2
Where
1iobj 1 if an object appears in cell i, otherwise 0.
b) Localization loss
Localization loss đo lỗi của vị ví và kích thước các boundary box được dự đoán. Chúng ta
chỉ tính những box được xác định là có đối tượng.
S2
1
i 0
obj
i
cclasses
( pi (c) pˆ i (c))2
Where
1iobj 1 if an object appears in cell i, otherwise 0.
c) Confidence loss
Với một đối tượng được phát hiện, confidence loss được tính như sau:
S2 B
1
i0 j 0
obj
ij (Ci Cˆi ) 2
Where
Cˆ i is the box condifence score of the box j in cell i.
1ijobj 1
if the j th boundary box in cell i is responsible for detecting the object, otherwise 0.
Đối với đối tượng không được phát hiện, confidence loss được tính:
S2 B
noobj 1ijnoobj (Ci Cˆi ) 2
i 0 j 0
Where
1ijnoobj 1ijobj
is the complement of
Cˆi is the box confidence score of the box j in the cell i.
noobj
weights down the loss when detecting background.
d) Loss
i 0 j 0
S2
B 2 2
coord 1 obj
ij wi wˆ i hi hˆi
i 0 j 0
S2 B S2 B
1 (Ci Cˆi ) noord 1ijnoobj (Ci Cˆi ) 2
obj
ij
2
i 0 j 0 i 0 j 0
2
S
1ijobj p (c) pˆ (c)
2
i i
i 0 cclasses
Dứa non:
Tên đánh dấu: baby pineapple
Đặc điểm:
- Vương miện nhỏ
- Vỏ có màu hơi đỏ
- Kích thước nhỏ
Dứa xanh:
Tên đánh dấu: green pineapple
Đặc điểm:
- Vương miện đã to
- Vỏ có màu xanh
- Kích thước lớn
Dứa chín:
Tên đánh dấu: ripe pineapple
Đặc điểm:
- Vương miện đã to, xòe rộng
- Vỏ có màu vàng
- Kích thước lớn
+ Các bộ phận cần đánh dấu bao gồm vương miện, thân, và toàn bộ (bao gồm thân và vương
miện).
Hình 4.13 Mỗi khung ảnh sau khi gán nhãn sẽ gồm một file ảnh và một file.xml
1.5 Cài đặt chương trình
1.5.1 Môi trường cài đặt
- Hệ điều hành: Ubuntu 18.04
- Ngôn ngữ: Python 3
- Framework: Keras trên Tensorflow
1.5.2 Tiền xử lý
- Ảnh được resize về kích thước 416x416 nhưng giữ nguyên tỉ lệ bằng cách thêm viền đen
(zero-fill).
- Anchor boxes: là các kích thước mặc định cho các bounding box. Sử dụng thuật toán k-
means trên tập test để chọn ra 3 anchor boxes. YOLOv3 dự đoán toạ độ tâm và kích thước
hình bao bằng cách dự đoán độ chênh lệch (offset) toạ độ, kích thước so với anchor boxes.
Number of Number of
ground-truth True False Average
Lớp
detected objects Positive Positive Precision
objects
Dứa xanh 554 569 501 68 88.39%
Dứa chín 880 951 853 98 93.26%
mAP 90.82%
Hình 4.18 Hình ảnh minh họa của góc chụp camera và điểm ảnh
Hình 4.19 Hình ảnh chi tiết các điểm dùng để xác định toạ độ hai quả dứa
Cho biết:
- Kích thước ảnh WxH: imgw x imgh
- Phạm vi nhìn ngang của camera: ^P' FQ '=α = 69,4
o
x, y x0
imgw imgh
, y0
Như vậy ta có 2 2
Tại điểm S
Xác định rx :
rx = SY
Ta có : x = S’Y’
Khoảng cách từ camera đến ảnh tính theo pixel là:
imgw imgh
FG ' hPixel /2
2 tan
2 tan
2 2
Khoảng cách từ camera đến điểm ảnh tính theo pixel là:
Y 'G '
YFO Y ' FG ' GFO
arctan GFO
FG '
y
arctan GFO
hPixel
Áp dụng định lý Talet cho tam giác SYF ta có:
FS ' FY '
FS FY
FS depth1
FY FY . FY '.
FS ' depthPixel
depth1
FY Y ' G '2 FG '2 .
depthPixel
ry YO FY .sin YFO
depth1 y
ry . y 2 hPixel 2 .sin arctan GFO
Hay depthPixel hPixel
Xác định rz :
rz = 0 do điểm S nằm trên mặt phẳng Oxy (mặt phẳng đất)
Tại điểm E
Xác định rx :
rx = EK
Ta có : x = S’Y’
Khoảng cách từ camera đến ảnh tính theo pixel là:
imgw imgh
FG ' hPixel /2
2 tan
2 tan
2 2
Khoảng cách từ camera đến điểm ảnh tính theo pixel là:
Y 'G '
YFO Y ' FG ' GFO
arctan GFO
FG '
y
arctan GFO
hPixel
Áp dụng định lý Talet cho tam giác EKF ta có :
FS ' FY '
FE FK
FE depth 2
FK FY '. FY .
FS ' depthPixel
depth2
FK Y ' G '2 FG '2 .
depthPixel
ry KL FK .sin YFO
depth2 y
ry . y 2 hPixel 2 .sin arctan GFO
Hay depthPixel hPixel
Xác định rz :
r z = EH = LO
rz FO FL FO FE 2 EL2 FO FE 2 EK 2 KL2
rz FO depth 2 rx 2 ry 2
Nhận xét :
Từ việc tính tọa độ của 2 điểm S và E, ta suy ra công thức tổng quát:
depth
rx x.
depthPixel
depth2 y
ry . y 2 hPixel 2 .sin arctan GFO
depthPixel hPixel
rx FO depth 2 rx 2 ry 2
Tuy 2 quả dứa tại 2 điểm S và E có cùng vị trí pixel trên khung ảnh, nhưng với công thức
trên ta xác định được chính xác tọa độ thật của 2 quả dứa có chiều cao và vị trí khác nhau bằng
cách tính thông số chiều sâu của camera đến đối tượng thật. Đây cũng là bước cải tiến mới so với
cách tính thông thường là dựa vào chiều cao của camera so với mặt đất (FO). Cách tính này cho ra
kết quả tọa độ chính xác hơn, đơn giản hơn.