KỸ THUẬT HỌC SÂU
3.1. Xây dựng cơ sở dữ liệu
Thu thập và gia công bộ dữ liệu là bước rất quan trọng khi thực hiện một bài toán ứng dụng trí tuệ nhân tạo. Trong bài tốn phát hiện sử dụng học có giám sát, bộ dữ liệu đơn giản là các ảnh được đánh nhãn nhiều lớp đối tượng, tức là tìm một tập các bức ảnh đã được đánh nhãn thuộc các lớp khác nhau (ví dụ các nhãn như ơ tơ, người, tàu thuyền …). Đa phần các mơ hình học sâu đều được luyện trên những bộ dữ liệu thu sẵn đã được đánh nhãn. Hiện tại rất nhiều cơ sở dữ liệu sẵn có đã được thu thập và cơng bố trên mạng internet. Thực tế, tùy thuộc vào bài toán mà cần thu thập dữ liệu khác nhau và ít khi tương quan với những bộ dữ liệu sẵn có. Trong phát hiện đối tượng trên ảnh, các bộ dữ liệu sẵn có hầu hết đều sử dụng dữ liệu từ các điều kiện tạo ảnh tiêu chuẩn, các điều kiện tạo ảnh đặc thù như ảnh nhiệt hoặc thời tiết phức tạp, phân giải ảnh thấp trong các bộ dữ liệu này rất ít, để thu thập và xây dựng cơ sở dữ liệu đảm bảo yêu cầu đặt ra là một khối lượng cơng việc khá lớn.
Các mơ hình học sâu khơng thể hoạt động nếu thiếu dữ liệu, trường hợp bộ dữ liệu quá nhỏ thì hiện tượng phổ biến là dễ dẫn đến sự quá khớp (overfitting) là hiện tượng khi model không thể học được đầy đủ các thuộc tính cho các trường hợp tổng quan hay nói khác đi là model thiếu khả năng tổng quan hóa (generalization). Các model bị quá khớp sẽ có biểu hiện là độ chính xác rất cao trên dữ liệu luyện nhưng lại thể hiện rất kém đối với dữ liệu thực tế. Một cách khác là tự tạo dữ liệu trên cơ sở dữ liệu có sẵn, nhưng vấn đề là các ảnh tạo ít nhiều đã được trộn lại từ các pixels sẵn có (tương quan chéo) do đó mơ hình cũng khó thốt khỏi overfitting. Trên thực tế, nhiều phương pháp chuyên dụng khác như weight decay, dropout… cũng được áp dụng, tuy nhiên yếu tố tiên
quyết vẫn là độ tổng quan của dữ liệu luyện và độ tương quan của dữ liệu luyện đối với dữ liệu thực tế.
Vì vậy, để tạo bộ dữ liệu đủ tốt và đánh nhãn cho nó là cơng việc khá quan trọng và mất nhiều cơng sức nhất trong xây dựng mơ hình học sâu. Trong đề tài này nhóm tác giả sẽ đề cập tới một số kỹ thuật và phương pháp được áp dụng trong điều kiện cho phép về mặt tài chính và thời gian thực hiện.
Nhóm nghiên cứu sử dụng dữ liệu thu thập từ các camera ảnh nhiệt được trang bị tại các tàu hải quân và nhà giàn trên biển, đánh nhãn thủ cơng và chuẩn hóa dữ liệu dưới dạng COCO dataset.
Hình 3. 1: Một số hình ảnh mục tiêu được thu thập trong bộ dữ liệu từ các
tàu hải
Quá trình thu thập và đánh nhãn được thực hiện thủ cơng bằng phần mềm LabelImg. Kết quả nhóm nghiên cứu đã có được một bộ dữ liệu các ảnh tầm xa bao gồm cả ảnh nhiệt và ảnh màu của các phương tiện trên biển Việt Nam khoảng hơn 2000 ảnh và hơn 3000 mẫu, sau đó phân tách ngẫu nhiên thành các mẫu để luyện và các mẫu để kiểm tra với tỷ lệ 80/20.
Kích thước của bộ dữ liệu cịn khá nhỏ so với các bộ dữ liệu mở trên internet. Tuy nhiên, đối với bài toán phát hiện một lớp đối tượng, lượng dữ liệu này là rất đáng kể, đảm bảo được tính bao qt và hồn tồn có thể sử dụng
trong mục đích luyện và thử nghiệm các mơ hình phát hiện. Trong tương lai, nhóm nghiên cứu sẽ hướng đến áp dụng các phương pháp data augmentation và data generation để tăng thêm số lượng của bộ dữ liệu.
3.2. Đánh giá và lựa chọn mơ hình cho bài tốn phát hiện mục tiêu
3.2.1. Đánh giá các mơ hình phát hiện mục tiêu
Đánh giá các mơ hình phát hiện
Rất nhiều tiến bộ đã đạt được trong những năm gần đây trong việc phát hiện đối tượng do việc sử dụng mạng nơ-ron tích chập (CNN). Các mơ hình phát hiện đối tượng hiện đại dựa trên các mạng này - chẳng hạn như Faster R-CNN [15], R-FCN [16], Multibox [18], SSD [17] và YOLO [19] - hiện đã đủ tốt để triển khai trong các sản phẩm thương mại (ví dụ: Google Photos, Pinterest Visual Search) và một số đã được chứng minh là đủ nhanh để chạy trên thiết bị di động.
Tuy nhiên, mọi người khó có thể quyết định kiến trúc nào phù hợp nhất với ứng dụng của họ. Các chỉ số về độ chính xác tiêu chuẩn, chẳng hạn như độ chính xác trung bình trung bình (mAP), khơng nói lên tồn bộ câu chuyện, vì đối với việc triển khai thực tế của hệ thống thị giác máy tính, thời gian chạy và sử dụng bộ nhớ cũng rất quan trọng.
Ví dụ: thiết bị di động thường yêu cầu bộ nhớ nhỏ và ô tô tự lái yêu cầu hiệu suất thời gian thực. Các hệ thống sản xuất phía máy chủ, giống như các hệ thống được sử dụng trong Google, Facebook hoặc Snapchat, có nhiều thời gian hơn để tối ưu hóa độ chính xác, nhưng vẫn phải chịu các hạn chế về thơng lượng.
Sơ bộ về các mơ hình nhận diện đối tượng hiện nay:
Mơ hình CNN: Để tìm giải pháp cho OD trên một bức ảnh thì suy nghĩ rất
tự nhiên là ta sẽ sử dụng một cái kéo và một mạng CNN. Cách thực hiện vô cùng đơn giản là cắt riêng các vùng ảnh sau đó đưa từng vùng ảnh đó vào mạng
CNN để xem trong vùng đó có cái giống gì. Nếu phát hiện vật thể trong vùng ảnh nào đó thì lưu lại vị trí đã cắt để làm bounding box. Các làm đơn giản này gặp khá nhiều khó khăn bởi các vật thể có kích thước khác nhau giữa các ảnh, góc quay, hướng quay khác nhau giữa các ảnh nên số lượng vùng ảnh phải rất lớn và “cực phong phú đa dạng” về kích thước, tỷ lệ thì mới có thể phát hiện được hết các vật thể trong ảnh. Điều này làm cho thuật toán chạy chậm và tốn nhiều tài ngun tính tốn.
Mơ hình R-CNN [23]: Đến năm 22/10/2014, các tác giả Ross Girshick,
Jeff Donahue, Trevor Darrell, Jitendra Malik đã tìm ra cách cải tiến mơ hình CNN. Đó là thay vì chọn tất cả các vùng ảnh sau đó vùng nào cũng áp CNN làm chậm tốc độ tính tốn thì các tác giả áp dụng thuật tốn Selective Search để chọn ra 2000 vùng ảnh từ những vùng ảnh được sinh ra ban đầu. Sau đó mới áp dụng CNN vào 2000 vùng ảnh đó. Tuy nhiên thuật tốn cịn nhiều nhược điểm cần cải tiến như:
+ Số lượng vùng ảnh vẫn lớn và vẫn chọn một cách ngẫu nhiên, thủ cơng mỹ nghệ và do đó nhiều vùng ảnh chả có cái gì cũng mất cơng đưa vào CNN để predict.
+ Do các điểm trên nên tốc độ predict khá chậm, tốn đến 47s/ ảnh (vào thởi điểm tác giả thử nghiệm).
Hình 3. 2: Mơ hình R-CNN
Input: là vùng ảnh được trích ra trên ảnh gốc.
Output: Thơng qua trích đặc trưng và predict sẽ cho ra được class của vùng ảnh cũng như 4 giá trị offset để điều chỉnh bounding box quanh vật thể trong
vùng ảnh.Ví dụ có một vùng ảnh nhận là chó, nhưng khơng phải cả vùng ảnh đó là con chó mà chỉ có nửa người con chó thơi thì bounding box khơng thể là cả vùng ảnh đó được, ta dùng offset để chỉnh cho bounding box vào đúng phần thân con chó.
Mơ hình Fast R-CNN [24]: Tác giả mơ hình object detection R-CNN đã
tự nâng cấp thành Fast R-CNN trong một nghiên cứu tiếp theo với mong muốn tăng tốc độ predict bằng cách giảm chi phí tính tốn cho máy tính. Cơ bản về cách làm cũng giống với R-CNN nhưng cải tiến quan trọng nhất giúp tăng tốc độ tính tốn là thay vì input 2000 vùng ảnh trực tiếp vào trong mạng CNN thì các tác giả đã thực hiện đưa cả ảnh vào mạng CNN 1 lần duy nhất. Sau khi đưa vào CNN thì ta sẽ có Feature Map với kích thước nhỏ hơn ảnh gốc rất nhiều. Và bây giờ ta sử dụng một ROI Pooling layer để đưa các vùng ảnh về kích thước vng và reshape về cùng một kích thước đầu ra. Với kết quả có được, ta lại đưa tiếp qua các lớp FCs và có được một output gọi là ROI feature vector. Khi đã có được ROI feature vector, ta lại predict class và offset của bounding box cho vùng mảnh đó để lấy kết quả đầu ra như đã làm với R-CNN. Như vậy, nhìn lại một chút thì Fast R-CNN nhanh hơn R-CNN ở chỗ thay vì mất 2000 lần đưa các vùng ảnh vào CNN thì chỉ cần 1 lần đưa ảnh gốc vào CNN. Tuy nhiên, việc lựa chọn các vùng ảnh bằng seletive search trên Feature Maps vẫn là nút thắt và làm chậm cho thuật toán.
Hình 3. 3: Mơ hình Fast R-CNN
Mơ hình Faster R-CNN: Shaoqing Ren đã cho ra đời thuật toán Faster
R-CNN để xử lý nút thắt nói trên. Về cơ bản mơ hình này tập trung xử lý thuật tốn Selective Search để tăng tốc độ tính tốn. Họ đã cải tiến bằng cách thay sử dụng thuật tốn Selective Search thì build một mạng cho mơ hình học đâu là vùng ảnh nên chọn để tìm kiếm object.
Cụ thể họ làm như thế nào? Họ cũng áp dụng giống Fast R-CNN đó là đưa ảnh vào CNN để lấy feature map (FM) với kích thước nhỏ hơn ảnh gốc rất nhiều. Nhưng cái khác ở đây là sau khi có FM thì thay vì dùng selective search thì họ đưa FM vào một cái mạng riêng gọi là Region Proposal Network (RPN) – mạng tìm kiếm các vùng ảnh. Kết quả là sau khi qua mạng RPN thì ta có các vùng ảnh có khả năng chứa object. Cuối cùng thì đơn giản là ta đưa các vùng ảnh tìm được qua ROI Pooling layer để reshape, rồi sau đó sử dụng một số lớp FCs tiếp theo để predict class, offset của bounding box như các thuật tốn trên.
Mơ hình sẽ tính tốn nhanh hơn vì đã loại bỏ thuật tốn selective search và thay vì phải predict trên các vùng ảnh ngẫu nhiên thì ta chỉ cần xử lý trên các vùng ảnh có khả năng chứa vật cao nhất.
Hình 3. 4: Mơ hình Faster R-CNN
YOLO: Như vậy đến mơ hình Faster R-CNN chúng ta đã đạt được thành
quả khá ổn với việc chỉ xử lý trên các vùng ảnh có khả năng chứa object cao nhất thay vì xử lý tồn ảnh như lúc ban đầu. Tuy nhiên, YOLO còn làm hơn thế nữa. YOLO là You Only Look Once và đúng như vậy, nó khơng xem xét từng vùng mà nhìn tồn bộ bức ảnh một lần sau đó predict ra class, bounding box cho từng object trong hình.
Thay vì xét các vùng ngẫu nhiên thì YOLO chia ảnh thành một lưới vng với kích thước giả sử là NxN chẳng hạn. Sau đó nó duyệt từng ơ trong ảnh, với mỗi ơ thì lại thử m cái anchor box. Với mỗi anchor box đó thì sẽ dự đoán class và offset của bounding box của vật thể. Cuối cùng thì các bounding box có xác suất lớn nhất trên ngưỡng sẽ được giữ lại áp dụng một thuật tốn có tên Non Max Suppression (NMS) để chỉ giữ lại các bounding box tốt nhất và output ra kết quả cho người dùng.
Xét về tốc độ thì YOLO hiện đang khá nhanh so với các phương pháp nói trên (tốc độ thử nghiệm max đạt được là 45 FPS). Tuy vậy điểm yếu của YOLO lại là hay bỏ sót các object nhỏ trên ảnh như: phát hiện xe trên ảnh vệ tinh, ảnh chụp flycam….
Trong thực tế mạng YOLOv3 đã sử dụng 3 lưới khác nhau (3 feature map size khác nhau) để tiến hành predict trên các ô của lưới. Điều này làm tăng khả năng detection của mạng, tránh bỏ sót.
Đánh giá các trình trích xuất đặc trưng
Trong tất cả các kiến trúc meta, trước tiên cần áp dụng một trình trích xuất đặc trưng tích hợp cho hình ảnh đầu vào để có được các đặc trưng cần thiết. Việc lựa chọn bộ trích xuất đặc trưng là rất quan trọng vì số lượng tham số và loại lớp ảnh hưởng trực tiếp đến bộ nhớ, tốc độ và hiệu suất của bộ phát hiện.
Như chúng ta đã thấy, trình trích xuất đặc trưng Inception Resnet V2 cho chúng ta độ chính xác cao nhất trong tất cả các mơ hình và trình MobileNet [25] có số lượng tham số nhỏ nhất khi trích xuất đặc trưng trên cùng một ảnh và được sử dụng bởi mạng Faster R-CNN.
Hình 3. 6: Các thơng số của các mơ hình trích xuất đặc trưng với mạng Faster R-CNN
3.2.2. Lựa chọn mơ hình phát hiện mục tiêu
Với đặc thù tiên quyết của bài toán đặt ra là đảm bảo tốc độ thời gian thực cũng như chất lượng ảnh đầu vào có độ phân giải thấp, nhóm tác giả lựa chọn
phương án sử dụng mobilenet làm trình trích xuất đặc trưng cho đối tượng (cụ thể là tàu biển).
Dưới đây là bảng báo cáo kết quả các thông số của MobileNet được train để phát hiện đối tượng dựa trên dữ liệu COCO gần đây đã giành chiến thắng cuộc thi 2016 COCO challenge [22]. Trong bảng 4.8, MobileNet được so sánh với VGG [26] và Inception V2 [21] theo cả khung Faster-RCNN [15] và SSD [17]. Trong các thử nghiệm, SSD được đánh giá với độ phân giải đầu vào 300 (SSD 300) và Faster-RCNN được so sánh với cả độ phân giải đầu vào 300 và 600 (Faster RCNN 300, Faster-RCNN 600). Mơ hình Faster-RCNN đánh giá 300 RPN proposal boxes trên mỗi hình ảnh.
SSD là một trong những bộ phát hiện một giai đoạn điển hình sử dụng cơ chế tăng tốc quá trình phát hiện bằng cách loại bỏ việc phụ thuộc vào mạng đề xuất khu vực nghi vấn mục tiêu. Để giải quyết về vấn đề về độ chính xác của các bộ phát hiện một giai đoạn, SSD áp dụng một vài cải tiến bao gồm sử dụng bản đồ thuộc tính đa kích thước và sử dụng phương pháp đa hộp bao mặc định Multibox [11]. Những cải tiến này cho phép SSD tiến gần được với độ chính xác của Faster R-CNN nhưng lại có thể sử dụng hình ảnh có độ phân giải thấp hơn, giúp đẩy tốc độ cao hơn. Tốc độ xử lý khi triển khai bài toán phát hiện và bám mục tiêu là đặc biệt quan trọng nhằm đảm bảo tốc độ phản hồi của hệ thống trong các điều kiện thực tế. Vì vậy nhóm đề tài đã quyết định sử dụng mơ hình SSD-mobileNet V2 để phát hiện đối tượng.
Hình 3. 7: Các thông số của mobilenet trên tập dữ liệu COCO
Kiến trúc mơ hình
Hình 3. 8: Mơ hình SSD sử dụng mobilenet làm backbone
Kiến trúc của mơ hình SSD-MobileNet V2 cũng tương tự như kiến trúc của mơ hình SSD đã trình bày ở phần cơ sở lý thuyết tuy nhiên thay vì sử dụng mạng VGG16 thì mơ hình này sử dụng trình trích xuất đặc trưng mobilenet làm backbone.
3.3. Huấn luyện và thử nghiệm mơ hình trong phát hiện đối tượng
Mạng nơ-ron có bản chất là một hàm ánh xạ từ 1 mảng đầu vào đa chiều đến 1 mảng đầu ra đa chiều. Như vậy q trình luyện mơ hình học sâu có thể khái qt là một bài tốn tìm xấp xỉ hàm. Khơng giống các kỹ thuật học máy thông thường, mạng học sâu thường là bài tốn tối ưu hàm khơng lồi (có thể có nhiều đáp án tốt hoặc đáp án tốt cục bộ). Để luyện mạng nơ-ron, thuật toán hồi quy giảm độ dốc ngẫu nhiên được sử dụng để giải quyết vấn đề tối ưu hóa trong đó các thơng số mơ hình được cập nhật mỗi chu kỳ luyện bằng cách sử dụng kỹ
thuật lan truyền ngược. Trong mục này, nhóm tác giả sẽ phân tích kỹ hơn về ngun lý của q trình luyện mơ hình.
Mục đích cơ bản của quá trình luyện là thay đổi bộ trọng số của các nút nơron để tăng chất lượng mơ hình. Chất lượng mơ hình đối với một bộ trọng số cụ thể được thể hiện dưới dạng 1 đại lượng vơ hướng có khả năng đánh giá