Thị giác máy tính

Một phần của tài liệu Nghiên cứu và đánh giá phương pháp phát hiện phương tiện giao thông trong không ảnh (khóa luận tốt nghiệp) (Trang 25)

2.1.1. Giới thiệu

Thị giác máy tính (Computer Vision) là một lĩnh vực cho phép máy tính lấy thông tin có nghĩa từ hình ảnh, video… và thực hiện hành động hoặc đưa ra đề xuất dựa trên thông tin đó. Nếu như Trí tuệ nhân tạo (Artificial Intelligence) cho phép máy tính suy nghĩ thì Thị giác máy tính cho phép chúng nhìn, quan sát và hiểu.

Thị giác máy tính hoạt động giống như thị giác của con người. Thị giác của con người có lợi thế về thời gian tồn tại để huấn luyện cách phân biệt các vật thể, chúng ở khoảng cách bao xa, chúng có đang chuyển động hay không và liệu có điều gì đó sai trong ảnh hay không. Thị giác máy tính huấn luyện máy móc thực hiện những chức năng này nhưng nó phải làm điều đó trong thời gian ngắn hơn bằng dữ liệu và thuật toán bởi một hệ thống được huấn luyện để kiểm tra sản phẩm hoặc theo dõi dây chuyền sản xuất có thể phân tích hàng nghìn sản phẩm hoặc quy trình mỗi phút, nhận thấy các lỗi hoặc vấn đề không thể nhìn thấy. Nó có thể nhanh chóng vượt qua khả năng của con người.

2.1.2. Một số bài toán nổi bật

Một số bài toán phổ biến trong lĩnh vực Computer Vision:

• Phân loại ảnh (Image classification): là một bài toán với mục đích dự đoán lớp của đối tượng trong ảnh.

• Định vị đối tượng (Object localization): là một bài toán với mục đích xác định vị trí của một hoặc nhiều đối tượng trong ảnh và vẽ bounding box xung quanh đối tượng.

9

• Phát hiện đối tượng (Object detection): là một bài toán kết hợp giữa phân loại ảnh và định vị đối tượng, cụ thể là xác định vị trí, vẽ bounding box cho một hoặc nhiều đối tượng trong ảnh và cho biết chúng thuộc lớp nào.

• Truy vết đối tượng (Video object tracking): là một bài toán với mục đích xác định vị trí của một hoặc nhiều đối tượng trong mỗi khung hình (frame) của video.

2.2. Phát hiện đối tượng 2.2.1. Giới thiệu 2.2.1. Giới thiệu

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 đến việc 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 bài toán Phân loại ảnh và Định vị đối tượng và thực hiện cho một hoặc nhiều đối tượng trong ảnh. Ta có thể phân biệt 3 bài toán trên thông qua đầu vào và đầu ra của chúng như sau:

• Phân loại ảnh: dự đoán lớp của đối tượng trong ảnh.

o Đầu vào: Một ảnh với một đối tượng.

o Đầu ra: Nhãn lớp của đối tượng.

• Định vị đối tượng: Xác định vị trí 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 ảnh có một hoặc nhiều đối tượng.

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í của các đối tượng bằng bounding box và cho biết nhãn của các đối tượng đó trong ảnh.

o Đầu vào: Một ảnh có một hoặc nhiều đối tượng.

10

Hình 2.1 Ví dụ phân biệt 3 bài toán của Computer Vision. 1

2.2.2. Phân loại

Các phương pháp giải quyết bài toán Phát hiện đối tượng được chia thành 2 nhóm chính:

• Phương pháp phát hiện đối tượng 1 giai đoạn (one-stage/single-stage object detection/detector): Đây là phương pháp mà trong việc thiết kế mô hình không có phần trích xuất các vùng có khả năng chứa đối tượng (RoI) như RPN của Faster-RCNN. Các mô hình 1 giai đoạn xem việc định vị đối tượng như 1 bài toán regression (với 4 thông số, ví dụ như x, y, w, h) và cũng dựa trên các anchor để phát hiện đối tượng. Các mô hình loại này thường nhanh nhưng độ chính xác lại kém hơn phương pháp 2 giai đoạn và thường được dùng để nhận dạng đối tượng. Mô hình tiêu biểu: You Only Look Once (YOLO), Single Shot MultiBox Detector (SSD), RetinaNet…

• Phương pháp phát hiện đối tượng 2 giai đoạn (two-stage object detection/detector): Đây là phương pháp mà mô hình sẽ thực hiện 2 phần gồm trích xuất 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ô 1 Nguồn: https://medium.com/zylapp/review-of-deep-learning-algorithms-for-object-detection-c1f3d437b852

11

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 độ. Mô hình tiêu biểu: Region-Based Convolutional Neural Networks (Các mô hình thuộc họ R-CNN).

2.3. Phương pháp rút trích đặc trưng dựa trên học sâu 2.3.1. Deep Neural Network 2.3.1. Deep Neural Network

Mạng nơ-ron nhân tạo (Artificial neural network/Deep neural network – ANN/DNN hay Neural network – NN) là một mô hình lấy cảm hứng từ mạng nơ- ron thần kinh, hoạt động theo hướng mô tả hoạt động của hệ thần kinh với các nơ- ron được kết nối với nhau.

Hình 2.2 Nơ-ron sinh học. 2

Một mạng NN gồm 3 tầng:

• Tầng vào (input layer): Là tầng bên trái cùng của mạng, thể hiện cho các đầu vào của mạng.

• Tầng ra (output layer): Là tầng bên phải cùng của mạng, thể hiện cho các đầu ra của mạng.

12

• Tầng ẩn (hidden layer): Là tầng nằm giữa tầng vào và tầng ra, thể hiện cho việc suy luận logic của mạng.

a) Mạng NN với 1 tầng ẩn b) Mạng NN với 2 tầng ẩn

Hình 2.3 Kiến trúc Neural Network. 2

Trong mạng NN, mỗi nút là một sigmoid nơ-ron nhưng hàm kích hoạt của chúng có thể khác nhau. Tuy nhiên trong thực tế người ta thường để chúng cùng dạng với nhau để tính toán cho thuận lợi. Ở mỗi tầng, số lượng các nút mạng (nơ- ron) có thể khác nhau tuỳ thuộc vào bài toán và cách giải quyết. Nhưng khi làm việc, người ta thường để các tầng ẩn có số lượng nơ-ron bằng nhau. Ngoài ra, các nơ-ron ở các tầng thường được liên kết đôi một với nhau tạo thành mạng kết nối đầy đủ (fully-connected network).

13

2.3.2. Convolutional Neural Network 2.3.2.1. Giới thiệu 2.3.2.1. Giới thiệu

Mạng nơ-ron tích chập (Convolutional neural network – CNN) là một trong những mô hình học sâu (Deep learning) tiên tiến. Mỗi ảnh đầu vào của mạng CNN sẽ được truyền qua các lớp Convolution với các bộ lọc (Kernels), lớp Pooling, các lớp được kết nối đầy đủ (fully connected – FC) và áp dụng hàm Softmax để phân loại đối tượng với xác suất trong khoảng từ 0 đến 1.

Hình 2.5 Convolutional Neural Network. 3

2.3.2.2. Convolution layer

Lớp tích chập là lớp đầu tiên trích xuất các đặc trưng từ ảnh đầu vào. Lớp tích chập duy trì mối quan hệ giữa các pixel thông qua việc học các đặc trưng của ảnh bằng cách sử dụng các ô vuông nhỏ của dữ liệu đầu vào. Nó là 1 phép toán có 2 đầu vào là ma trận ảnh với 1 bộ lọc và đầu ra là ma trận được gọi là Feature map.

Hình 2.6 Ví dụ đầu vào của Convolution layer. 4

3 Nguồn: https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5- way-3bd2b1164a53?gi=73bc5b09bc63

14

Hình 2.7 Ví dụ minh họa quá trình hoạt động của Convolution layer. 4

2.3.2.3. Pooling layer

Lớp pooling thường được sử dụng ngay sau lớp convolution để làm giảm kích thước của mỗi feature map nhưng vẫn giữ lại thông tin quan trọng. Lớp pooling có thể có nhiều loại khác nhau như:

• Max Pooling: Lấy giá trị lớn nhất từ mỗi mẫu con của feature map. • Average Pooling: Lấy giá trị trung bình từ mỗi mẫu con của feature

map.

• Sum Pooling: Lấy tổng của các giá trị trong mỗi mẫu con của feature map.

15

2.3.2.4. Fully connected layer

Fully connected là cách kết nối phổ biến trong NN mà lớp phía sau kết nối đầy đủ với lớp phía trước của nó. Trong CNN, fully connected layer thực hiện duỗi ma trận đầu ra của lớp pooling trước đó thành vector đặc trưng. Cuối cùng, ta có một hàm kích hoạt như softmax hoặc sigmoid để phân loại đầu ra.

2.3.3. Residual Network 2.3.3.1. Giới thiệu 2.3.3.1. Giới thiệu

Khi xây dựng mạng CNN với nhiều lớp convolution sẽ xảy ra hiện tượng Vanishing Gradient dẫn tới kết quả học không tốt và ResNet (Residual Network) [10] đã được phát triển để giải quyết vấn đề đó.

ResNet đã giành vị trí thứ nhất trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi chỉ 3.57%. Không những thế, nó còn đứng đầu trong cuộc thi ILSVRC and COCO 2015 với ImageNet Detection, ImageNet localization, Coco detection và Coco segmentation. Hiện tại, có rất nhiều biến thể của kiến trúc ResNet với số lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152... các biến thể được đặt tên là ResNet theo sau là một số chỉ số lớp nhất định.

2.3.3.2. Vanishing Gradient

Backpropagation Algorithm (lan truyền ngược) là một kỹ thuật thường được sử dụng trong quá trình huấn luyện. Ý tưởng chung của thuật toán này là sẽ đi từ output layer đến input layer và tính toán gradient của cost function tương ứng cho từng parameter (weight) của mạng. Gradient Descent sau đó được sử dụng để cập nhật các parameter đó. Toàn bộ quá trình trên sẽ được lặp đi lặp lại cho tới khi các parameter của mạng được hội tụ. Thông thường chúng ta sẽ có một hyperparameter (số Epoch – số lần mà training set được duyệt qua một lần và weight được cập nhật) định nghĩa cho số lượng vòng lặp để thực hiện quá trình này. Nếu số lượng vòng lặp quá nhỏ thì ta gặp phải trường hợp mạng có thể sẽ không cho ra kết quả tốt, ngược lại, thời gian huấn luyện sẽ lâu nếu số lượng vòng lặp quá lớn.

16

Tuy nhiên, trong thực tế, Gradient thường sẽ có giá trị nhỏ dần khi đi xuống các layer thấp hơn. Dẫn đến kết quả là các cập nhật thực hiện bởi Gradients Descent không làm thay đổi nhiều về weight của các layer đó, làm chúng không thể hội tụ và mạng sẽ không thu được kết quả tốt. Hiện tượng như vậy gọi là Vanishing Gradients.

2.3.3.3. Kiến trúc mạng ResNet

Tương tự với các mạng CNN truyền thống, ResNet [10] gồm có convolution, pooling, fully connected layer. Song, để khắc phục Vanishing Gradient, giải pháp mà ResNet đưa ra là sử dụng kết nối "tắt" đồng nhất để xuyên qua một hay nhiều lớp. Một khối như vậy được gọi là một Residual Block.

Hình 2.8 Residual block. [10]

Trong hình 2.9 xuất hiện một mũi tên cong xuất phát từ đầu và kết thúc tại cuối Residual block nghĩa là sẽ bổ sung đầu vào X vào đầu ra của layer (dấu cộng mà ta thấy trong hình), việc này sẽ chống lại việc đạo hàm bằng 0, do vẫn còn cộng thêm X.

17

Hình 2.9 Mạng CNN truyền thống và mạng ResNet. [10]

2.4. Phương pháp phát hiện đối tượng dựa trên học sâu 2.4.1. Phương pháp phát hiện đối tượng họ R-CNN 2.4.1. Phương pháp phát hiện đối tượng họ R-CNN

Như đã đề cập trước đó, bài toán phát hiện đối tượng là sự kết hợp giữa 2 bài toán Phân loại ảnh và Định vị đối tượng thực hiện cho một hoặc nhiều đối tượng trong ảnh. Vấn đề chính của mô hình CNN truyền thống là không biết trước có bao nhiêu đối tượng trong ảnh để thiết kế được output layer hiệu quả. Vì vậy, nhóm phương pháp thuộc họ R-CNN (Region with CNN feature) ra đời. Nhóm phương pháp này được phát triển bởi Ross Girshick cùng các cộng sự, gồm 3 mô hình chính: R-CNN [11], Fast R-CNN [12] và Faster R-CNN [1].

18

2.4.1.1. R-CNN

Hình 2.10 Kiến trúc của R-CNN. [11] Ý tưởng của R-CNN [11] gồm 2 giai đoạn:

• Giai đoạn 1: Sử dụng thuật toán Selective Search để thu được các vùng đề xuất có khả năng chứa đối tượng (proposal). Trong đó:

o Đầu vào: ảnh màu.

o Đầu ra: khoảng 2000 vùng đề xuất có khả năng chứa đối tượng. • Giai đoạn 2: Với mỗi vùng đề xuất thu được từ giai đoạn 1, xác định

nó là đối tượng nào và vị trí của nó. Cụ thể:

o Các vùng đề xuất thu được từ giai đoạn 1 sẽ được điều chỉnh về cùng kích thước để làm đầu vào cho mạng CNN.

o Mạng CNN này sẽ duỗi các RoI thành các vector đặc trưng.

o Các vector đặc trưng sẽ được đưa vào thuật toán SVM để phân lớp cho đối tượng và regression bounding box để xác định 4 thông số điều chỉnh cho vùng đề xuất khớp với đối tượng.

19

2.4.1.2. Fast R-CNN

Hình 2.11 Kiến trúc của Fast R-CNN. [12]

Tương tự như R-CNN, Fast R-CNN [12] vẫn dùng thuật toán Selective Search để lấy ra các vùng đề xuất. Tuy nhiên, nó không tách 2000 vùng đề xuất ra khỏi ảnh. Fast R-CNN cho cả bức ảnh vào backbone ConvNet để tạo ra feature map. Sau đó các feature map sẽ được đưa qua RoI pooling layer. Tiếp theo, đầu ra của RoI pooling layer được đưa qua các lớp FC để duỗi thành các vector đặc trưng. Cuối cùng, các vector đặc trưng này được đưa vào các lớp fully connected để phân lớp cho đối tượng và regression bounding box để xác định 4 thông số điều chỉnh cho vùng đề xuất khớp với đối tượng.

Fast R-CNN khác với R-CNN là nó tạo ra feature map với cả ảnh sau đó lấy các vùng đề xuất từ feature map, còn R-CNN thực hiện tách các vùng đề xuất ra rồi mới thực hiện CNN trên từng vùng. Vì vậy, Fast R-CNN nhanh hơn nhờ tối ưu việc tính toán bằng Vectorization.

2.4.1.3. Faster R-CNN

Mặc dù Fast R-CNN đã nhanh hơn đáng kể so với R-CNN, song, việc sử dụng thuật toán Selective Search để lấy ra khoảng 2000 vùng đề xuất khiến cho mô hình không thể đạt được tốc độ thời gian thực. Vì vậy, tác giả đã cải tiến bằng cách loại bỏ thuật toán Selective Search để tạo nên mô hình Faster R-CNN [1] đạt được tốc độ gần thời gian thực.

20

Hình 2.12 Kiến trúc của Faster R-CNN. [1]

Faster R-CNN [1] cũng gồm 2 giai đoạn tương tự với R-CNN và Fast- RCNN. Tuy nhiên, thay vì sử dụng Selective Search, Faster R-CNN đề xuất Region Proposal Network (RPN) để thu được các vùng đề xuất có khả năng chứa đối tượng.

21

Region Proposal Network (RPN) là một mạng khá đơn giản, dùng để trích xuất các vùng có khả năng chứa đối tượng. RPN nhận đầu vào là feature map đã được trích xuất từ backbone CNN trước đó. Các cửa sổ trượt trên feature map sẽ được ánh xạ thành vector đặc trưng. Các đặc trưng này được truyền qua classification layer và regression layer để thu được các vùng đề xuất.

Vì không sử dụng Selective Search nên RPN ban đầu cần xác định các anchor box có thể là các proposal, sau đó qua RPN thì chỉ còn những anchor box chắc chắn chứa đối tượng. Như vậy, ta xác định được đầu ra của regression layer và classification layer được đề cập ở trên:

• Classification layer dự đoán xác suất chứa đối tượng của proposal. • Regression layer dự đoán 4 thông số để điều chỉnh anchor box khớp

với đối tượng.

Sau khi dự đoán, có rất nhiều anchor bị chồng lên nhau nên non-maxima suppression được dùng để loại bỏ các anchor chồng lên nhau. Cuối cùng, dựa vào xác suất dự đoán, RPN sẽ lấy N anchor (N có thể là 2000, 1000… hay thậm chí là 100) để làm proposal.

Các vùng đề xuất thu từ RPN cũng sẽ được Faster R-CNN qua RoI pooling layer, duỗi thành vector và cho qua 2 nhánh Classification và Regression tương tự như Fast R-CNN. Lưu ý, 2 nhánh Classification và Regression của Fast R-CNN khác với RPN:

• Nhánh classification có C unit cho C class của bài toán phát hiện đối tượng (bao gồm cả class background). Các vector đặc trưng được truyền qua một softmax layer để lấy classification score cho biết xác suất proposal thuộc về mỗi class.

• Đầu ra của nhánh bounding box regression dùng để cải thiện độ chính xác cho các proposal thu được từ RPN.

22

2.4.2. D2Det

Hình 2.14 Kiến trúc của D2Det. [2]

D2Det [2] được công bố tại hội nghị CVPR 2020 bởi Jiale Cao cùng cộng sự trong bài báo “D2Det: Towards High Quality Object Detection and Instance

Segmentation”. D2Det [2] là phương pháp phát hiện đối tượng 2 giai đoạn dựa trên

Một phần của tài liệu Nghiên cứu và đánh giá phương pháp phát hiện phương tiện giao thông trong không ảnh (khóa luận tốt nghiệp) (Trang 25)