Đặt vấn đề Trong vài năm trở lại đây, Artificial Intelligence (trí tuệ nhân tạo) hay cụ thể là Machine Learning ( Máy học) đang phát triển. Ứng dụng của AI rất đa dạng và ảnh hưởng tích cực đến đời sống như: Ô tô tự lái, hệ thống dịch tự động, chatbot tự động trả lời,… Hiện nay, có rất nhiều nghiên cứu về bài toán nhận diện đối tượng, các hệ thống từ đơn giản đến phức tạp, sử dụng nhiều thuật toán khác nhau. Do đó, dễ dàng trong việc thực hiện và đánh giá các thuật toán. Tình hình nghiên cứu trong và ngoài nước Trong lĩnh vực thị giác máy tính hiện nay có rất nhiều nhiệm vụ,ví dụ như : • Image classification (phân loại hình ảnh) : Dự đoán nhãn của một đối tượng trong một hình ảnh.Trong đó input là một ảnh với chỉ một đối tượng và output là nhãn lớp • Object localization (định vị đối tượng) : Xác định vị trí hiện diện của các đối tượng trong ảnh và cho biết vị trí của chúng bằng bounding box.
Trong đó input là một hình ảnh có một hoặc nhiều đối tượng và output là một hay nhiều bounding box được xác định bởi tọa độ tâm, chiều rộng và chiều cao • Object detection (phát hiện đối tượng) : Xác định vị trí hiện diện của các đối tượng trong bounding box và nhãn của các đối tượng nằm trong một hình ảnh. Trong đó input là hình ảnh có một hoặc nhiều đối tượng và output là một hoặc nhiều bounding box và nhãn cho mỗi bounding box Ngoài ra còn nhiều nhiệm vụ khác cũng rất quan trọng trong thị giác máy tính là phân đoạn đối tượng (object segmentation), trong đó các đối tượng được nhận dạng bằng cách làm nổi bật các pixel cụ thể của đối tượng thay vì bounding box Luan van Hình 1.Sơ đồ tổng hợp các tác vụ trong thị giác máy tính Đối với bài toán phát hiện đối tượng, tức là nhận diện được đối tượng này nằm ở đâu trên bức ảnh và phân loại đối tượng vào đúng nhãn. Lý do lựa chọn mô hình thuật toán Ứng dụng công nghệ mạng noron trong trí tuệ nhân tạo để nhận dạng và phân loại đối tương. Có 3 phương pháp dò đối tượng chính mà ta thường gặp được hỗ trợ trong thị giác máy tính là : • R-CNN và các biến thể của chúng, bao gồm R-CNN, Fast R-CNN và Faster- RCNN • Phát hiện bắn một lần (SSD) • YOLO R-CNN là một trong những detectors tìm đối tượng dựa trên học tập sâu đầu tiên và là một ví dụ về detectors hai giai đoạn 2 Luan van R-CNN đầu tiên, phân cấp tính năng phong phú để phát hiện đối tượng chính xác và phân đoạn ngữ nghĩa, (2013) Girshick et al.
đề xuất một trình phát hiện đối tượng yêu cầu một thuật toán như Tìm kiếm chọn lọc (hoặc tương đương) để đề xuất các hộp giới hạn ứng viên có thể chứa các đối tượng. Các vùng này sau đó được chuyển vào CNN để phân loại, cuối cùng dẫn đến một trong những detectors tìm đối tượng dựa trên học tập sâu đầu tiên. Vấn đề với phương pháp R-CNN tiêu chuẩn là nó rất chậm và không phải là máy phát hiện đối tượng đầu cuối hoàn chỉnh. Girshick et al.
xuất bản một bài báo thứ hai vào năm 2015, có tựa đề Fast R- CNN. Thuật toán R-CNN nhanh đã tạo ra những cải tiến đáng kể cho R-CNN ban đầu, cụ thể là tăng độ chính xác và giảm thời gian cần thiết để thực hiện chuyển tiếp; tuy nhiên, mô hình vẫn dựa vào thuật toán đề xuất khu vực bên ngoài.Mãi cho đến khi bài báo tiếp theo năm 2015 của Girshick và cộng sự, Faster R-CNN: Hướng tới phát hiện đối tượng theo thời gian thực với Mạng đề xuất khu vực, R-CNN đã trở thành một trình phát hiện đối tượng học sâu thực sự từ đầu đến cuối loại bỏ yêu cầu Tìm kiếm có chọn lọc và thay vào đó dựa vào Mạng đề xuất khu vực (RPN) là (1) tích chập hoàn toàn và (2) có thể dự đoán các hộp giới hạn đối tượng và điểm số của đối tượng xác định (nghĩa là điểm số định lượng khả năng đó là khu vực của một hình ảnh có thể chứa một hình ảnh). Đầu ra của RPN sau đó được chuyển vào thành phần R-CNN để phân loại và ghi nhãn cuối cùng. Mặc dù R-CNN có xu hướng rất chính xác, vấn đề lớn nhất với gia đình mạng R-CNN là tốc độ của chúng - chúng rất chậm, chỉ đạt 5 FPS trên GPU.
Để giúp tăng tốc độ của các máy dò tìm đối tượng dựa trên học tập sâu, cả detectors một lần bắn (SSD) và YOLO đều sử dụng chiến lược phát hiện một giai đoạn. YOLO vừa đảm bảo về tốc độ xử lý vừa đảm bảo về độ chính xác vừa đủ để xử dụng với các ứng dụng thực tế. 3 Luan van Hình 1. So sánh tốc độ và độ chính xác của một số mô hình phát hiện đối tượng Trong đề tài này, chúng tôi sử dụng phiên bản rút gọn của thuật toán YOLOv4 là YOLOv4- tiny để nhận diện phương tiện xe ô tô và người đi bộ vì lý do YOLOv4-tiny là một bản rút gọn được thừa hưởng độ chính xác khá cao của thuật toán YOLOv4 nổi tiếng và có thể đáp ứng khi triển khai trên các phần cứng nhúng vì đề tài này hướng đến ứng dụng hỗ trợ người lại trên xe ô tô.
Tóm tắt quá trình thực hiện đề tài Việc hiện đề tài được chia thành nhiều giai đoạn, mỗi giai đoạn thực hiện một công việc như đã trình bày ở phần mục lục. Chi tiết cho từng giai đoạn như sau: • Tìm hiểu về Deep Learning và các ứng dụng. • Nghiên cứu xây dựng một mô hình CNN, YOLO. • Tham khảo cách sử dụng các thư viện và môi trường ảo.
Lựa chọn thư viện phù hợp. • Thu thập và tiền xử lý dữ liệu. Phân chia dataset thành tập training, tập validation và tập test • Xây dựng mô hình phân loại và mô hình nhận diện xe 4 Luan van CHƯƠNG 2: CƠ SỞ LÝ THUYẾT MẠNG CNN VÀ THUẬT TOÁN YOLO Chương này đưa ra lý thuyết về Deep Learning, mạng Neural Network và thuật toán YOLO. Để thực hiện việc phân loại và phát hiện xe hay người đi bộ, việc vận dụng những kỹ thuật trên đã chứng minh được sự hiệu quả của mình.1 giới thiệu nhanh về kỹ thuật Deep Learning.2 trình bày về mạng Neural Network từ đó đưa ra cơ sở để trình bày về thuật toán Convolutional Neural Network ở phần 2.4 trình bày về thuật toán YOLO, là một mô hình CNN để phát hiện vật thể một cách nhanh chóng và hiệu quả.
Deep Learning Deep Learning(Học sâu) là một nhánh nhỏ của Machine Learning(Máy học), bắt nguồn từ thuật toán Neural Network. Tuy nhiên, gần đây Deep Learning mang lại nhiều thành tựu kĩ thuật nhờ vào sự phát triển của Big Data(Dữ liệu lớn), với tập dữ liệu càng lớn giúp phát triển các mạng Neural Network sâu hơn với khả năng dự đoán chính xác cao hơn (Hình 1. Bắt nguồn từ các loại hình kinh doanh internet truyền thống như tìm kiếm web và quảng cáo. Deep Learning ngày nay đã tạo ra nhiều lợi ích hơn trong cuộc sống hằng ngày.
Ví dụ như trong lĩnh vực y tế, việc phân tích các hình ảnh X-quang được ứng dụng vào Deep Learning để nghiên cứu và dự đoán các khả năng mang bệnh của người khám. Và đặc biệt Deep Learning còn được ứng dụng trong các xe tự hành để dự đoán các tình huống giao thông. 5 Luan van Hình 2. Giới thiệu về deep learning Hình 2.
Quan hệ giữa dữ liệu và khả năng dự đoán của thuật toán. Nguồn: Coursera Các ứng dụng khác nhau chúng ta có thể áp dụng các Neuron Network khác nhau: Các ứng dụng Neural Network có thể áp dụng Đoán giá nhà Standard Neural Network Quảng cáo online 6 Luan van Xe tự hành Custom, Hybrid Neural Network Nhận diện giọng nói Recurrent Neural Network Máy dịch Nhận diện vật thể Convolutional Neural Network 2. Neural Network Neural Network là một mạng lưới gồm nhiều lớp được lấy cảm hứng từ neuron người. Ở đó, lớp đầu tiên để đưa các đặc tính của vật cần dự đoán vào được gọi là Input Layer.
Và layer cuối cùng mang kết quả dự đoán gọi Output Layer. Một mạng neuron có thể có hoặc không có các lớp ở giữa Input Layer và Output Layer gọi là Hidden Layer, các Hidden Layer này giúp cho tỉ lệ dự đoán chính xác cao hơn tuy nhiên việc huấn luyện cũng tốn nhiều thời gian và dung lượng hơn. Mỗi Layer là tập hợp nhiều node, các node của lớp sau kết nối với toàn bộ các node của lớp trước. Mỗi node trong hidden layer và output layer thực hiện các công việc sau: Liên kết với tất cả các node ở layer trước đó với các hệ số w riêng.
Mỗi node có 1 hệ số bias b riêng. Từ đó w,b biểu thị mối quan hệ giữa node trước và node sau. Mối quan hệ giữa ngõ vào và ngõ ra của một node. Node phía trên có đầu vào là X1,X2, trọng số w1,w2.
Ngõ ra y là kết quả của một hàm phi tuyến và một hàm tuyến tính. Hàm phi tuyến g còn được gọi là hàm kích hoạt (activation) giúp tăng khả năng học của mạng neural. 7 Luan van Các hàm kích hoạt thường được sử dụng là: Sigmoid: Giá trị ngõ ra được chuyển về trong khoảng [0,1] bằng công thức: 1 ( x) = 1 + e− x Hàm sigmoid cho ngõ ra có giá trị bằng 1 khi ngõ vào lớn và ngõ ra bằng 0 khi ngõ vào bằng 1. Ở thời gian đầu hàm sigmoid rất được ưa chuộng sử dụng, tuy nhiên sau này vì hàm luôn dương nên khi lấy gradient, hàm sẽ khó hội tụ.
Mặt khác hàm sigmoid dễ bị bão hòa và không có gradient khi đầu vào rất nhỏ hoặc rất. Vì vậy, sau này hàm sigmoid chỉ được sử dụng ở những lớp tích chập cuối khi cần tính binary cross-entropy loss. Tanh: Giá trị ngõ ra được chuyển về trong khoảng [-1,1] khiến nó có tính chất tâm không (zero-centered), theo công thức: 𝑒 𝑧 −𝑒 −𝑧 𝑔 (𝑧 ) = 𝑧. 𝑒 +𝑒 −𝑧 Khi đó, ngõ ra bằng 1 khi ngõ vào lớn và ngõ ra bằng -1 khi ngõ vào nhỏ.
Hàm Tanh với tính chất tâm không giúp các dữ liệu được phân bố quanh điểm 0, tanh khi lấy đạo hàm có cả phần dương và phần âm giúp việc hội tụ trở nên tốt hơn. Tuy nhiên hàm tanh không giải quyết được vấn đề bão hòa khi giá trị ngõ vào quá lớn hoặc quá nhỏ của sigmoid. Đồ thị hàm sigmoid (a) và hàm tanh (b) ReLU và leaky ReLU: Lấy ngưỡng giá trị ở 0 (Thay thế các giá trị âm bằng 0) : g(x)= max(0,x).