1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo cuối kỳ đề tài phát hiện và theo dõi người

29 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Độ 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 2

LỜI NÓI ĐẦU

Trang 3

MỤ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.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 4

KẾT LUẬN 29TÀI LIỆU THAM KHẢO 30

Trang 5

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 6

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 xS ô, ô 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

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:

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ệucụ 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)- Localization loss

 Độ lỗi của việc dự đoán bounding box đó chứa object so với nhãn thực tế tại ô vuông đó - Confidence loss

1.4.1 Classifycation loss

Classifycation loss - độ lỗi của việc dự đoán loại nhãn cuả object, hàm lỗi này chỉtính trên những ô vuông có xuất hiện object, còn những ô vuông khác ta khôngquan tâm Classifycation loss được tính bằng công thức sau:

Trang 8

1.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ếptừ 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 9

Giá 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 10

1.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 11

1.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ềusự 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 14

Hì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 15

Mộ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 16

Deep 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.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 17

Sử 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

Trang 18

1.7.3 Quản lý vòng đời 1 track

Deep SORT quản lí vòng đợi của 1 track dựa trên 1 biến trạng thái với 3 giá trị (tentative, confirmed, deleted)

 Các trạng thái này lúc mới khởi tạo sẽ được gán 1 giá trị mang tính thăm dò (tentative).

 Giá trị này nếu vẫn đảm bảo duy trì được trong 3 frame tiếp theo, trạng thái sẽ chuyển từ thăm dò sang xác nhận (confirmed),

 Các track có trạng thái confirmed sẽ cố gắng được duy trì theo dõi, dù bị biến mấtthì Deep SORT vẫn sẽ duy trì theo dõi trong 30 frame tiếp theo.

 Ngược lại, nếu mất dấu khi chưa đủ 3 frame, trạng thái sẽ bị xóa khỏi trình theo dõi (deleted)

Hình 1 10 Vòng đời của một track

Trang 19

CHƯƠNG 2 THỰC HIỆN ĐỀ TÀI

2.1 Mô hình thuật toán

Hình 2 1 Mô hình thuật toán

Nội dung thực hiện thuật toán gồm các bước: Đọc các khung hình từ video

 Xác định người bằng cách sử dụng mô hình Yolov5

 Sử dụng thuật toán Deepsort để tracking từng người trong khung hình và gán cho nó một id riêng biệt

 Tạo mảng rỗng và thêm các id đó vào và kiểm tra xem có trùng lặp id không, sau đó thì đếm độ dài của mảng thì sẽ đếm được số lượng người tương ứng

2.2 Tracking and Counting

Đối với một mô hình, để theo dõi đượng đối tượng, mô hình phải sử dụng rất nhiều kỹ thuật như Deep Sort, Centroid Tracker, CSRT, KCF, Camshift để theo dõi đối tượng Điều này được thực hiện bằng việc so sánh sự giống và khác nhau của các đối tượng với nhau trong mỗi khung hình Trong dự án này, nhóm chúng em sẽ sử dụng Deepsort để theo dõi các đối tượng.

Bài toán: Theo dõi và đếm số người xuất hiện trong video Deep sort

Sau khi đã nhận diện được người trong video và đánh box cho từng cá nhân Tatiếp tục sử dụng mô hình deep_sort để có thể tracking từng người trong video và gáncho mỗi người 1 id riêng biệt không trùng lặp.

Luồng xử lý của Deepsort:

Ngày đăng: 14/08/2024, 18:17

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w