phần mở đầu, kết luận, danh mục các từ viết tắt, danh mục bảng biểu, danh mục hình ảnh, danh mục tài liệu tham khảo, luận văn gồm có 3 chƣơng: 3 Chƣơng 1: Cơ sở lý thuyết Chƣơng 2: Thuật toán phát hiện đối tƣợng, Công cụ Tesseract OCR Chƣơng 3: Xây dựng ứng dụng nhận diện biển số xe 4 CHƢƠNG 1: CƠ SỞ LÝ THUYẾT Trong khoảng vài năm trở lại đây sự bùng nổ của Artificial Intelligence (Trí tuệ nhân tạo) hay cụ thể hơn là Machine Learning (Máy học) và Deep Learning, Big Data đã giúp con ngƣời giải quyết đƣợc rất nhiều bài toán khó và đang tạo ra những bƣớc đột phá mới trong lĩnh vực công nghệ thông tin. Trong chƣơng này, tôi sẽ trình bày một số cơ sở lý thuyết, khái niệm cũng nhƣ các nghiên cứu liên quan tới bài toán Phát hiện đối tƣợng bằng phƣơng pháp học sâu. GIỚI THIỆU TỔNG QUAN Machine Learning là một lĩnh vực của Trí tuệ nhân tạo, liên quan tới việc nghiên cứu và xây dựng các thuật toán, mô hình cho phép các hệ thống có khả năng "học" tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Nếu nhƣ trƣớc kia, để giải quyết vấn đề, con ngƣời sử dụng dòng code để đƣa những chỉ thị, hành động cụ thể cho máy tính thực hiện, thì nay chỉ với dữ liệu và các thuật toán, máy tính đƣợc huấn luyện và có thể tự mình đƣa ra những quyết định hoặc dự đoán từ quá trình học hỏi.
Phƣơng pháp này đƣa ra kết quả nhanh, chính xác và hiệu quả, thậm chí còn tốt hơn con ngƣời rất nhiều nhờ áp dụng các thuật toán để phân tích, thống kê từ hàng trăm, hàng nghìn dữ liệu. Tóm lại, Machine Learning là quá trình dạy máy tính có khả năng học hỏi để hoàn thành một nhiệm vụ mà không cần kỹ thuật lập trình phức tạp. Machine Learning là ngành rất rộng về toán, gồm rất nhiều thuật toán và mỗi thuật toán có ứng dụng riêng tùy vào bài toán: • Linear Regression. • Decision Tree và Random Forest.
• Support Vector Machines. • Principal Component Analysis (PCA). Trong số đó, Deep Learning đƣợc bắt nguồn từ thuật toán Neural Network, một trong những thuật toán lấy cảm hứng từ cấu trúc bộ não con ngƣời để xử lý dữ liệu. Dù chỉ là một ngành nhỏ của Machine Learning nhƣng sự phát triển cùng khả năng tính toán vƣợt trội của máy tính và lƣợng dữ liệu khổng lồ mà con ngƣời tạo ra, những ứng dụng của Deep Learning đã và đang tạo ra những bƣớc đột phá thực sự lớn.1: Mối quan hệ giữa AI, Machine Learning và Deep Learning 1.
THỊ GIÁC MÁY TÍNH (COMPUTER VISION) Thị giác máy tính (Computer Vision) là một trong những ứng dụng nổi bất nhất của Deep Learning. 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 và, nói chung là dữ liệu đa chiều từ thế giới thực để cho ra các thông tin số hoặc biểu tƣợng. Một số kỹ thuật phổ biến trong Thị giác máy tính gồm: • Nhận diện vật thể (Object Recognition): là một kỹ thuật liên quan đến việc nhận dạng, xác định và định vị các đối tƣợng trong một bức ảnh với một mức độ tin cậy nhất định. 6 • Phân loại hình ảnh (Image Classification): là một kỹ thuật liên quan đến việc dự đoán lớp của một đối tƣợng trong một hình ảnh.
• Định vị vật thể (Object Localization): là một kỹ thuật xác định vị trí của một hoặc nhiều đối tƣợng trong một hình ảnh và vẽ bounding box xung quanh chúng. • Phát hiện đối tƣợng (Object Detection): là một kỹ thuật kết hợp phân loại hình ảnh và định vị vật thể cho một hoặc nhiều đối tƣợng trong hình ảnh. • Phân đoạn đối tƣợng (Object Segmentation): là một kỹ thuật nhận dạng đối tƣợng bằng cách nổi bật các pixel cụ thể của đối tƣợng thay vì bounding box. • Chú thích ảnh (Image Captioning): là một kỹ thuật kết hợp giữa Computer Vision (thị giác máy tính) và NLP (Xử lý ngôn ngữ tự nhiên), Dựa trên một hình ảnh làm dữ liệu đầu vào, chú thích ảnh tạo ra văn bản ngắn gọn mô tả nội dung của bức ảnh đó.2: Sơ đồ các mối liên hệ giữa các tác vụ trong Computer Vision 1.
PHÁT HIỆN ĐỐI TƢỢNG (OBJECT DETECTION) Phát hiện đối tƣợng (Object Detection) là một thuật ngữ chung để mô tả một tập hợp các nhiệm vụ thị giác máy tính có liên quan liên quan đến việc 7 xác định các đối tƣợng trong ảnh kỹ thuật số. Phát hiện đối tƣợng kết hợp hai nhiệm vụ gồm phân loại hình ảnh (Image Classification) và định vị vật thể (Object Localization). Trong đó, ta có thể phân loại các kỹ thuật trên nhƣ sau: • Phân loại hình ảnh (Image Classification): Dự đoán nhãn của một đối tƣợng trong một hình ảnh. o Đầu vào: Một hình ảnh với một đối tượng, chẳng hạn như một bức ảnh.
o Đầu ra: Nhãn lớp (ví dụ: một hoặc nhiều số nguyên được ánh xạ tới nhãn lớp). • Định vị đối tƣợng (Object Localization): 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. o Đầu vào: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh. o Đầu ra: Một hoặc nhiều bounding box được xác định bởi tọa độ tâm, chiều rộng và chiều cao.
• 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. o Đầu vào: Một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh. o Đầu ra: Một hoặc nhiều bounding box và nhãn cho mỗi bounding box.3: Ví dụ về phát hiện đối tƣợng Thuật toán Object Detection bao gồm 2 nhóm chính: • Two-stage: bao gồm họ các mô hình R-CNN [6] (Region-Based Convolutional Neural Networks), Mask R-CNN… Gọi là two-stage vì model sẽ thực hiện 2 phần gồm trích chọn (extract) các vùng trên ảnh có khả năng chứa đối tƣợng dựa vào các anchor box, sau đó sẽ thực hiện tiếp phân loại đối tƣợng và xác định vị trí nhờ vào việc chia làm 2 nhánh tại phần cuối của mô hình (Object Classification và Bounding Box Regression). Các mô hình này đƣợc dùng để giải quyết các bài toán định vị và nhận diện vật thể tĩnh (hình ảnh) do yêu cầu cao về độ chính xác nhƣng không yêu cầu quá cao về tốc độ.
• One-stage hay còn gọi là single-stage: Bao gồm các mô hình Restina, YOLO (You Only Look Once), SSD (Single Shot MultiBox Detector),. Gọi là one-stage vì model sẽ không có phần trích chọn các vùng đặc trƣng nhƣ two-stage. Các mô hình one-stage sẽ coi việc phát hiện đối tƣợng nhƣ một bài toán hồi quy và dựa trên pre-define box hay còn gọi là anchor để phát hiện đối tƣợng. Các mô hình one-stage thƣờng có tốc độ nhanh hơn tuy nhiên độ chính xác thƣờng kém hơn so với two-stage và thƣờng đƣợc dùng để nhận dạng đối tƣợng, đặc biệt là các đối tƣợng real time.4: So sánh sự khác nhau của mô hình one-stage và two-stage 9 1.
MẠNG NƠ-RON Mạng nơ-ron là một phƣơng thức trong lĩnh vực trí tuệ nhân tạo, đƣợc sử dụng để dạy máy tính xử lý dữ liệu theo cách đƣợc lấy cảm hứng từ bộ não con ngƣời. Lớp đầu tiên bên trái thể hiện cho mạng đầu 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 nơ-ron 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.5: Mối quan hệ giữa đầu vào và đầu ra của một node Node ở hình 1.5 có đầu vào là X1, X2, trọng số w1, w2.
Đầu 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 nơ- ron. 10 Các hàm phi kích hoạt thƣờng đƣợc sử dụng là: Sigmoid: Giá trị đầu 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 đầu ra có giá trị bằng 1 khi đầu vào lớn và đầu ra bằng 0 khi đầu vào bằng 1. Ở thời gian đầu hàm sigmoid rất đƣợc sử dụng rất rộng rãi, 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ỏ. 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ị đầu 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 đó, đầu ra bằng 1 khi đầu vào lớn và đầu ra bằng -1 khi đầu 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ị đầu vào quá lớn hoặc quá nhỏ của sigmoid.6: Đồ thị hàm sigmoid (a) và hàm tanh (b)[3] 11 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). Hàm ReLU loại bỏ các giá trị âm, việc hội tụ cũng diễn ra nhanh hơn khi không còn bị bão hòa ở hai đầu nhƣ hàm Sigmoid và hàm Tanh. Tuy nhiên, với các giá trị âm nhỏ gần 0, việc giữ lại đạo hàm vẫn có giá trị khi lấy Gradient, nhƣng lại bị triệt tiêu gây ra hiện tƣợng ―Dying ReLU‖. Để khắc phục việc đó, hàm Leaky ReLU ra đời và là biến thể của ReLU: F(x) = 1(x < 0)(αx) + 1(x >= 0)(x) các giá trị âm lớn gần nhƣ xấp xỉ bằng 0 trong khi các giá trị âm nhỏ vẫn mang giá trị khi đạo hàm.
Nhƣng cả hai hàm ReLU và Leaky ReLU lại không có đạo hàm tại 0.7: Đồ thị hàm ReLU [3] Hình 1.8: Đồ thị hàm Leaky ReLU 12 Mish: Mish là hàm kích hoạt đƣợc sử dụng trong YOLOv4.