Chương 2 : CƠ SỞ LÝ THUYẾT
2.3. Tổng quan về nhận dạng đối tượng
2.3.1. Bài toán nhận dạng đối tượng
Một trong những lĩnh vực quan trọng của trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy tính (Computer Vision). Thị giác máy tính là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn. Nhận dạng vật thể (Object Detection) có lẽ là khía cạnh sâu sắc nhất của thị giác máy do số lần sử dụng trong thực tế.
Nhận dạng vật thể là lĩnh vực thuộc “Machine Learning” nguyên cứu khả năng của hệ thống máy tính cũng như phần mềm để định vị các đối tượng trong một hình ảnh, video cho trước và xác định từng đối tượng trong đó. Sự phát triển khoa học kỹ thuật cơng nghệ đã thúc đẩy đưa bài tốn nhận dạng đối tượng vào ứng dụng thực tiễn với mức độ tinh vi ngày càng cao. Có thể thấy nhận dạng vật thể đã được sử dụng rộng rãi để phát hiện khuôn mặt, phát hiện xe, đếm số người đi bộ, hệ thống bảo mật và xe không người lái, cơng nghệ robot,...Vì vậy, nhận dạng vật thể là một lĩnh vực đang được quan tâm và có tính ứng dụng cao.
Hình 2.10. Nhận diện đối tượng
Bài tốn nhận dạng đối tượng có thể áp dụng rộng rãi trong nhiều ứng dụng thực tế khác nhau. Đó chính là lý do mà bài tốn này rất hấp dẫn với nhiều nhóm nguyên cứu trong thời gian dài. Các ứng dụng liên quan đến nhận dạng đối tượng có thể kể ra như:
29 – Hệ thống phát hiện tội phạm: Camera được đặt tại một số điểm công cộng như: siêu thị, nhà sách, trạm xe buýt, sân bay,... Khi phát hiện được sự xuất hiện của các đối tượng là tội phạm, hệ thống sẽ gởi thông điệp về trung tâm xử lý.
– Hệ thống theo dõi nhân sự trong một đơn vị: Giám sát giờ ra vào của từng nhân viên và chấm công.
– Hệ thống giao tiếp người máy: Thay thế việc tương tác giữa người và máy theo những cách truyền thống như: bàn phím, chuột,... Thay vào đó là sử dụng giao tiếp trực quan như: Biểu cảm khuôn mặt, dấu hiệu, cử chỉ bằng tay,...
– Các hệ thống bảo mật dựa trên thông tin sinh trắc học: Mặt người, vân tay,... Thay vì xác nhận mật khẩu, khóa,...
– Cơng nghệ nhận dạng quản lý giao thơng quản lý hình ảnh của xe và biển số xe thay đổi (không khớp với dữ liệu), giám sát bãi đỗ xe, phương tiện giao thông tại các khu vực nhạy cảm như sân bay, bến cảng.[1]
2.3.2. Kiến trúc của một hệ thống nhận dạng đối tượng
Một hệ thống nhận dạng đối tượng thông thường xử lý bốn bước sau: – Thu nhận tín hiệu và tiền xử lý.
– Trích xuất đặc trưng. – Phát hiện đối tượng. – Phân lớp đối tượng.
Ảnh đầu vào được thu nhận và được qua công đoạn tiền xử lý nhằm tăng độ chính xác cho hệ thống. Các ảnh sau đó được trích chọn đặc trưng để tạo ra các vectơ đặc trưng trong bước rút trích đặc trưng. Những vectơ đặc trưng này sẽ là dữ liệu đầu vào cho một mơ hình đã được huấn luyện trước. Phát hiện đối tượng là bước dị tìm và định vị những vị trí đối tượng xuất hiện trong ảnh hoặc trên chuỗi ảnh của video. Những đối tượng thu được qua bước phát hiện sẽ tiếp tục được phân lớp thành từng lớp riêng biệt để nhận dạng.[1]
30
Hình 2.11. Kiến trúc hệ thống nhận diện đối tượng 2.4. Tổng quan một số mơ hình nhận diện đối tượng 2.4. Tổng quan một số mơ hình nhận diện đối tượng
2.4.1. Giới thiệu Machine Learning
Machine Learning là q trình dạy máy tính thực hiện một nhiệm vụ, thay vì lập trình cho nó làm thế nào để thực hiện nhiệm vụ đó từng bước một. Khi kết thúc đào tạo, một hệ thống Machine Learning sẽ có thể đưa ra dự đốn chính xác khi được cung cấp dữ liệu.
Hình 2.12. Cấu trúc khi lập trình thơng thường
31 Machine Learning thường được chia thành học có giám sát, trong đó máy tính học bằng ví dụ từ dữ liệu được gắn nhãn và học khơng giám sát, trong đó các máy tính nhóm các dữ liệu tương tự và xác định chính xác sự bất thường.
– Học có giám sát là việc cho máy tính học trên dữ liệu đã được gán nhãn (label).
Hình 2.14. Cấu trúc Machine Learning theo kiểu học có giám sát
– Học khơng giám sát là cho máy tính học trên dữ liệu mà khơng được gán nhãn, các thuật tốn machine learning sẽ tìm ra sự tương quan dữ liệu, mơ hình hóa dữ liệu hay chính là làm cho máy tính có kiến thức, hiểu về dữ liệu, từ đó chúng có thể phân loại các dữ liệu về sau thành các nhóm, lớp (clustering) giống nhau mà chúng đã được học hoặc giảm số chiều dữ liệu (dimension reduction).
32 Trong đó:
– Training data và test data: dataset thường sẽ được chia làm 2 tập này, training data dùng để huấn luyện cho mơ hình, test data dùng để dự đốn kết quả và đánh giá mơ hình. Có bài tốn người ta sẽ cho sẵn hai tập này thì bạn khơng cần phải chia nữa, đối với bài toán chỉ cho mỗi dataset thơi thì phải chia ra. Thường tỷ lệ giữa tập train và test sẽ là 8/2.
– Features vector: là vector đặc trưng, mỗi vector này sẽ biểu diễn cho một điểm dữ liệu trong dataset. Mỗi vector có n chiều biểu diễn các đặc trưng của điểm dữ liệu, mỗi đặc trưng là một chiều và phải là dữ liệu số. Các mơ hình chỉ có thể huấn luyện được từ các vector đặc trưng này, do đó dataset cần phải chuyển về dạng một tập các vector đặc trưng (features vectors).
– Model: là các mơ hình được dùng để training trên một training data theo thuật tốn của mơ hình đó. Sau đó mơ hình có thể dự đốn hoặc đưa ra các quyết định dựa trên những gì chúng đã được học.
Điển hình nhất trong Machine Learning mà nhiều người lập trình xử lý ảnh hay nghe đến đó là Deep Learning.
Deep Learning (thuật toán) là một tập hợp con của Machine Learning, nó cũng là q trình dạy máy tính thực hiện một nhiệm vụ, nhưng nó có khả năng khác biệt ở một số khía cạnh quan trọng so với Machine Learning, cho phép máy tính giải quyết một loạt các vấn đề phức tạp không thể giải quyết được. Chẳng hạn như nhận dạng hình ảnh, ngơn ngữ và lời nói – bằng cách cho phép máy móc tìm hiểu cách các tính năng trong dữ liệu kết hợp thành các dạng trừu tượng ngày càng cao hơn. Ví dụ: trong nhận dạng khn mặt, cách các pixel trong hình ảnh tạo ra các đường và hình dạng, cách các đường và hình dạng đó tạo ra các đặc điểm khuôn mặt và cách các đặc điểm khuôn mặt này được sắp xếp thành một khn mặt, ngồi ra trong điều kiện thời tiết ln thay đổi thì Deep Learning sẽ giải quyết vấn đề tốt hơn Machine Learning.
Deep Learning cũng có thể khơng phải là lựa chọn tốt nhất để đưa ra dự đoán dựa trên dữ liệu. Ví dụ: nếu tập dữ liệu nhỏ thì đơi khi mơ hình Machine Learning tuyến tính đơn giản có thể mang lại kết quả chính xác hơn.
33 Ưu điểm Deep Learning: Xử lí những dữ liệu phần lớn khơng có cấu trúc và có rất nhiều dữ liệu – chẳng hạn như video, hình ảnh, bản ghi âm thanh và văn bản – và áp đặt đủ thứ tự cho dữ liệu đó để đưa ra dự đốn hữu ích.
Nhược điểm Deep Learning: Lượng dữ liệu cần đào tạo lớn và số chu kỳ đào tạo phải được chạy, vì vậy việc đào tạo thường yêu cầu quyền truy cập vào phần cứng máy tính mạnh mẽ và đắt tiền, điển hình là GPU cao cấp.
Các kỹ thuật Deep Learning: CNN (Convolutional Neural Network) thường được sử dụng cho các tác vụ thị giác máy tính, trong khi RNN (Recurrent neural network) thường được sử dụng để xử lý ngôn ngữ.
2.4.2. Giới thiệu mơ hình Yolo
You Only Look Once(YOLO) là một mơ hình mạng nơ ron tích chập dùng để nhận dạng đối tượng mà ưu điểm nổi trội là nhanh hơn nhiều so với những mơ hình cũ, thuật tốn được đánh giá là một trong những thuật toán nhận diện đối tượng nhanh nhất thời điểm hiện tại. Mặc dù khơng phải là thuật tốn có độ chính xác cao nhất tuy nhiên YOLO vẫn là được ứng dụng rất nhiều trong những dự án thực tế khi mà độ chính xác khơng phải là tiêu chí hàng đầu. Hơn thế nữa, YOLO cịn có thể chạy tốt trên các thiết bị IoT như Rasberry Pi.
Kiến trúc của YOLO bao gồm: Base Network (Mạng gốc) là mạng CNN làm nhiệm vụ trích xuất đặc trưng, phần phía sau là những Extra Layers (Tầng phụ) được áp dụng để phát hiện vật thể trên Feature Map (Ma trận đặc trưng) của Base Network.[10]
34 Trên đây là một ví dụ về sơ đồ kiến trúc mơ hình YOLO. Thành phần Darknet Architechture được gọi là Base Network có tác dụng rút trích đặc trưng của hình ảnh. Đầu ra của Base Network là một Feature Map có kích thước 7x7x1024 sẽ được sử dụng để làm đầu vào cho các Extra Layers có tác dụng dự đốn nhãn và tọa độ Bounding Box (hình chữ nhật bao quanh vật thể) của vật thể.
Như vậy có thể thấy cấu trúc thuật tốn YOLO được chia ra rất rõ ràng bao gồm hai thành phần là mạng CNN và các Extra Layers để dự đốn. Vì thế để tìm hiểu thuật tốn chúng tơi sẽ đi qua khái niệm mạng CNN và các nhiệm vụ của từng lớp Extra Layers.
2.5. Mạng nơ ron tích chập - Convolutional Neural Network 2.5.1. Khái niệm 2.5.1. Khái niệm
Mạng nơ ron tích chập là một trong những mạng truyền thẳng đặc biệt. Mạng nơ ron tích chập là một mơ hình học sâu phổ biến và tiên tiến nhất hiện nay. Hầu hết các hệ thống nhận diện và xử lý ảnh hiện nay đều sử dụng mạng nơ ron tích chập vì tốc độ xử lý nhanh và độ chính xác cao. Trong mạng nơ ron truyền thống, các tầng được coi là một chiều, thì trong mạng nơ ron tích chập, các tầng được coi là 3 chiều, gồm: Chiều cao, chiều rộng và chiều sâu. Mạng nơ ron tích chập có hai khái niệm quan trọng: Kết nối cục bộ và chia sẻ tham số. Những khái niệm này góp phần giảm số lượng trọng số cần được huấn luyện, do đó tăng nhanh được tốc độ tính tốn.[1]
2.5.2. Mơ hình mạng nơ rơn tích chập
Có ba tầng chính để xây dựng kiến trúc cho một mạng nơ ron tích chập: Tầng tích chập (Convolulion Layer) ; tầng gộp (Pooling Layer); tầng được kết nối đầy đủ (Fully- connected Layer). Ở các mạng nơ ron tích chập, tầng kết nối đầy đủ giống như các mạng nơ ron thông thường, và tầng chập thực hiện tích chập nhiều lần trên tầng trước. Tầng gộp có thể làm giảm kích thước mẫu trên từng khối 2x2 của tầng trước đó. Các lớp này liên kết với nhau theo một thứ tự nhất định. Thông thường, một ảnh sẽ được lan truyền qua tầng tích chập, sau đó ma trận tính tốn được sẽ lan truyền qua tầng gộp, bộ đơi tầng tích chập và tầng gộp có thể được lặp lại nhiều lần trong mạng. Và cuối cùng được lan truyền qua tầng kết nối đầy đủ để tính xác xuất ảnh đó chứa vật thể gì.[1]
35
Hình 2.17. Kiến trúc mạng CNN 2.5.3. Tầng tích chập (Convolutional layer)
Tầng tích chập (Convolutional Layer) là lớp quan trọng nhất cũng là lớp đầu tiên của mơ hình mạng CNN. Tầng này có chức năng chính là trích xuất các đặc trưng có tính khơng gian hiệu quả của ảnh bao gồm góc cạnh, màu sắc hoặc đặc trưng phức tạp hơn như kết cấu của ảnh. Trong tầng này có 4 đối tượng chính là: ma trận đầu vào, bộ Filters (ma trận tích chập), và Receptive Field (ma trận tương ứng ) , Feature Map.
36 Tầng tích chập này nhận đầu vào là một ma trận ba chiều và một bộ Filters. Bộ Filters này sẽ trượt qua từng vị trí trên bức ảnh để tính tích chập giữa bộ Filter và phần tương ứng trên bức ảnh. Phần tương ứng này trên bức ảnh gọi là Receptive Field, tức là vùng mà một nơ ron có thể nhìn thấy để đưa ra quyết định, và ma trận cho ra bởi quá trình này được gọi là Feature Map.
Vì bộ Filter qt qua tồn bộ bức ảnh, nên những đặc trưng này có thể nằm ở vị trí bất kì trong bức ảnh, cho dù ảnh bị xốy trái/phải thì những đặc trưng này vẫn bị phát hiện. Kích thước Filter của tầng tích hầu hết đều là số lẻ, ví dụ như 3x3 , 5x5 hoặc 7x7 . Với kích thước Filter lẻ, các giá trị của Feature Map sẽ xác định một tâm điểm ở tầng phía trước.[1]
Hình 2.19. Tích chập ma trận 2.5.4. Tầng gộp
Tuy đã sử dụng các mạng được kết nối cục bộ và chia sẻ tham số, tuy nhiên số lượng tham số trong mạng nơ ron vẫn là quá lớn. So với một tập dữ liệu tương đối nhỏ, nó có thể gây ra tình trạng quá khớp. Vì vậy, mạng nơ ron nhân tạo thường chèn các tầng gộp vào mạng. Tầng gộp (Pooling Layer) sẽ giảm kích cỡ của hình ảnh ngay sau khi thực hiện tích chập, giúp giữ lại các đặc điểm, tính chất nổi bật nhất của ảnh. Điều này cho phép cải thiện thời gian tính tốn trong mạng nơ ron, đồng thời khơng làm mất đi các đặc điểm quan trọng của ảnh.
37 Tầng gộp áp dụng lấy mẫu xuống cho tầng trước bằng cách sử dụng hàm max. Tầng gộp hoạt động độc lập trên mỗi tầng trước đó. Ngồi ra, có thể đặt lượng pixel khi YOLO di chuyển cửa sổ trượt hoặc bước nhảy, như làm với tầng tích chập.
Hình 2.20. Tầng gộp
Ở hình 2.15, kích thước cửa sổ trượt là 2x2 và bước nhảy mỗi lần trượt là 2. Tại mỗi cửa sổ, hàm max (tìm giá trị lớn nhất) sẽ lấy giá trị tối đa để đại diện cho giá trị của tầng tiếp theo. Các mạng nơ ron thường sử dụng kích thước cửa sổ cùng kích thước bước nhảy trong gộp chung và sử dụng kích thước cửa sổ cùng kích thước bước nhảy là 2 trong gộp nhóm, vì nếu tăng kích cỡ cửa sổ sẽ rất dễ làm mất các đặc tính của dữ liệu. Ngồi việc gộp sử dụng hàm max, người ta có thể sử dụng các hàm khác. Ví dụ người ta có thể sử dụng hàm tính trung bình của cửa sổ trượt để tính tốn giá trị cho tầng tiếp theo, được gọi là gộp trung bình.[1]
2.5.5. Tầng kết nối đầy đủ
Tầng thứ ba là tầng kết nối đầy đủ. Tầng này giống như mạng nơ ron truyền thống: các nơ ron ở tầng trước sẽ kết nối với một nơ ron ở tầng tiếp theo và tầng cuối cùng là đầu ra. Để có thể đưa hình ảnh từ những tầng trước vào, dữ liệu phải dàn phẳng ra thành một véc tơ nhiều chiều. Cuối cùng là sử dụng hàm Softmax để thực hiện phân loại đối tượng.
38
Hình 2.21. Tầng kết nối đầy đủ 2.5.6. Vấn đề đầu vào của mạng
Với cấu trúc mạng nơ ron tích chập chặt chẽ thì u cầu đầu vào mạng cũng phải phù hợp với cấu hình mạng. Mạng nơ ron tích chập có rất nhiều cấu hình mạng nhưng số lượng cấu hình mạng mơ hình YOLO lại bị giới hạn. Hiện tại, YOLO đang hỗ trợ hai đầu vào chính là 416x416 và 608x608. Mỗi một đầu vào sẽ có một thiết kế các tầng riêng biệt phù hợp với cấu hình đầu vào. Vì thế các bức ảnh trước khi đi vào mơ hình sẽ được qua bước tiền xử lý để chỉnh sửa độ tương phản, đưa tỷ lệ của bức ảnh hiện tại về tỷ lệ phù hợp với cấu hình mạng.
2.6. Nhiệm vụ các lớp Extra Layers
2.6.1. Đầu ra của mạng nơ ron tích chập
Với cấu trúc phức tạp của mạng nơ ron tích chập, thực hiện tính tốn qua nhiều tầng lớp, đầu ra của mơ hình là một yếu tố rất quan trọng cần được nguyên cứu. Theo trình bày các bước thực hiện xây dựng cấu trúc mạng ở trên, các bức ảnh được vào mơ hình mạng,