BÀI 01 - THUẬT TOÁN OBJECT DETECTION
-
Object Detection là gì?
-
Object Detection ( Phát hiện đối tượng) là một kỹ thuật thị giác máy tính hoạt động để xác định và định vị các đối tượng trong một hình ảnh hoặc video. Cụ thể, phát hiện đối tượng vẽ các hộp giới hạn xung quanh các đối tượng được phát hiện này, cho phép chúng tôi xác định vị trí các đối tượng đã nói đang ở (hoặc cách chúng di chuyển qua) một cảnh nhất định.
-
Object Detection thường bị nhầm lẫn với Image Recognition ( Nhận dạng hình ảnh). Image Recognition là gán nhãn cho hình ảnh. Hình ảnh một vật thể được gắn nhãn tên vật thể đó. Một bức ảnh của hai vật thể, vẫn nhận được nhãn có tên vật thể được gán ban đầu.Mặt khác, Object Detection, nhận diện một đối tượng bên trong khung hình và gán tên cho vật thể đó. Mô hình dự đoán vị trí của từng đối tượng và nhãn nào nên được áp dụng. Theo cách đó Object Detection cung cấp nhiều thông tin về hình ảnh hơn là Image Recognition.
Hình 1: Ví dụ về cách phân biệt này trong thực tế
-
Modes & Types of Object Detection
-
Object detection (phát hiện đối tượng) được chia thành 2 cách: Machine learning-based approaches (tiếp cận dựa trên học máy) và Deep learning-based approaches (tiếp cận dựa trên học sâu).
-
Machine learning-based approaches: các kỹ thuật thị giác máy tính được sử dụng để xem xét các đặc điểm khác nhau của hình ảnh, chẳng hạn như biểu đồ màu hoặc các cạnh, để xác định các nhóm pixel có thể thuộc về một đối tượng. Các tính năng này sau đó được đưa vào một mô hình hồi quy dự đoán vị trí của đối tượng cùng với nhãn của nó.
-
Deep learning-based approaches: sủ dụng thuật toán Convolutional Neural Network (mạng nơ-ron phức hợp) để thực hiện phát hiện đối tượng từ đầu đến cuối, không được giám sát, trong đó các tính năng không cần phải được xác định và trích xuất riêng biệt.
-
Thuật toán CNN – Convolutional Neural Network
-
Convolutional Neural Network (CNN – Mạng nơ-ron phức hợp) là một trong những mô hình Deep Learning tiên tiến. CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh Nó giúp xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay.
-
Cấu trúc mạng CNN:
-
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo.
-
Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo.
-
Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer). Còn trong mô hình CNN thì ngược lại. Các layer liên kết được với nhau thông qua cơ chế convolution.
-
Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó.
-
Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu).
-
Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNN sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng để phân lớp ảnh.
Hình 2: Mô hình CNN
-
Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể.
-
Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter.
-
Đó là lý do tại sao CNN cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người nhận biết các vật thể trong tự nhiên.
-
CÁCH OBJECT DETECTION HOẠT ĐỘNG
-
Cấu trúc cơ bản
-
Object Detection dựa trên Deep Learning có 2 phần. Một bộ mã hóa lấy một hình ảnh làm đầu vào và chạy nó qua một loạt các khối và lớp học cách trích xuất các tính năng thống kê được sử dụng để định vị và gắn nhãn các đối tượng. Kết quả đầu ra từ bộ mã hóa sau đó được chuyển đến bộ giải mã , bộ giải mã này dự đoán các hộp và nhãn giới hạn cho từng đối tượng.
-
Bộ giải mã đơn giản nhất là một bộ hồi quy thuần túy. Bộ hồi quy được kết nối với đầu ra của bộ mã hóa và dự đoán trực tiếp vị trí và kích thước của từng hộp giới hạn. Đầu ra của mô hình là cặp tọa độ X, Y cho đối tượng và phạm vi của nó trong ảnh. Mặc dù đơn giản, nhưng loại mô hình này có giới hạn. Ta cần xác định số lượng hộp trước thời hạn. Nếu hình ảnh có hai vật thể, nhưng mô hình của chỉ được thiết kế để phát hiện một đối tượng duy nhất, một vật thể sẽ không được gắn nhãn. Tuy nhiên, nếu biết trước số lượng đối tượng bạn cần dự đoán trong mỗi hình ảnh, các mô hình dựa trên hồi quy thuần túy có thể là một lựa chọn tốt.
-
Một phần mở rộng của phương pháp hồi quy là mạng đề xuất vùng (region proposal network) . Trong bộ giải mã này, mô hình đề xuất các vùng của hình ảnh mà nó tin rằng một đối tượng có thể cư trú. Các pixel thuộc các vùng này sau đó được đưa vào một mạng con phân loại để xác định nhãn (hoặc từ chối đề xuất). Sau đó, nó chạy các pixel chứa các vùng đó thông qua một mạng phân loại. Lợi ích của phương pháp này là một mô hình linh hoạt, chính xác hơn có thể đề xuất số lượng vùng tùy ý có thể chứa một hộp giới hạn. Tuy nhiên, độ chính xác được bổ sung đi kèm với cái giá phải trả là hiệu quả tính toán.
-
Tổng quan kiến trúc mô hình
-
Lớp các mô hình họ R-CNN
-
R-CNN (regions with CNN features) là lớp các mô hình xác định vùng đặc trưng dựa trên các mạng CNN. Lớp các mô hình này gồm 3 mô hình chính là R-CNN, Fast R-CNN và Faster-RCNN được thiết kế cho các nhiệm vụ định vị vật thể và nhận diện vật thể.
-
R-CNN (2014)
-
Kiến trúc của R-CNN gồm 3 thành phần đó là:
-
Vùng đề xuất hình ảnh (Region proposal): Có tác dụng tạo và trích xuất các vùng đề xuất chứa vật thể được bao bởi các bounding box.
-
Trích lọc đặc trưng (Feature Extractor): Trích xuất các đặc trưng giúp nhận diện hình ảnh từ các region proposal thông qua các mạng deep convolutional neural network.
-
Phân loại (classifier): Dựa vào input là các features ở phần trước để phân loại hình ảnh chứa trong region proposal về đúng nhãn.
-
Kiến trúc của mô hình được mô tả trong biểu đồ bên dưới:
Hình 3: Sơ đồ pipeline xử lý trong mô hình mạng R-CNN
-
Một kỹ thuật được sử dụng để đề xuất các region proposal hoặc các bounding box chứa các đối tượng tiềm năng trong hình ảnh được gọi là “selective search”, các region proposal có thể được phát hiện bởi đa dạng những thuật toán khác nhau. Nhưng điểm chung là đều dựa trên tỷ lệ IoU giữa bounding box và ground truth box mà bạn đọc sẽ được tìm hiểu ở bài viết tiếp theo giới thiệu về mạng SSD.
-
Trích xuất đặc trưng về bản chất là một mạng CNN học sâu, ở đây là AlexNet, mạng đã giành chiến thắng trong cuộc thi phân loại hình ảnh ILSVRC-2012. Đầu ra của CNN là một vectơ 4096 chiều mô tả nội dung của hình ảnh được đưa đến một mô hình SVM tuyến tính để phân loại.
-
Đây là một ứng dụng tương đối đơn giản và dễ hiểu của CNN đối với vấn đề object localization và object detection. Một nhược điểm của phương pháp này là chậm, đòi hỏi phải vượt qua nhiều module độc lập trong đó có trích xuất đặc trưng từ một mạng CNN học sâu trên từng region proposal được tạo bởi thuật toán đề xuất vùng chứa ảnh. Đây là một vấn đề chính cần giải quyết vì bài viết mô tả mô hình hoạt động trên khoảng 2000 vùng được đề xuất cho mỗi hình ảnh tại thời điểm thử nghiệm.
-
Fast R-CNN (2015)
-
Điểm đột phá của Fast R-CNN là sử dụng một single model thay vì pipeline để phát hiện region và classification cùng lúc.
-
Kiến trúc của mô hình trích xuất từ bức ảnh một tập hợp các region proposals làm đầu vào được truyền qua mạng deep CNN. Một pretrained-CNN, chẳng hạn VGG-16, được sử dụng để trích lọc features. Phần cuối của deep-CNN là một custom layer được gọi là layer vùng quan tâm (Region of Interest Pooling-RoI Pooling) có tác dụng trích xuất các features cho một vùng ảnh input nhất định.
Hình 4: Kiến trúc single moel Fast R-CNN
-
Sau đó các features được kết bởi một lớp fully connected. Cuối cùng mô hình chia thành hai đầu ra, một đầu ra cho dự đoán nhãn thông qua một softmax layer và một đầu ra khác dự đoán bounding box (kí hiệu là bbox) dựa trên hồi qui tuyến tính. Quá trình này sau đó được lặp lại nhiều lần cho mỗi vùng RoI trong một hình ảnh.Kiến trúc của mô hình được tóm tắt trong hình 4.
-
Mô hình này nhanh hơn đáng kể cả về huấn luyện và dự đoán, tuy nhiên vẫn cần một tập hợp các region proposal được đề xuất cùng với mỗi hình ảnh đầu vào.
-
Faster R-CNN (2016)
-
Kiến trúc được thiết kế để đề xuất và tinh chỉnh các region proposals như là một phần của quá trình huấn luyện, được gọi là mạng đề xuất khu vực (Region Proposal Network), hoặc RPN. Các vùng này sau đó được sử dụng cùng với mô hình Fast R-CNN trong một thiết kế mô hình duy nhất. Những cải tiến này vừa làm giảm số lượng region proposal vừa tăng tốc hoạt động trong thời gian thử nghiệm mô hình lên gần thời gian thực với hiệu suất tốt nhất. Tốc độ là 5fps trên một GPU.
Hình 5: Kiến trúc mô hình Faster R-CNN
-
Mặc dù là một mô hình đơn lẻ duy nhất, kiến trúc này là kết hợp của hai modules:
-
Mạng đề xuất khu vực (Region Proposal Network, viết tắT là RPN). Mạng CNN để đề xuất các vùng và loại đối tượng cần xem xét trong vùng.
-
Fast R-CNN: Mạng CNN để trích xuất các features từ các region proposal và trả ra các bounding box và nhãn.
-
Cả hai modules hoạt động trên cùng một output của một mạng deep CNN. Mạng RPN hoạt động như một cơ chế attention cho mạng Fast R-CNN, thông báo cho mạng thứ hai về nơi cần xem hoặc chú ý.
-
Kiến trúc của mô hình được tổng kết thông qua sơ đồ hình 5.
-
RPN hoạt động bằng cách lấy đầu ra của một mạng pretrained deep CNN, chẳng hạn như VGG-16, và truyền feature map vào một mạng nhỏ và đưa ra nhiều region proposals và nhãn dự đoán cho chúng. Region proposals là các bounding boxes, dựa trên các anchor boxes hoặc hình dạng được xác định trước được thiết kế để tăng tốc và cải thiện khả năng đề xuất vùng. Dự đoán của nhãn được thể hiện dưới dạng nhị phân cho biết region proposal có xuất hiện vật thể hoặc không.
-
Một quy trình huấn luyện xen kẽ được sử dụng trong đó cả hai mạng con được đào tạo cùng một lúc. Điều này cho phép các tham số trong feature dectector của deep CNN được tinh chỉnh cho cả hai tác vụ cùng một lúc (CÒN TIẾP)