TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA ĐIỆN ĐIỆN TỬ BỘ MÔN KĨ THUẬT MÁY TÍNH – VIẾN THÔNG BÁO CÁO MÁY HỌC Đề tài Nhận diện biển báo giao thông GVHD Trần Vũ Hoàng SVTH Nguyễn Văn Tài 17119100 Nguyễn Văn Sỹ 17119099 TP HCM 112020 MỤC LỤC CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 1 1 GIỚI THIỆU TỔNG QUAN 1 1 1 LÝ DO CHỌN ĐỀ TÀI 1 1 2 MỤC TIÊU ĐỀ TÀI 2 CHƯƠNG 2 CÁC NỘI DUNG THỰC HIỆN 3 2 GIỚI THIỆU CÁC NỘI DUNG THỰC HIỆN 3 2 1 THÁCH THỨC VẤN ĐỀ GẶP PHẢI 3 2 2 CÁC PHƯƠNG PHÁP GIẢI QUYẾT, SO SÁNH VÀ LỰA CHỌ.
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
KHOA ĐIỆN - ĐIỆN TỬ
BỘ MÔN KĨ THUẬT MÁY TÍNH – VIẾN THÔNG
-
BÁO CÁO MÁY HỌC
Đề tài:
Nhận diện biển báo giao thông
GVHD: Trần Vũ Hoàng SVTH:
Nguyễn Văn Tài 17119100 Nguyễn Văn Sỹ 17119099
TP.HCM 11/2020
Trang 2MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 1
1 GIỚI THIỆU TỔNG QUAN 1
1.1 LÝ DO CHỌN ĐỀ TÀI 1
1.2 MỤC TIÊU ĐỀ TÀI 2
CHƯƠNG 2 CÁC NỘI DUNG THỰC HIỆN 3
2 GIỚI THIỆU CÁC NỘI DUNG THỰC HIỆN 3
2.1 THÁCH THỨC VẤN ĐỀ GẶP PHẢI 3
2.2 CÁC PHƯƠNG PHÁP GIẢI QUYẾT, SO SÁNH VÀ LỰA CHỌN 3
2.2.1 CÁC PHƯƠNG PHÁP GIẢI QUYẾT 3
2.2.1.1 FASTER R-CNN 3
2.2.1.2 SSD 6
2.2.1.3 R-FCN 9
2.2.2 SO SÁNH GIỮA CÁC PHƯƠNG PHÁP 10
2.3 CÁC DATASETS SẼ ĐƯỢC SỬ DỤNG 14
2.4 CÁC PHƯƠNG ĐÁNH GIÁ 16
2.4.1 CROSS VALIDATION 17
2.4.2 BIAS & VARIANCE 18
2.4.3 PRECISION & RECALL 20
Trang 3Phân công công việc
Tìm hiểu, đưa ra mục tiêu và lý
Trang 4CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN
1 Giới thiệu tổng quan
- Năm nay, theo công bố của Ủy ban An toàn giao thông quốc gia, trong ngày nghỉ lễ Quốc khánh 2-9, toàn quốc xảy ra 29 vụ tai nạn giao thông, làm chết 16 người, bị thương 23 người Một ngày nghỉ lễ vui vẻ của mọi người dân Việt Nam nhưng lại là ngày buồn của 16 người, hoặc cũng có thể nói là ngày buồn của 16 gia đình ở đâu
đó trên đất nước này
- Tai nạn giao thông xảy ra do nhiều nguyên nhân khách quan và chủ quan như: do ý thức tham gia giao thông; do sử dụng rượu bịa, chất kích thích; do không tuân thủ quy tắc giao thông; thiếu kiến thức cũng như kỹ năng tham gia giao thông;
- Để góp phần giải quyết vấn đề tai nạn giao thông các nước trên thế giới đã dần phát triển xe tự hành, với khả năng di chuyển ổn định và tuân theo quy tắc chung sẽ mang lại an toàn cho người sự dụng, đồng thời không yêu cầu kỹ năng quá cao đối với người lái Và để phát triển xe tự hành, cần giải quyết được các vấn đề như:
+ Vấn đề điều khiển: tốc độ, hướng rẽ, quy tắc di chuyển,
+ Vấn đề năng lượng: tiết kiệm năng lượng, không gây ô nhiễm môi trường, + Vấn đề nhận biết: nhận biết các biển báo giao thông, nhận biết mức độ nguy hiểm của đường, nhận biết mật độ giao thông,
- Với nhiều vấn đề nêu trên nhóm chọn giải quyết một vấn đề nhỏ đó là: nhận diện biển báo giao thông Tuy vấn đề không quá lớn lao nhưng rất phù hợp với môn học cũng như năng lực của các thành viên trong nhóm
1.1 Lý do chọn đề tài
- Có rất nhiều người tham gia giao thông nhưng không nhớ rõ chức năng của từng biển báo giao thông, nhưng mỗi biển báo giao thông đều rất quan trọng, nó thể hiện quy tắc di chuyển hoặc một cảnh báo nào đó cho một đoạn đường mà nó được dựng lên Từ đó thấy được việc nhận biết được biển báo sẽ giúp cho người tham gia giao thông tuân thủ đúng quy tắc di chuyển, tránh được những sự cố đáng tiếc có thể xảy
ra
Trang 5- Lượng dữ liệu dùng để traning có thể được lấy trong thực tế bằng cách thu thập hoặc dùng các bộ dataset có sẵn do những người nghiên cứu cùng đề tài trước đây đã thu thập
- Từ vấn đề nhận diện biển báo sẽ có nhiều hường phát triển như đưa ra cảnh báo cho tài xế tài, hoặc thậm chí là đưa ra quyết định thay thế người lái, tiến thêm một bước đến việc phát triển xe tự hành
Trang 6CHƯƠNG 2 CÁC NỘI DUNG THỰC HIỆN
2 Giới thiệu các nội dung thực hiện
+ Như vậy cần xác định rõ đây là bài toàn phân loại kết hợp xác định ví trí của biển báo, từ đó mới đưa ra chuẩn đoán, chứ không phải bài toán đơn thuần là phân loại và nhận diện đơn giống như thường gặp
- Thách thức kế tiếp:
+ Nếu tiến hành mô phỏng nhận diên bằng webcam thì không gặp phải vấn
đề ảnh bị nhòe, nhưng trên thực tế, mô hình di chuyển và camera sẽ ghi hình rất nhòe
+ Như vậy dù data dùng training đã bao gồm các trường hợp rất xấu nhưng với dữ liệu input quá tệ sẽ hoàn toàn không thể nào xử lý được
2.2 Các phương pháp giải quyết, so sánh và lựa chọn
2.2.1 Các phương pháp giải quyết
2.2.1.1 Faster R-CNN
Trang 7- Faster R-CNN là mô hình tốt nhất của họ nhà R-CNN, được công bố đầu tiên vào năm 2015 Phiên bản đầu tiên của Faster R-CNN là R-CNN, với nguyên lí đơn giản
- Trong các bài báo của các mạng họ R-CNN, sự phát triển giữa các phiên bản dựa vào hiệu năng tính toán (tích hợp các giai đoạn đào tạo khác nhau), giảm thời gian thử nghiệm và cải thiện hiệu suất (mAP) Các mạng này thường bao gồm:
+ Một thuật toán để tìm ra các "bouding box" hoặc các vị trí của đối tượng có thể có trong ảnh
+ Giai đoạn lấy ra các đặc trưng của đối tượng này, thường sử dụng mạng CNN
+ Một lớp phân loại để dự đoán lớp này thuộc đối tường nào
+ Một lớp hồi quy để làm các tọa độ của "bouding box" giới hạn đối tượng chính xác hơn
Hình 1 Model Faster R-CNN
Trang 8- Faster R-CNN kết hợp 2 modules Module thứ 1 là sử dụng DNN để đề xuất ra các vùng và module thứ 2 là mô hình Fast R-CNN sử dụng các vùng được đề xuất ra.
- Region proposal network (RPN):
+ RPN là sự cải tiến chính làm cho mạng Faster R-CNN trở nên tốt nhất trong
họ nhà R-CNN, RPN giải quyết các vấn đề bằng cách huấn luyện mạng neural network để đảm nhận thay vai trò của các thuật toán như selective search vốn rất chậm chạp
+ Một Region Proposal Network nhận đầu vào là ảnh với kích thước bất kì và cho đầu ra là region proposal (tập vị trí của các hình chữ nhật có thể chứa vật thể), cùng với xác suất chứa vật thể của hình chữ nhật tương ứng
Hình 2 RPN network model
- RPN có 2 bươc chính;
Trang 9+ Sử dụng cửa sổ trượt lên convolutional features:
Để tạo ra region proposals, chúng ta sử dụng một cửa sổ trượt còn gọi là sliding window Đầu ra của layer này là đầu vào của 2 fully-connected layer
dự đoán vị trí của regions (box-regression layer), cũng như xác suất chứa object(box-classification) của hộp ấy
Hình 3 Convolutional feature
proposal cùng một lúc, với k là số proposal tương ứng với mỗi vị trí Vậy reg layer
có 4k đầu ra dự đoán vị trí của k proposal, cls layer chứa 2k đầu ra dự đoán xác suất chứa vật thể hoặc không chứa vật thể của mỗi proposal k proposals được tham
chiếu hóa tới k boxes, còn được gọi là anchor.
+ Từ đây ta xác định được tiêu đầu ra của regression layer và
Trang 10- Sau R-CNN, một vài mô hình mạng khác cũng được phát triển (Fast-R-CNN,
Faster-R-CNN) dựa trên nó với mục đích chính là cải thiện thời gian huấn luyện và
độ chính xác của mô hình với mong muốn áp dụng được với những bài toán chạy với thời gian thực Tuy nhiên chúng vẫn tồn tại một số hạn chế:
+ Việc huấn luyện mô hình vẫn quá cồng kềnh và tiêu tốn nhiều thời gian + Quá trình huấn luyện xảy ra trên nhiều phase
+ Mô hình mạng làm việc chậm so với thời gian thực
- May mắn thay, trong những năm trở lại đây, những kiến trúc mạng mới được phát triển để giải quyết những vấn đề tồn tại trong R-CNN, khiến việc giải quyết bài toán Object Detection có thể thực hiện được trong thời gian thực
-
Hình 4 Ssd Architecture
Lí do mà VGG-16 được sử dụng như tầng cơ sở là vì sự hiệu quả của nó trong bài toán phân loại ảnh với các ảnh có độ phân giải cao Thay vì sử dụng tầng fully-connected của VGG, một tập các tầng convolution phụ trợ được thêm vào, vì vậy ta
có thể trích xuất được các features với nhiều tỉ lệ khác nhau, và giảm gần kích thước của đầu vào trong từng tầng mạng
Các layer của mô hình SSD:
- Input Layer: Nhận input đầu vào là các bức ảnh
- Conv5_3 Layer: Chính là base network sử dụng kiến trúc của VGG16 nhưng loại
bỏ một số layers fully connected ở cuối cùng Output của layer này chính là Conv4_3 Layer
- Conv4_3 Layer: Ta có thể coi Conv4_3 là một feature map
- Quá trình áp dụng classifier lên feature map cũng tương tự với các layer Conv7, Conv8_2, Conv_9, Conv10_2, Conv11_2 Shape của các layer sau sẽ phụ thuộc vào cách thức áp dụng tích chập (convolutional process) ở layer trước, kích thước kernel filter (như trong sơ đồ trên thì kernel_size luôn là 3 x 3) và stride (độ lớn bước nhảy) của tích chập Trên mỗi cell thuộc feature map ta xác định một lượng 4 hoặc 6 các default bounding boxes Do đó, số lượng các default boxes sản sinh ra ở các layers tiếp theo lần lượt như sau:
- Conv7: 19×19×6 = 2166 boxes (6 boxes/cell)
Trang 11- Conv8_2: 10×10×6 = 600 boxes (6 boxes/cell)
- Conv9_2: 5×5×6 = 150 boxes (6 boxes/cell)
- Conv10_2: 3×3×4 = 36 boxes (4 boxes/cell)
- Conv11_2: 1×1×4 = 4 boxes (4 boxes/cell) Tổng số lượng các boxes ở output sẽ
là: 5776+2166+600+150+36+4=8732 Tức là chúng ta cần phải dự đoán class cho khoảng 8732 khung hình ở output Số lượng này lớn hơn rất nhiều so với YOLO khi chỉ phải dự đoán chỉ 98 khung hình ở output Đó là lý do tại sao thuật toán có tốc độ chậm hơn so với YOLO
- scale: Tỷ lệ chiều dài và chiều rộng so với khung hình gốc VD: Nếu khung hình
gốc có giá trị là (w, h) thì sau scale khung hình mới có kích thước là (sw, sh) Gía trị của s thường nằm trong khoảng s∈(0,1] Scale sẽ kết hợp với aspect ratio để nhận được các khung hình có tỷ lệ cạnh w/h khác nhau
- aspect ratio: Tỷ lệ cạnh, được đo bằng tỷ lệ giữa w/h nhằm xác định hình dạng
tương đối của khung hình bao chứa vật thể Chẳng hạn nếu vật thể là người thường
có aspect ratio = 1:3 hoặc xe cộ nhìn từ phía trước là 1:1
- bounding box: Khung hình bao chứa vật thể được xác định trong quá trình huấn
luyện
- ground truth box: Khung hình được xác định trước từ bộ dữ liệu thông qua tọa
độ (cx,cy,w,h) giúp xác định vật thể
- offsets: Các tọa độ (cx,cy,w,h) để xác định vật thể
- IoU: Tỷ lệ Intersection of Union là tỷ lệ đo lường mức độ giao nhau giữa 2 khung
hình (thường là khung hình dự báo và khung hình ground truth) để nhằm xác định 2 khung hình overlap không Tỷ lệ này được tính dựa trên phần diện tích giao nhau gữa 2 khung hình với phần tổng diện tích giao nhau và không giao nhau giữa chúng
- positive matching prediction: Khung được dự báo (predicted box) là vùng có vật
thể là đúng, được xác định dựa trên tỷ lệ IoU > 0.5 giữa predicted box với ground truth box
- negative matching prediction: Khung được dự báo (predicted box) là vùng không
chứa vật thể là đúng, cũng được xác định dựa trên IoU < 0.5 giữa predicted box với ground truth box
- SSD chỉ cần duy nhất đầu vào là 1 bức ảnh và các ground truth boxes ám chỉ vị trí bounding box các vật thể trong suốt quá trình huấn luyện Trong quá trình phát hiện vật thể, trên mỗi một feature map, chúng ta đánh giá các một tợp hợp nhỏ gồm những default boxes tương ứng với các tỷ lệ cạnh khác nhau (aspect ratio) lên các features map có kích thước (scales) khác nhau (chẳng hạn kích thước 8x8 và 4x4) Đối với mỗi default box (các boxes nét đứt trong hình) ta cần dự báo một phân phối xác suất c=(c1,c2,…,cn) tương ứng với các class C=C1,C2,…,Cn Tại thời điểm huấn luyện, đầu tiên chúng ta cần match default boxes với ground truth boxes sao cho mức độ sai số được đo lường qua localization loss là nhỏ nhất Sau đó ta sẽ tìm cách tối thiểu hóa sai số của nhãn dự báo tương ứng với mỗi vật thể được phát hiện trong default boxes thông qua confidence loss
Trang 122.2.1.3 R-FCN
Hình 5 R-FCN architecture
- Đối với các phương pháp tiếp cận mạng đề xuất vùng truyền thống (RPN) như CNN, Fast R-CNN và Faster R-CNN, các đề xuất vùng được tạo bởi RPN trước tiên Sau đó, tổng hợp ROI được thực hiện và đi qua các lớp được kết nối đầy đủ (FC) để phân loại và hồi quy hộp giới hạn
R-Quá trình (các lớp FC) sau khi tổng hợp ROI không chia sẻ giữa ROI và mất thời gian, điều này làm cho việc tiếp cận RPN chậm lại Và các lớp FC tăng số lượng kết nối (tham số) cũng làm tăng độ phức tạp
- Region-based Fully Convolutional Networks or R-FCN là một máy dò dựa trên vùng
để phát hiện đối tượng Không giống như các bộ dò theo vùng khác áp dụng mạng con theo từng vùng tốn kém như Fast R-CNN hoặc Faster R-CNN, bộ dò dựa trên vùng này hoàn toàn phức hợp với hầu hết các phép tính được chia sẻ trên toàn bộ hình ảnh
- Trong R-FCN, chúng tôi vẫn có RPN để nhận các đề xuất khu vực, nhưng không giống như chuỗi R-CNN, các lớp FC sau khi tổng hợp ROI bị loại bỏ Thay vào đó, tất cả độ phức tạp chính được chuyển đi trước khi tổng hợp ROI để tạo bản đồ điểm Tất cả các đề xuất khu vực, sau khi tổng hợp ROI, sẽ sử dụng cùng một bộ bản đồ điểm để thực hiện bỏ phiếu trung bình, đây là một phép tính đơn giản Do đó, Không
có lớp nào có thể học được sau lớp ROI gần như không tốn phí Kết quả là R-FCN thậm chí còn nhanh hơn Faster R-CNN với mAP cạnh tranh
- Positive-sensitive score map: lớp C cần được phát hiện (C + 1) có nghĩa là C số lớp đối tượng cộng với lớp nền Sau nhiều lần chập ở đầu ngay trước khi ánh xạ điểm
Trang 13nhạy cảm dương, chúng tôi thực hiện tích chập k² (C + 1) -d Đối với mỗi lớp, sẽ có các feature maps k² Feature maps k² này đại diện cho {trên cùng bên trái (TL), trên cùng giữa (TC), , dưới cùng bên phải (BR)} của đối tượng mà chúng tôi muốn phát hiện
- Positive-sensitive ROI pooling: Khi tổng hợp ROI, (C + 1) các bản feature maps k² được tạo ra, tức là k² (C + 1) Việc gộp chung được thực hiện theo nghĩa là chúng được gộp lại với cùng một diện tích và cùng màu trong hình Biểu quyết trung bình được thực hiện để tạo (C + 1) 1d-vector Và cuối cùng softmax được thực hiện trên vector
- Bounding box regression: Tại lớp chập k² (C + 1) -d, một lớp chập 4k²-d được thêm vào position-sensitive RoI pooling được thực hiện trên bank 4k² của map này, tạo
ra vectơ 4k²-d cho mỗi RoI Sau đó, nó được tổng hợp thành một vectơ 4-d theo bình chọn trung bình, đại diện cho {tx, ty, tw, th} (vị trí và kích thước) của hộp giới hạn, giống như trong Fast R-CNN
2.2.2 So sánh giữa các phương pháp
- Dataset size:
Trang 14- Small object:
Trang 15- Memory:
Trang 16- Resolution:
- Kết quả nhận diện các model:
Trang 17R-khăn khi gặp phải đó là:
+ Việc phân loại được biển báo giao thông khi có nhiều biển báo cùng
nằm 1 chỗ
+ Về chất lượng hình ảnh của biển báo có khi không được tốt hoặc bị
mờ và kích thước biển báo có thể không đủ lớn để thấy rõ thì Faster
R-CNN có thể giải quyết được vấn đề này
2.3 Các datasets sẽ được sử dụng
- Vấn đề dữ liệu luôn là vấn đề hàng đầu mà các đề tài gặp phải, tuy nhiên nhóm
đã tìm hiểu và có 3 cách đễ giải quyết như sau:
- Thu thập thực tế:
Mặc dù đây là phương pháp khó khăn nhất nhưng nhóm đã có cách đễ có thể vừa thu thập và phân chia class cho dữ liệu, đó là dùng OpenCV để truy xuất đến camera, sau đó tiến hành chụp ảnh không liên tục và lưu các file ảnh đến một thư mục đã cài đặt sẵn Với OpenCV và dùng các câu lệnh python sẽ có thể chỉnh sửa hoàn toàn tự động các bức ảnh để có thể phụ hợp cho đề tài
Trang 18Hình 6.tiến hành chụp hình
Hình 7 Chương trình được sử dụng
- Tải hình ảnh từ Google: Tải hình ảnh từ Google tuy là phương pháp có được data đơn giản hơn việc thu thập thực tế, nhưng vấn tốn rất nhiều thời gian và công sức Nhóm đã tìm hiểu được một công cụ hỗ trợ tải ảnh từ google rất
Trang 19nhanh và số lượng mỗi lần tải rất lớn là FATKUN Tuy nhiên công cụ hỗ trợ tải lượng lớn ảnh từ Google về nên sẽ có một số ảnh bị sai lệch với mục đính
đề tài, cũng như anh tải về chưa được chỉnh sửa về kích thước hợp
Hình 8 Dataset
- Kế thừa các tập dữ liệu: Chắc chắn đây là phương pháp có được dữ liệu mà rất nhiều người thường dùng, cách này rất nhanh và chính xác Vì dữ liệu đã được dùng cho một số đề tài trước đây, được nhiều tác giả chỉnh sửa để có được kết quả tốt nhất Tuy vậy nhược điểm của phương pháp này lại rất lớn, đó chính
là nếu một đề tài quá mới thì sẽ chẳng có tập dữ liệu nào có sẳn cả, hoặc đối với một đề tài nhận diện người cần biết chính xác tên tuổi và các thông tin thì phương pháp này rõ là không phù hợp
-
2.4 Các phương đánh giá
- Overfitting, Underfitting là gì?