Đặt vấn đề, giới thiệu về tình hình nghiên cứu hiện nay. Chương 2: Nền tảng cơ sở lý thuyết liên quan đến luận văn, bao gồm một số thuật ngữ chính, các bộ dữ liệu mà chúng ta sẽ dùng, cơ bản về mạng thần kinh tích chập, phân loại ảnh và nhận dạng đối tượng. Chương 3: Trong chương này sẽ trình bày về bộ phát hiện “Single shot multibox detector”. Chương 4: Thiết kế và xây dựng mô hình nhận diện phương tiện giao thông bằng bộ phát hiện Single Shot Multibox Detector.
Chương 5: Đánh giá kết quả, đưa ra các giải pháp phát triển và kết luận của luận án cũng được đưa ra ở chương này. 5 do an Chương 2: CƠ SỞ LÝ THUYẾT Phần này sẽ cung cấp một cái nhìn tổng quan về các nền tảng lý thuyết có liên quan đến đề tài.1 Phân loại hình ảnh và phát hiện đối tượng 2.1 Phân loại hình ảnh Phân loại hình ảnh là một trong những công việc phổ biến nhất trong thị giác máy tính. Đây là một trong những vấn đề được nghiên cứu nhiều nhất trong học máy. Đối với vấn đề này, chương trình sẽ được yêu cầu chỉ ra các nhãn hay lớp của một điểm dữ liệu.
Nhãn này, thường là một phần tử trong một tập hợp có C phần tử khác nhau. Mỗi phần tử trong tập hợp này được gọi là một lớp và thường được đánh số từ 1 đến C phần tử. Để giải vấn đề này, ta thường phải xây dựng một hàm số f : ℝd → {1, 2,. Khi y = f(x), mô hình gán cho một điểm dữ liệu được mô tả bởi véc- tơ đặc trưng x với một nhãn được xác định bởi số y.2 Phát hiện đối tượng Hình 2.1 Phân loại hình ảnh và phát hiện đối tượng Phát hiện đối tượng là thuật ngữ chung dùng để mô tả một tập hợp các nhiệm vụ trong thị giác máy tính có liên quan chặt chẽ đến việc xác định đối tượng và phân loại các đối tượng trong hình ảnh.
Phân loại hình liên quan đến việc dự đoán để chia 6 do an lớp của một đối tượng trong một hình ảnh. Với phát hiện đối tượng thì tạo ra một khung hình bao chưa đối tượng được quan tâm và gán nhãn cho chúng.2 Huấn luyện dữ liệu và đánh giá hệ thống. Học sâu là một nhánh của máy học dựa trên một tập hợp các thuật toán để trừu tượng hóa mô hình dữ liệu ở mức cao bằng cách sử dụng nhiều lớp xử lý với các cấu trúc phức tạp, hoặc bằng các cách khác bao gồm nhiều phép biến đổi phi tuyến. Làm việc với học sâu là một quá trình gồm 2 giai đoạn: đào tạo và suy luận.
Đào tạo là giai đoạn trong đó một mạng neural cố gắng học hỏi từ dữ liệu. Suy luận là giai đoạn mà mạng neural sau khi được đào tạo sẽ triển khai vào môi trường sản phẩm để ứng dụng vào thực tế. Có các mục đích khác nhau trong việc đào tạo và suy luận cho một hệ thống. Thông thường, một mô hình có thể mất một thời gian dài để huấn luyện được được một mô hình tốt nhất, việc này giúp cho sự suy luận trở nên nhanh hơn và chính xác hơn.
Nhưng không phải lúc nào huấn luyện lâu nhất cũng điều chính xác nhất, kết quả của việc suy luận còn phụ thuộc vào những yếu tố khác nhau như: độ chính xác của thuật toán, tính ổn định của hệ thống, độ chính xác và phong phú của tập dữ liệu dành cho việc huấn luyện. Việc huấn luyện có thể được xử lý nhanh bằng cách xử dụng nhiều bộ xử lý GPU song song có cấu hình cao, sử dụng các hàm kích hoạt để tránh các lỗi không thể hội tụi (vanishing gradient) hay sử dụng các kiến trúc mạng cải tiến và các kỹ thuật học cải thiện (transfer learning).3 Mạng neural tích chập Những năm gần đây, chúng ta được chứng kiến sự phát triển mạnh mẽ trong ngành Thị giác máy tính. Những hệ thống xử lý ảnh lớn như của Facebook, Google, hay cả trong các hãng xe tự hành như Tesla đã đưa những công nghệ như nhận diện mặt người, nhận diện ký tự hay nhận diện các vật thể, đối tượng vào bên trong hệ thống của họ. Để thực hiện được việc xử lý này, thì một mô hình đã được ra đời với tên gọi Convolution Neural Network(CNN hay ConvNet) - mạng neural tích chập đã được 7 do an phát triển từ một những mô hình của học sâu với nhiều cải tiến vượt trội so với mạng neural thông thường.
Một ConvNet được tạo thành từ nhiều lớp kết hợp lại với nhau (Hình 2. Mỗi lớp có một API đơn giản: nó biến đổi một khối 3D đầu vào thành một khối 3D đầu ra với một số chức năng khác nhau có thể có hoặc không có tham số[9].1 Các lớp trong ConvNet Tầng chập Dựa vào nguyên lý biến đổi thông tin, các nhà nghiên cứu đã sử dụng tích chập trong xử lý tín hiệu số để xử lý các hình ảnh và các video số. Để hình dung ra điều này, ta sẽ xem tích chập như một cửa sổ trượt được đặt lên trên một ma trận (như hình 2. Bên trái là một ma trận hình ảnh đầu vào với mỗi giá trị của ma trận tương đương với một điểm ảnh(pixel), trong đó 0 là giá trị đại diện cho điểm ảnh đen và 1 đại diện cho điểm ảnh màu trắng.
Trong trường hợp ảnh là ảnh xám thì sẽ mang các gia trị từ 0 đến 255. Của sổ trượt là quá trình nhân kernel nhân trượt với từng thành phần tương ứng trên ma trận ảnh đầu vào.2 biểu diễn quá trình tích chập dùng nhân kernel có kích thước 3*3, nhân trượt với các phần tử của ma trận bên trái và kết quả ta được một ma trận mới như ma trận bên phải.2 Tầng tích chập[11] 8 do an Tầng chập là một khối xây dựng cốt lõi của ConvNet, thực thi hầu hết các phép toán phức tạp của mạng. Tích chập được sử dụng phổ biến trong lĩnh vực thị giác máy tính. Thông qua các phép tích chập, các đặc trưng chính của ảnh sẽ được trích xuất và truyền vào các lớp tích chập.
Mỗi một lớp tích chập sẽ bao gồm nhiều đơn vị mà kết quả của mỗi đơn vị là một phép biến đổi tích chập từ lớp trước đó thông qua phép nhân tích chập với bộ lọc. Độ phức tạp của đặc trưng được phát hiện bởi bộ lọc tỉ lệ thuận với độ sâu của lớp tích chập mà nó thuộc về. Trong mạng ConvNet, những lớp tích chập đầu tiên sử dụng bộ lọc hình học để phát hiện những đặc trưng đơn giản như cạnh ngang, dọc, chéo của bức ảnh. Những lớp tích chập sau đó được dùng để phát hiện đối tượng nhỏ, bán hoàn chỉnh như mắt, mũi, tóc, v.
Những lớp tích chập sâu nhất dùng để phát hiện đối tượng hoàn hỉnh như: chó, mèo, chim, ô tô, đèn giao thông,… Hình 2.3 Ví dụ minh họa các lớp của ConvNet[10] Trong quá trình chuyển tiếp, mỗi bộ lọc sẽ được tích hợp các chiều dài và chiều rộng của dung lượng đầu vào, sau đó trượt bộ lọc này theo chiều dài và chiều rộng của chúng để tạo ra vùng các đặc trưng (Hình 2. Tích chập ảnh đầu vào với kernel 3x3, stride 1 và padding 1. 9 do an Bước sải và bước đệm (Stride và padding) Bước sải là khoảng cách giữa 2 nhân khi quét. Với stride = 1, nhân sẽ quét 2 ô ngay cạnh nhau, nhưng với stride = 2, nhân sẽ quét ô số 1 và ô số 3.
Bỏ qua ô ở giữa. Điều này nhằm tránh việc lặp lại giá trị ở các ô bị quét. Thông thường, ta chọn stride và kích thước của nhân càng lớn thì kích thước của vùng đặc trưng càng nhỏ, một phần lý do đó là bởi nhân phải nằm hoàn toàn trong đầu vào. Có một cách để giữ nguyên kích cỡ của vùng đặc trưng so với ban đầu.
Đấy là bước đệm. Khi ta điều chỉnh padding = 1, tức là ta đã thêm 1 ô bọc xung quanh các cạnh của đầu vào, muốn phần bọc này càng dày thì ta cần phải tăng bước đệm lên. Tầng ReLU ReLU (Rectified Linear Unit) là hàm kích hoạt (activation function) được sử dụng rộng rãi gần đây vì tính đơn giản của nó. Hàm ReLU rất đơn giản, rất lợi về mặt tính toán, có công thức toán học như sau: f(z) = max(0, z) Đạo hàm của nó bằng 0 tại các điểm âm, bằng 1 tại các điểm dương.
ReLU được chứng minh giúp cho việc huấn luyện các mạng thần kinh đa tầng (multilayer neural network) và mạng sâu (deep network) có rất nhiều tầng ẩn(hidden layer) nhanh hơn rất nhiều so với hàm tanh [6]. Hàm ReLU và tốc độ hội tụ khi so sánh với hàm tanh[11] Hình 2.4 Ví dụ minh họa các lớp của ConvNet[10] 10 do an Tầng Pooling Lớp Pooling được sử dụng trong ConvNet để giảm kích thước đầu vào, tăng tốc độ tính toán và hiệu năng trong việc phát hiện các đặc trưng. Có nhiều hướng Pooling được sử dung, trong đó phổ biến nhất là pooling theo giá trị cực đại (max pooling) và pooling theo giá trị trung bình (average pooling)(Hình 2.5 Pooling Layer Fully-connected Layer Hình 2.5 Hidden layer trong neural network[13] 11 do an Mỗi tầng ẩn được kết nối đầy đủ với nhau được gọi là fully connected layer (hình 2. Mỗi nút (node) trong tầng ẩn được kết nối với tất cả các nút (node) trong các tầng trước đó.
Cả mô hình được gọi là fully connected neural network (FCN).2 Một số kiến trúc mạng ConvNet CNN đầu tiên có thành công lớn về phân loại hình ảnh là LeNet được đề xuất bởi Y. Người kế nhiệm AlexNet [15] đã chiến thắng thử thách ILSVRC năm 2012 và vượt trội đáng kể so với á quân (top 5 lỗi 16% so với á quân 26%). Sau đó, nhiều kiến trúc mạng xuất sắc đã được đề xuất. Phần này liệt kê một số kiến trúc mạng nổi tiếng có liên quan đến nghiên cứu này.
VGGNet Kiến trúc của mạng thần kinh này là một kiến trúc đơn giản với tỷ lệ lỗi 7. VGGNet bao gồm hai phiên bản: VGG16 và VGG19. Kiến trúc của VGG16 là một mạng thần kinh bao gồm 16 tầng, không bao gồm tầng liên kết lớn nhất và tầng softmax. Kiến trúc của VGG19 cũng tương tự như VGG16 nhưng nó có đến 19 tầng.
Nguyên tắc thiết kế chính của mạng VGG là dựa trên độ sâu của các tầng. Để tăng độ sâu, ban đầu sẽ có 2 hoặc 3 tầng chập và tiếp nối sau đó là 1 tầng liên kết lớn nhất 2D. Ngay sau tầng chập cuối cùng là 1 tầng làm phẳng để chuyển ma trận 4 chiều của tầng chập về ma trận 2 chiều. Và tiếp nối sau đó và các tầng Fully-connected và 1 tầng softmax.