Độ chính xác và nhanh nhạy phù hợp vớimáy tính fps đạt chuẩn 1.6 Tổng quan Object Tracking1.6.1 Khái niệmObject Tracking là bài toán theo dõi một hoặc nhiều đối tượng chuyển động theo th
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
Bộ môn Trí tuệ nhân tạo & Ứng dụng
BÁO CÁO CUỐI KỲ
Đề tài:
PHÁT HIỆN VÀ THEO DÕI NGƯỜI
Trang 2LỜI NÓI ĐẦU
Trang 3MỤC LỤC
BẢNG PHÂN CÔNG CÔNG VIỆC 6
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 7
1.1 Giới thiệu về Yolo 7
1.2 Cách yolo hoạt động 8
1.3 Hàm tính IOU 8
1.4 Loss function 9
1.4.1 Classifycation loss 9
1.4.2 Localization loss 10
1.4.3 Confidence loss 11
1.4.4 Total loss 11
1.5 YOLOv5 12
1.5.1 Lịch sử và tranh cãi 12
1.5.2 Kiến trúc yolov5 13
1.5.3 Các loại mô hình yolov5 khác nhau 14
1.6 Tổng quan Object Tracking 14
1.6.1 Khái niệm 14
1.6.2 Phân loại 14
1.6.3 Dataset và Metric đánh giá 16
1.6.4 Multiple Object Tracking 17
1.6.5 Realtime Object Tracking 18
1.7 Deep SORT 18
1.7.1 Ý tưởng 19
1.7.2 Training bộ trích xuất đặc trưng 19
1.7.3 Quản lý vòng đời 1 track 21
CHƯƠNG 2 THỰC HIỆN ĐỀ TÀI 22
2.1 Phương pháp giải quyết bài toán 22
2.2 Nhận diện người sử dụng model yolov5s 23
2.2.1 Mô hình thuật toán 23
2.2.2 Trainning model 23
2.2.3 Kết quả đánh giá metric ML 25
2.2.4 Detection 25
2.2 Theo dõi và đếm số người trong video – Deepsort 26
2.3 Kết quả thu được và đánh giá của Yolov5 và Deepsort 27
Trang 4KẾT LUẬN 29 TÀI LIỆU THAM KHẢO 30
Trang 5DANH MỤC HÌNH VẼ
Hình 1 1 Mô hình mạng Yolo 7
Hình 1 2 Cơ chế hoạt động của Yolo 8
Hình 1 3 Hàm tính IOU 9
Hình 1 4 Tính giá trị hàm Localization loss 10
Hình 1 5 Kiến trúc Yolov5 13
Hình 1 6 Các loại mô hình Yolov5 14
Hình 1 7 Single Object Tracking 15
Hình 1 8 Multiple Object Tracking 15
Hình 1 9 MOT Challenge 16
Hình 1 10 ImageNet VID 17
Hình 1 11 Đánh giá thử nghiệm 3 hàm loss 20
Hình 1 12 Vòng đời của một track 21
Hình 2 1 Luồng xử lý của Deepsort 22
Hình 2 2 Chỉnh sửa lại file coco.yaml 24
Hình 2 3 Quá trình training Yolov5 24
Hình 2 4 Kết quả đánh giá sau khi train 25
Hình 2 5 Chưa nhận diện người trong bức ảnh 25
Hình 2 6 Sau khi nhận diện người trong bức ảnh 26
Hình 2 7 Sử dụng tập dữ liệu MOT16 26
Hình 2 8 Giao diện đầu vào ảnh hoặc video 27
Hình 2 9 Kết quả thu được 28
Hình 2 10 Lỗi không deploy lên Heroku 28
Trang 6BẢNG PHÂN CÔNG CÔNG VIỆC
Mục tiêu project
Hiểu và biết áp dụng những gì đã học vào project
Tăng cường khả năng làm việc nhóm
Mỗi thành viên đều hiểu và có thể áp dụng vào các bài toán khác
Phân công các công việc
1.1 Cách yolo hoạt động
Hình 1 1 Cơ chế hoạt động của Yolo
YOLO hoạt động theo cơ chế detect vật thể trên từng vùng ảnh Ảnh được chia thành S x
S ô, ô hay còn gọi là cell Thực ra là chia trong tưởng tượng, không phải cắt ảnh ra hay thực hiện bất kì bước image-processing nào Bản chất của việc chia ảnh là việc chia output, target thành dạng matrix AA kích thước S x S Nếu trong ảnh, tâm của vật thể nằm trong cell thứ (i,j) thì output tương ứng nó sẽ nằm trong A[i,j]
Luồng xử lí như sau:
Trang 7 Convolution network tiến hành trích xuất đặc trưng ảnh
Extra layers (fully connected layers) phân tích, phát hiện vật thể Trả về output là một matrix AA có kích thước:
Shape(A) = S*S*(5*B + C) Shape(A)=S∗S∗(5∗B+C)
Trong đó, B là số bound box, mỗi bound box gồm 5 số liệu: (x,y,w,h,confidence_score) confidence score xác suất tại ô đó có object hay không Cuốicùng là C phần tử - đại diện cho phân bố xác suất về loại object, tức classdistribution Vì C phần tử này là một phân phối xác suất nên cần đảm bảo:
∑
0
c
pi=1
prediction được định nghĩa Pr(Object) * IOU(pred, truth)Pr(Object)∗
IOU(pred,truth), ta sẽ làm rõ hơn IOU(pred, truth) là gì IOU (INTERSECTIONOVER UNION) là hàm đánh giá độ chính xác của object detector trên tập dữ liệu
cụ thể IOU được tính bằng:
1.2 Loss function
Hàm lỗi trong YOLO được tính trên việc dự đoán và nhãn mô hình để tính Cụ thểhơn nó là tổng độ lỗi của 3 thành phần con sau :
Độ lỗi của việc dự đoán loại nhãn của object - Classifycation loss
Độ lỗi của dự đoán tọa độ tâm, chiều dài, rộng của boundary box (x, y ,w, h)
Trang 81.4.2 Localization loss
Localization loss là hàm lỗi dùng để tính giá trị lỗi cho boundary box được dự đoánbao gồm tọa độ tâm, chiều rộng, chiều cao của so với vị trí thực tế từ dữ liệu huấnluyện của mô hình Lưu ý rằng chúng ta không nên tính giá trị hàm lỗi này trực tiếp
từ kích thức ảnh thực tế mà cần phải chuẩn hóa về [0, 1] so với tâm của boundingbox Việc chuẩn hóa này kích thước này giúp cho mô hình dự đoán nhanh hơn vàchính xác hơn so với để giá trị mặc định của ảnh Hãy cùng xem một ví dụ:
Giá trị hàm Localization loss được tính trên tổng giá trị lỗi dự đoán toạ độ tâm (x, y)
và (w, h) của predicted bounding box với grouth-truth bounding box Tại mỗi ô có chưa object, ta chọn 1 boundary box có IOU (Intersect over union) tốt nhất, rồi sau
đó tính độ lỗi theo các boundary box này
Hình 1 2 Tính giá trị hàm Localization loss
Trang 9Giá trị hàm lỗi dự đoán tọa độ tâm (x, y) của predicted bounding box và (x̂ , ŷ) làtọa độ tâm của truth bounding box được tính như sau :
Giá trị hàm lỗi dự đoán (w, h ) của predicted bounding box so với truth boundingbox được tính như sau :
Trang 101.5.1 Kiến trúc yolov5
Họ mô hình YOLO bao gồm ba khối kiến trúc chính i) Xương sống, ii) Cổ và iii) Đầu
1 YOLOv5 Backbone: Nó sử dụng CSPDarknet làm xương sống để trích xuất
tính năng từ các hình ảnh bao gồm các mạng một phần xuyên giai đoạn
2 YOLOv5 Neck: Nó sử dụng PANet để tạo ra một mạng lưới kim tự tháp
đặc trưng để thực hiện tổng hợp các đặc điểm và chuyển cho Head để dự đoán
3 YOLOv5 Head: Các lớp tạo dự đoán từ các hộp neo để phát hiện đối tượng.
Ngoài điều này, YOLOv5 sử dụng các lựa chọn dưới đây để đào tạo :
1 Kích hoạt và tối ưu hóa: YOLOv5 sử dụng Leaky ReLU và sigmoid
activation cũng như SGD và ADAM làm tùy chọn trình tối ưu hóa
2 Hàm mất mát: Nó sử dụng Binary cross-entropy với logits loss.
Hình 1 3 Kiến trúc Yolov5
Trang 111.5.2 Các loại mô hình yolov5 khác nhau
YOLOv5 có nhiều loại mô hình được đào tạo trước như chúng ta có thể thấy ở trên Sựkhác biệt giữa chúng là sự cân bằng giữa kích thước của mô hình và thời gian suy luận.Phiên bản mô hình nhẹ YOLOv5s chỉ 14MB nhưng không chính xác lắm Chúng ta cóYOLOv5x có kích thước 168MB nhưng là phiên bản chính xác nhất trong họ của nó.Phiên bản phù hợp với bài toán là yolov5s Độ chính xác và nhanh nhạy phù hợp vớimáy tính fps đạt chuẩn
1.6 Tổng quan Object Tracking
1.6.1 Khái niệm
Object Tracking là bài toán theo dõi một hoặc nhiều đối tượng chuyển động theo thời gian trong một video Hiểu một cách đơn giản nhất, nó là bài toán ở mức độ cao hơn so với object detection, khi đối tượng được xử lí không đơn giản là một hình ảnh mà là một chuỗi các hình ảnh: video
Việc tracking bên cạnh việc xác định các bounding box, còn quan tâm đến khá nhiều yếu
tố hoặc nhiễu khác nhau:
ID của mỗi đối tượng cần đảm bảo luôn không đổi qua các frame
Khi đối tượng bị che khuất hoặc biến mất sau 1 vài frame, hệ thống vẫn cần đảm bảo nhận diện lại được đúng ID khi đối tượng xuất hiện
Các vấn đề liên quan đến tốc độ xử lí để đảm bảo realtime và tính ứng dụng cao
1.6.2 Phân loại
Object Tracking có thể chia thành 2 cách tiếp cận chính:
Hình 1 4 Các loại mô hình Yolov5
Trang 12 Single Object Tracking (SOT): Cái tên nói lên tất cả, Single Object Tracking tập
trung vào việc theo dõi một đối tượng duy nhất trong toàn bộ video Và tất nhiên,
để biết được cần theo dõi đối tượng nào, việc cung cấp một bounding box từ ban đầu là việc bắt buộc phải có
Hình 1 5 Single Object Tracking
Mutiple Object Tracking (MOT): Mutliple Object Tracking hướng tới các ứng
dụng có tính mở rộng cao hơn Bài toán cố gắng phát hiện đồng thời theo dõi tất
cả các đối tượng trong tầm nhìn, kể cả các đối tượng mới xuất hiện trong video
Vì điểu này, MOT thường là những bài toán khó hơn SOT và nhận được rất nhiều
sự quan tâm của giới nghiên cứu
Hình 1 6 Multiple Object Tracking
Bên cạnh việc tiếp cận, các phương pháp giải lớp bài toán này cũng được phân chia rất đadạng, phổ biến nhất là:
Online Tracking : Khi xử lí video, Online Tracking chỉ sử dụng frame hiện tại và frame ngay trước đó để tracking Cách xử lí này có thể sẽ làm giảm độ chính xác của thuật toán, tuy nhiên nó lại phản ánh đúng cách vấn đề được xử lí trong thực
tế, khi mà tính "online" là cần thiết
Offline Tracking : Các phương pháp Offline thường sử dụng toàn bộ frame củavideo, do đó thường đạt được độ chính xác cao hơn nhiều so với Online TrackingNgoài ra còn phân chia theo:
Detection based Tracking : Tập trung vào mối liên kết chặt chẽ giữa objectdetection và object tracking, từ đó dựa vào các kết quả của detection để theo dõiđối tượng qua các frame
Trang 13 Detection Free Tracking : Coi video như 1 dạng dữ liệu dạng chuỗi, từ đó, áp dụng những phương pháp dành riêng cho "chuỗi" như RNN, LSTM,
1.6.3 Dataset và Metric đánh giá
Để bắt đầu tìm hiểu về Object Tracking, việc nắm bắt về các tập dữ liệu phổ biến cũng như các metric đánh giá là điều không thể thiếu Về dataset, object tracking thường đánh giá dựa trên các tập dữ liệu sau:
MOT Challenge: MOT Challenge là một cuộc thi thường niên, dataset của MOT
Challenge thường được sử dụng để đánh giá điểm chuẩn cho các phương phápgiải quyết bài toán Mutiple Object Tracking (MOT15, MOT16, MOT17,MOT20, ) Dữ liệu là chuỗi các video đã được gán nhãn của người đi bộ, đượcthu thập từ nhiều nguồn khác nhau, với sự đa dạng về độ phân giải, độ chiếu sáng,
Hình 1 7 MOT Challenge
ImageNet VID: Bên cạnh những bộ dataset nổi tiếng về classification, object
detection, ImageNet cũng cung cấp một bộ dataset đủ lớn về object tracking Đây
là chuỗi các video được gán nhãn từ 30 nhóm đối tượng khác nhau
Trang 14Hình 1 8 ImageNet VID
Về metric đánh giá, cần quan tâm các metric sau:
FP (False Positive) : tổng số lần xuất hiện một đối tượng được phát hiện mặc dù
không có đối tượng nào tồn tại
FN (False Negative) : tổng số lần mà đối tượng hiện có không được phát hiện.
ID Switches : tổng số lần 1 đối tượng bị gán cho 1 ID mới trong suốt quá trình
tracking video
MOTA: Mutiple Object Tracking Accuracy
MOTP: Mutiple Object Tracking Precision
MT (Most Tracked Target) : tính trong ít nhất 80% video
ML (Most Lost Target) : tính trong 20% video
Hz (FPS): Tốc độ tracking
1.6.4 Multiple Object Tracking
Trang 15Một phương pháp Mutiple Object Tracking cố gắng hướng đến việc theo dõi tất cả các đối tượng xuất hiện trong khung hình bằng việc phát hiện và gắn định danh cho từng đối tượng Bên cạnh đó, các ID đã được gán cho 1 đối tượng cần đảm bảo nhất quán qua từng frame Vậy, có những vấn đề gì đáng quan tâm ở đây?
trong object detection và vẫn không ngừng có những phương pháp, những thuật toán cải thiện vấn đề này Trong object tracking, đặc biệt là detection based tracking, việc đảm bảo tính chính xác của quá trình detect cũng vô cùng quan trọng
tượng, ID cần đảm bảo nhất quán trong suốt video, tuy nhiên, khi một đối tượng bị che khuất, nếu chỉ dựa riêng vào object detection là không đủ để giải quyết vấn đề này
tự như vấn đề trước đó, chúng ta vẫn đang nói về chỉ số ID switches Cần giải quyết tốt vấn đề nhận dạng lại đối tượng kể cả việc che khuất hay biến mất để giảm số lượng ID_switches xuống mức thấp nhất có thể
nhau : Việc các đối tượng có quỹ đạo chống chéo lên nhau cũng có thể dẫn
đến hậu quả gán nhầm ID cho các đối tượng, đây cũng là vấn đề chúng ta cần chú ý xử lí khi làm việc với Multiple Object Tracking
1.6.5 Realtime Object Tracking
Realtime Object Tracking lại quan tâm nhiều hơn về tốc độ xử lí của phương pháp Thật
sự mà nói, vẫn chưa có định nghĩa, tốc độ như thế nào mới được gọi là realtime (30 FPS,
40 FPS hay phải nhanh hơn thế nữa) Thay vì xét về tốc độ, chúng ta hãy định nghĩa
realtime một cách dễ hình dung hơn Phương pháp được gọi là realtime cần đảm bảo tốc
độ đưa ra output là nhanh hơn hoặc ít nhất là nhanh bằng tốc độ đưa vào input.
Trong thực tế, nếu việc xử lí từng frame chỉ khiến video có độ trễ 1s so với tốc độ bình thường của nó, việc xử lí này cũng có thể chấp nhận rằng đó là realtime Tuy nhiên, ngay
cả khi chấp nhận có độ trễ, việc đảm bảo tính realtime vẫn luôn là một vấn đề nan giải
Thông thường, chúng ta có thể bỏ qua 1 vài frame không xử lí cho đến khi frame hiện
tại xử lí xong, sau đó tiếp tục các frame sau - pha xử lí này vẫn sẽ đem lại cảm giác là
việc xử lí đang là realtime, tuy nhiên, bù lại, việc tracking mỗi x frame lại làm giảm đáng
kể tính chính xác mong muốn
Hiện nay, các nghiên cứu mới nhất vẫn luôn tìm kiếm những phương pháp đủ nhanh để hướng tới tính realtime trong xử lí
1.7 Deep SORT
Trang 16Deep SORT được Nicolai Wojke và Alex Bewley phát triển ngay SORT nhằm giải quyết các vấn đề thiếu sót liên quan đến số lượng ID switches cao Hướng giải quyết màdeep SORT đề xuất dựa trên việc sử dụng deep learning để trích xuất các đặc trưng của đối tượng nhằm tăng độ chính xác trong quá trình liên kết dữ liệu Ngoài ra, một chiến lược liên kết cũng được xây dựng mang tên Matching Cascade giúp việc liên kết các đốitượng sau khi đã biến mất 1 thời gian được hiệu quả hơn.
1.7.1 Ý tưởng
Trong multiple object tracking, đặc biệt là đối với lớp thuật toán tracking-by-detection,
có 2 yếu tố chính ảnh hưởng trực tiếp đến performance của việc theo dõi:
Data Association: Quan tâm đến vấn đề liên kết dữ liệu, cụ thể là tiêu chí để xét
và đánh giá nhằm liên kết một detection mới với các track đã được lưu trữ sẵn
Track Life Cycle Management: Quan tâm đến việc quản lý vòng đời của một track đã được lưu trữ, bao gồm, khi nào thì khởi tạo track, khi nào thì ngưng theo dõi và xóa track ra khỏi bộ nhớ,
1.7.2 Training bộ trích xuất đặc trưng
Sử dụng Wide Residual Network (WRN)
Các mạng neural thông thường, để đạt được performance cao, thường cố gắng phát triển theo chiều hướng tăng độ sâu của mạng Đây là hướng đi chung, và tốt để có tạo ra một bộ trích xuất đăc trưng hiệu quả Tuy nhiên, một nhược điểm đi kèm với các mạng sâu là thời gian huấn luyện và thời gian inferance lớn, đây là điều đi hoàn toàn ngược lại với mục tiêu của deep SORT Do đó, thay vì sử dụng các mạng sâu (Deep Neural
Network), nhóm tác giả lựa chọn các mạng nông (Shallow Neural Network), cụ thể ở đây là Wide Residual Network (WRN) Kiến trúc này được giới thiệu chỉ với số lớp rất nhỏ (16 lớp), vẫn có thể đạt performance vượt trội hơn các kiến trúc hàng nghìn lớp khác Đặc biệt là thời gian training và inference cũng nhanh hơn rất nhiều
Trang 17Sử dụng cosine softmax classifer:
Nicolai Wojke và Alex Bewley sử dụng một classifer mới bằng việc tham số hóa lại softmax classifer tiêu chuẩn (Hình ảnh: Phía trên là standard softmax classifer, phía dưới là cosine softmax classifer)
Thật ra mình cũng chưa hoàn toàn hiểu rõ lắm về việc chỉnh sửa softmax classifer
này (sử dụng hệ số K, đồng thời bỏ đi các giá trị bias b_kbk) Hi vọng các bạn, có
ai đã đọc paper và hiểu được ý đồ của tác giả, có thể comment để giúp mình hiểu
rõ hơn về kiến trúc này
3 hàm loss được thử nghiệm với kiến trúc này lần lượt là Sparse Softmax Cross Entropy Loss, Magnet Loss và Triplet Loss Và Cross Entropy Loss cho kết quả khả quan nhất
Hình 1 9 Đánh giá thử nghiệm 3 hàm loss