Kernel
Kernel là m t ma tr n vuông kích th c k*k trong đó k là s l , k có th là 1, 3, 5, 7, 9,...
Ví d kernel kích th c 3*3: W = Ma tr n nh xám X kích th c 5x6:
Kí hi u phép tính convolution ( ), kí hi u Y = X W
V i m i ph n t xij trong ma tr n X l y ra m t ma tr n có kích th c b ng kích th c c a kernel W có ph n t xij làm trung tâm (đây là vì sao kích th c c a kernel th ng l ) g i là ma tr n A. Sau đó tính t ng các ph n t c a phép tính element-wise c a ma tr n A và ma tr n W, r i vi t vào ma tr n k t qu Y kích th c 4x5
LU N V N TH C S
21 1x1 + 6x0 + 7x1 + 3x1 + 3x5 + 6x1 + 3x0 + 3x1 + 5x2 = 45
Hình 2. 12: Mô t thu t toán Kernel
Padding
Padding = k ngh a là thêm k vector 0 vào m i phía (trên, d i, trái, ph i) c a ma tr n.
LU N V N TH C S
22 Nh ta, nêu th c hi n phép tính nh trên thì giá tr ngoài vi n s b m t đi
và ma tr n Y không còn gi đ c kích th c c a X.
Gi ta mu n ma tr n Y thu đ c có kích th c b ng ma tr n X và không làm m t đi thông tin c a các giá tr ngoài vi n => thêm các giá tr 0 vào khi th c hi n phép tính.
Padding = 1
Nh v y ta đã gi i quy t đ c v n đ tìm A cho ph n t x11, và ma tr n Y kích th c 5x6 thu đ c s b ng kích th c ma tr n X ban đ u.
Hình 2. 13: Mô t thu t toán padding
LU N V N TH C S
23
Hình 2. 14: Mô t thu t toán t ng kích th c ma tr n
Stride
Stride = k (k > 1) thì ta ch th c hi n phép tính convolution trên các ph n t x1+i k;1+j k
Tr ng h p trên: stride = 1(b c nh y), padding = 1
LU N V N TH C S
24 Tr ng h p trên: stride = 2 (b c nh y), padding = 1 nh sau:
Hình 2. 16: Mô t thu t toán v i giá tr Stride =2, padding =1
Convolution
M i kernel khác nhau s có ý ngh a khác nhau ph thu c vào các giá tr trong kernel mà ta có th trích xu t đ c đ c tr ng c a nh, tìm c nh, làm m … Gi nguyên nh:
LU N V N TH C S
25 Kernel phát hi n c nh:
Hình 2. 18: nh sau khi x lý thu t toán kernel
Làm m - tính giá trung bình c a m t vùng:
Hình 2. 19: nh đã dùng thu t toán làm m
Tùy vào m c đích thì giá tr c a kernel s khác nhau.
e. M ng th n kinh tích ch p (Convolutional neural network) [9]
Convolutional layer
Fully connected neural network (FCN) là mô hình m i node trong hidden layer đ c k t n i v i t t c các node trong layer tr c.
LU N V N TH C S
26 Gi s nh đ u vào có kích th c 16x16x3 (RGB), đ bi u th h t n i dung c a b c nh thì c n truy n vào input layer t t c các pixel (16x16x3 = 768). T c là input layer có 768 (nodes) đ u vào.
nh màu có t i 3 channels red, green, blue nên khi bi u di n nh d i d ng tensor 3 chi u (tensor ch d li u có li u l n h n 2). Nên ta c ng s đ nh ngh a kernel là 1 tensor 3 chi u kích th c k*k*3.
Hình 2. 20: Mô t tensor 3 chi u kích th c
Ta đ nh ngh a kernel có cùng đ sâu (depth) v i bi u di n nh, r i sau đó th c hi n di chuy n kh i kernel t ng t nh khi th c hi n trên nh xám. Convolutional layer t ng quát
Gi s input c a 1 convolutional layer t ng quát là tensor kích th c H * W * D.
Kernel có kích th c F * F * D (kernel luôn có depth b ng depth c a input và F là s l ), stride: S, padding: P.
Convolutional layer áp d ng K kernel.
LU N V N TH C S
27 Output c a convolutional layer s qua hàm activation function (non-linear:
phi tuy n) tr c khi tr thành input c a convolutional layer ti p theo
T ng s parameter c a layer: M i kernel có kích th c F*F*D và có 1 h s bias, nên t ng parameter c a 1 kernel là F*F*D + 1. Mà convolutional layer áp d ng K kernel => T ng s parameter trong layer này là K * (F*F*D + 1)
Hình 2. 21: Convolutional layer
Pooling layer
Pooling layer th ng đ c dùng gi a các convolutional layer, đ gi m kích th c d li u nh ng v n gi đ c các thu c tính quan tr ng. Vi c gi m kích th c d li u giúp gi m các phép tính toán trong model.
LU N V N TH C S
28 G i pooling size kích th c K*K. Input c a pooling layer có kích th c H*W*D, ta tách ra làm D ma tr n kích th c H*W. V i m i ma tr n, trên vùng kích th c K*K trên ma tr n ta tìm maximum ho c average c a d li u r i vi t vào ma tr n k t qu . Quy t c v stride và padding áp d ng nh phép tính convolution trên nh.
V i pooling size = 2x2, l y giá tr max, Padding = 0, stride = 2.
Khi đó output có width và height c a d li u gi m đi m t n a, depth thì đ c gi nguyên.
Hình 2. 22: Hình nh sau khi pooling size
Hàm activation
Output c a convolutional layer s qua hàm activation function (non-linear: phi tuy n) tr c khi tr thành input c a convolutional layer ti p theo.
LU N V N TH C S
29 Sigmoid activation function
Hàm này tr giá tr trong kho ng (0, 1)
Hình 2. 23: th hàm Sigmoid activation [10]
Tanh activation function
Hàm này tr giá tr trong kho ng (-1, 1)
Hình 2. 24: th hàm Tanh activation [11]
ReLU activation function
Hàm relu (rectified linear unit): y = max(0;x)
Tuy nhiên v i các node có giá tr nh h n 0, qua ReLU activation s thành 0, hi n t ng đ y g i là "Dying ReLU". N u các node b chuy n thành 0 thì
LU N V N TH C S
30 s không có ý ngh a v i b c linear activation l p ti p theo và các h s t ng ng t node đ y c ng không đ c c p nh t v i gradient descent
Hình 2. 25: th hàm Dying ReLU
Leaky ReLU
Hàm Leaky ReLU có các đi m t t c a hàm ReLU và gi i quy t đ c v n đ Dying ReLU b ng cách xét m t đ d c nh cho các giá tr âm thay vì đ giá tr là 0.
Hình 2. 26: th hàm Leaky ReLU [12]
f. Gi i thi u v YOLO [13]
Yêu c u c a bài toán là phát hi n và phân lo i đ i t ng v i th i gian th c (realtime) trên các thi t b y u và trung bình.
LU N V N TH C S
31 Object Detection là m t bài toán quan tr ng trong l nh v c Computer Vision, thu t toán Object Detection đ c chia thành 2 nhóm chính:
H các mô hình RCNN (Region-Based Convolutional Neural Networks) đ gi i quy t các bài toán v đ nh v và nh n di n v t th .
H các mô hình v YOLO (You Only Look Once) dùng đ nh n d ng đ i t ng đ c thi t k đ nh n di n các v t th real-time.
Yolo là m t mô hình m ng th n kinh tích ch p (CNN) cho vi c phát hi n, nh n d ng, phân lo i đ i t ng. Yolo đ c t o ra t vi c k t h p gi a các convolutional layers và connected layers. Trong đóp các convolutional layers s trích xu t ra các feature c a nh, còn full-connected layers s d đoán ra xác su t đó và t a đ c a đ i t ng.
X lý d li u
T o bounding box bao quanh đ i t ng và l u d li u d i d ng text và thông tin m i object đ c l u vào m t dòng và đ c chu n hóa v [0, 1] so v i tâm c a bounding box d i d ng: <object-class> <xcenter> <ycenter> <width> <height> Trong đó: <object-class> là s th t c a class xu t phát t 0 đ n (s _class-1)
<xcenter> = , <ycenter> = < width > = , < height > =
V i <xcenter> , <ycenter> là tâm c a bounding box và n m trong kho ng [0, 1]. < width >,< height > là chi u r ng, chi u cao bounding box và n m trong kho ng [0, 1].
LU N V N TH C S
32
Hình 2. 27: T o bounding quanh đ i t ng
Hình 2. 28: Kích th c bounding đ i t ng
LU N V N TH C S
33 Khi d li u đ c chu n hóa v d ng này thì bounding box s không thay đ i
khi nh b resize đ đ a vào mô hình tính toán. Cách th c ho t đ ng c a YOLO
u vào c a mô hình là m t nh, mô hình s nh n d ng nh đó có đ i t ng nào hay không, sau đó s xác đ nh t a đ c a đ i t ng trong b c nh. nh đ u vào đ c chia thành thành S×S ô vuông th ng thì s là 3×3, 7×7, 9×9... vi c chia ô này có nh h ng t i vi c mô hình phát hi n đ i t ng. Kích th c c a nh đ u vào ph i là b i s c a grid size.
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 đó. L u ý, cho dù ph n nh c a object 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 object. Ngoài ra, n u có nhi u tâm n m trong m t ô vuông thì chúng 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.
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 đó.
LU N V N TH C S
34 V i Input là 1 nh, đ u ra mô hình là m t ma tr n 3 chi u có kích th c:
SxSx(5* N+ M). Trong đó:
SxS là s ô vuông chia nh đ u vào.
5*N là d đoán m i bounding box g m 5 thành ph n : (x, y, w, h, prediction) v i (x, y ) là t a đ tâm c a bounding box, (w, h) l n l t là chi u r ng và chi u cao c a bounding box.
M là s class.
Prediction đ c đ nh ngh a truth)Pr(Object) IOU(pred,truth), (x, y, w, h) đã đ c chu n hóa trong kho ng [0, 1].
Mô hình và ki n trúc m ng th n kinh tích ch p (CNN) c b n Name Filters Output Dimension Conv 1 7 x 7 x 64, stride=2 224 x 224 x 64 Max Pool 1 2 x 2, stride=2 112 x 112 x 64
Conv 2 3 x 3 x 192 112 x 112 x 192
Max Pool 2 2 x 2, stride=2 56 x 56 x 192
Conv 3 1 x 1 x 128 56 x 56 x 128
Conv 4 3 x 3 x 256 56 x 56 x 256
Conv 5 1 x 1 x 256 56 x 56 x 256
Conv 6 1 x 1 x 512 56 x 56 x 512
Max Pool 3 2 x 2, stride=2 28 x 28 x 512
Conv 7 1 x 1 x 256 28 x 28 x 256 Conv 8 3 x 3 x 512 28 x 28 x 512 Conv 9 1 x 1 x 256 28 x 28 x 256 Conv 10 3 x 3 x 512 28 x 28 x 512 Conv 11 1 x 1 x 256 28 x 28 x 256 Conv 12 3 x 3 x 512 28 x 28 x 512
LU N V N TH C S
35 Name Filters Output Dimension
Conv 13 1 x 1 x 256 28x 28 x 256
Conv 14 3 x 3 x 512 28 x 28 x 512
Conv 15 1 x 1 x 512 28 x 28 x 512
Conv 16 3 x 3 x 1024 28 x 28 x 1024
Max Pool 4 2 x 2, stride=2 14 x 14 x 1024
Conv 17 1 x 1 x 512 14 x 14 x 512 Conv 18 3 x 3 x 1024 14 x 14 x 1024 Conv 19 1 x 1 x 512 14 x 14 x 512 Conv 20 3 x 3 x 1024 14 x 14 x 1024 Conv 21 3 x 3 x 1024 14 x 14 x 1024 Conv 22 3 x 3 x 1024, stride=2 7 x 7 x 1024 Conv 23 3 x 3 x 1024 7 x 7 x 1024 Conv 27 3 x 3 x 1024 7 x 7 x 1024 FC 1 - 4096 FC 2 - 7 x 7 x 30 (1470) Hình 2. 30: Minh h a phát hi n v t th b ng ph ng pháp YOLO [13]
LU N V N TH C S
36
Hình 2. 31: Ki n trúc CNN trong x lý nh
Hàm tính IOU
Nh đã đ c p trên, prediction đ c đ nh ngh a b ng Pr(Object) IOU(pred,truth). IOU (INTERSECTION OVER UNION) là hàm đánh giá đ chính xác c a object detector trên t p d li u c th . IOU đ c tính b ng:
Trong đó Area of Overlap là di n tích ph n giao nhau gi a predicted bounding box v i grouth-truth bouding box, còn Area of Union là di n tích ph n h p gi a predicted bounding box v i grouth-truth bounding box. Nh ng bounding box đ c đánh nhãn b ng tay trong t p traing set và test set. N u IOU > 0.5 thì prediction đ c đánh giá là t t.
LU N V N TH C S
37 Hàm l i trong YOLO
Hàm l i trong YOLO đ c tính trên vi c d đoán và nhãn mô hình đ tính. C th h n nó là t ng đ l i c a 3 thành ph n 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 a đ tâm, chi u dài, r ng c a boundary box (x, y ,w, h) - Localization loss
l i c a vi c d đoán bounding box đó ch a object so v i nhãn th c t t i ô vuông đó - Confidence los
l i (Classifycation loss)
Classifycation loss - đ l i c a vi c d đoán lo i nhãn c a object, hàm l i này ch tính trên nh ng ô vuông có xu t hi n object, còn nh ng ô vuông khác ta không quan tâm. Classifycation loss đ c tính b ng công th c sau:
Trong đó:
: B ng 1 n u ô vuông đang xét có objectL ng c l i b ng 0.
Pi(c): Là xác su t có đi u c a l p c t i ô vuông t ng ng mà mô hình d đoán. V trí l i (Localization loss)
Localization loss là hàm l i dùng đ tính giá tr l i cho boundary box đ c d đoán bao g m t a đ tâm, chi u r ng, chi u cao c a so v i v trí th c t t d li u hu n luy n c a mô hình.
LU N V N TH C S
38 Giá tr hàm Localization loss đ c tính trên t ng giá tr l i d đoán to đ tâm (x, y) và (w, h) c a predicted bounding box v i grouth-truth bounding box. T i m i ô có ch a object, 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.
Giá tr hàm l i d đoán t a đ tâm (x, y) c a predicted bounding box và (x, ) là t a đ tâm c a truth bounding box đ c tính nh sau:
Giá tr hàm l i d đoán (w, h) c a predicted bounding box so v i truth bounding box đ c tính nh sau:
l i d đoán (Confidence loss)
Confidence loss là đ 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 trên c nh ng ô vuông ch a object và không ch a object.
T ng l i (Total loss): Ltotal = L classifycation + L localization + L confidence
2.2 NGÔN NG L P TRÌNH PYTHON
2.2.1 Các khái ni m c b n và cài đ t Python
LU N V N TH C S
39 Python là m t ngôn ng l p trình b c cao cho các m c đích l p trình đa n ng, do Guido Van Rossum t o ra và l n đ u ra m t vào n m 1991. Python đ c thi t k v i u đi m m nh là d đ c, d h c và d nh .
Python là ngôn ng có hình th c r t sáng s a, c u trúc rõ ràng, thu n ti n cho ng i m i h c l p trình và là ngôn ng l p trình d h c; đ c dùng r ng rãi trong phát tri n trí tu nhân t o. C u trúc c a Python còn cho phép ng i s d ng vi t mã l nh v i s l n gõ phím t i thi u.
Ban đ u, Python đ c phát tri n đ ch y trên n n Unix. Theo th i gian, Python d n m r ng sang m i h đi u hành t MS-DOS đ n Mac OS, OS/2, Windows, Linux và các h đi u hành khác thu c h Unix. M c dù s phát tri n c a Python có s đóng góp c a r t nhi u cá nhân, nh ng Guido van Rossum