1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án môn học nhận dạng Đối tượng bằng khung ảnh trong video

27 1 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

Thông tin cơ bản

Tiêu đề Nhận Dạng Đối Tượng Bằng Khung Ảnh Trong Video
Tác giả Trần Đinh Hồng Hưng
Người hướng dẫn Hà Minh Tân
Trường học Trường Đại Học Nguyễn Tất Thành
Chuyên ngành Đồ án cơ sở
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Tp.HCM
Định dạng
Số trang 27
Dung lượng 613,17 KB

Nội dung

Để thực hiện tốt công việc nhận dạng và phân tích này, đòi hỏi người nghiên cứu phải am hiểu nhiều lĩnh vực trong đó đặc biệt là các lĩnh vực liên quan tới cảm biến, các hệ thống xử lý ả

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN MÔN HỌC

NHẬN DẠNG ĐỐI TƯỢNG BẰNG KHUNG ẢNH

TRONG VIDEO

Giảng viên giảng dạy: Hà Minh Tân

Sinh viên thực hiện : Trần Đinh Hồng Hưng

Trang 2

LỜI CẢM ƠN

Trường Đại học Nguyễn Tất Thành không chỉ là một ngôi trường nơi nhận được kiến thức chất lượng và sự hỗ trợ tận tâm từ đội ngũ giảng dạy, mà còn là một môi trường thúc đẩy sự sáng tạo và phát triển cá nhân Đây là nơi đã trang bị cho chúng em những kiến thức nền tảng và kỹ năng quan trọng để thực hiện nghiên cứu này.

Và em cũng muốn cảm ơn các anh chị khoá trên đã tận tình giúp đỡ em trong việc nghiên cứu và thực hiện đề tài này

Trân trọng cảm ơn

Sinh viên thực hiện

Trần Đinh Hồng Hưng 2

Trang 3

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

TRUNG TÂM KHẢO THÍ

KỲ THI KẾT THÚC HỌC PHẦN HỌC KỲ III NĂM HỌC 2022 - 2023

PHIẾU CHẤM THI TIỂU LUẬN/ĐỒ ÁN

Môn thi: Xử lý ngôn ngữ tự nhiên Lớp học phần: 20DTH1A

Nhóm sinh viên thực hiện:

1.Trần Đinh Hồng Hưng Tham gia đóng góp: 100%

2 Tham gia đóng góp:

3 .Tham gia đóng góp:

4 Tham gia đóng góp:

5 Tham gia đóng góp:

6 Tham gia đóng góp:

7 Tham gia đóng góp:

8 Tham gia đóng góp:

Ngày thi: 25/08/2023 Phòng thi: L.401

Đề tài tiểu luận/báo cáo của sinh viên: Sử dụng Roberta và LSTM vào bài toán phân tích cảm xúc

Phần đánh giá của giảng viên (căn cứ trên thang rubrics của môn học):

Tiêu chí (theo

Điểm tối đa

Điểm đạt được

Cấu trúc của

báo cáo

Nội dung

- Các nội

dung thành

phần

- Lập luận

- Kết luận

Trình bày

4

Trang 4

BM-ChT-TỔNG ĐIỂM

Giảng viên chấm thi

(ký, ghi rõ họ tên)

5

Trang 5

LỜI MỞ ĐẦU

Trong những năm gần đây, xử lý hình ảnh (image processing) đã đạt được nhiều thành tựu và tiến bộ vượt bậc Trong đó, nhận dạng và phân loại hình ảnh là một trong những lĩnh vực được theo đuổi một cách tích cực nhất Ý tưởng cốt lõi của việc nhận dạng và phân loại hình ảnh là phân tích ảnh từ các dữ liệu thu được bởi các cảm biến hình ảnh như camera, Webcam… Nhờ các hệ thống xử lý ảnh, con người đã giảm được khối lượng công việc cũng như tăng sự chính xác trong việc đưa ra các quyết định liên quan đến xử lý hình ảnh trên nhiều lĩnh vực: quân sự và quốc phòng, các hệ thống kỹ nghệ hoá sinh, giải phẫu, các hệ thống giao thông thông minh, robotics, các hệ thống an ninh, dây chuyền sản xuất tự động… Nhận dạng và phân tích ảnh là một lĩnh vực liên ngành Để thực hiện tốt công việc nhận dạng và phân tích này, đòi hỏi người nghiên cứu phải am hiểu nhiều lĩnh vực trong đó đặc biệt là các lĩnh vực liên quan tới cảm biến, các hệ thống xử lý ảnh, các giải thuật xử lý hình ảnh/tín hiệu, phần cứng và phần mềm, các hệ thống tích hợp…

Và em sử dụng trương trình PYCHARM để chạy trương trình cùng với thư viện numpy, opencv-python và thuật toán YOLOv3

Bởi thời gian hạn hẹp cũng và nhiều hạn chế về kiến thức trong lĩnh vực hết sức mới mẻ này, em mong báo cáo này sẽ trình bày một sự hiểu biết tương đối về

xử lý ảnh nói chung và nhận dạng vật thể nói riêng Đồng thời, hy vọng rằng trong một tương lai không xa sẽ có điều kiện ứng dụng những nghiên cứu đã đạt được trong báo cáo này vào thực tế sản xuất.

6

Trang 6

NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY

Tp.HCM, Ngày tháng năm 2023

Giảng viên giảng dạy

(Ký tên và ghi rõ họ tên)

7

Trang 7

MỤC LỤC

Catalog

LỜI CẢM ƠN 1

LỜI MỞ ĐẦU 3

NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY 4

DANH MỤC CÁC TỪ VIẾT TẮT 6

CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI 6

1 Giới thiệu đề tài 7

2 Lý do chọn đề tài 7

3 Mục tiêu của đề tài 7

4 Công nghệ áp dụng 7

CHƯƠNG II CƠ SỞ LÝ THUYẾT 7

1.1 Giới thiệu YOLOv3 8

1.2 Cách thức hoạt động của YOLOv3 9

CHƯƠNG III XÂY DỰNG MÔ HÌNH 11

1 Load model YOLOv3 11

Đầu tiên, chương trình tải mô hình YOLOv3 bằng hàm cv2.dnn.readNet(), với các tham số là đường dẫn đến tệp trọng số (yolov3-tiny.weights) và tệp cấu hình (yolov3-tiny.cfg) Mô hình này được huấn luyện để phát hiện các đối tượng trong ảnh hoặc video 11

2 Ghi và lấy dữ liệu từ webcam 12

CHƯƠNG V KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 20

1 Kết luận 20

2 Hướng phát triển 20

Tài liệu tham khảo 21

1 OpenCV tại trang chủ của nó: https://opencv.org/ 22

2 Mô hình YOLO tại trang chủ của nó: https://pjreddie.com/darknet/yolo/ 22

3 Web tham khảo tài liệu:https://viso.ai/deep-learning/yolov3-overview/ 22

9

Trang 9

CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI

1 Giới thiệu đề tài

Lĩnh vực xử lý ảnh và thị giác máy đang ngày càng được nghiên cứu và ứng dụng trong nhiều lĩnh vực của cuộc sống và sản xuất nhờ vào sự phát triển mạnh mẽ của các hệ thống máy tính Từ thực tế đó việc xây dựng các chương trình hoạt động cho các hệ thống phân loại sản phẩm là thiết yếu, đặc biệt là các hệ thống phân loại sản phẩm theo hình dạng

3 Mục tiêu của đề tài

Có thể xác định được vật thể trong video và gắn tên của vật đó cùng với khung hình

4 Công nghệ áp dụng

thuật toán YOLOv3 để nhận diện vật thể

1

Trang 10

CHƯƠNG II CƠ SỞ LÝ THUYẾT

1 Trình các khái niệm liên quan về lý thuyết áp dụng

1.1 Giới thiệu YOLOv3

YOLOv3 (Bạn chỉ nhìn một lần, Phiên bản 3) là thuật toán phát hiện đối tượng theo thời gian thực nhằm xác định các đối tượng cụ thể trong video, nguồn cấp dữ liệu trực tiếp hoặc hình ảnh

Thuật toán học máy YOLO sử dụng các tính năng được học bởi mạng

nơ ron tích chập sâu để phát hiện một đối tượng Phiên bản 1-3 của YOLO được tạo bởi Joseph Redmon và Ali Farhadi và phiên bản thứ

ba của thuật toán học máy YOLO là phiên bản chính xác hơn của thuậttoán ML gốc

Phiên bản đầu tiên của YOLO được tạo ra vào năm 2016 và phiên bản

3, được thảo luận rộng rãi trong bài viết này, được tạo ra hai năm sau

đó vào năm 2018 YOLOv3 là phiên bản cải tiến của YOLO và YOLOv2

YOLO được triển khai bằng thư viện học sâu Keras hoặc OpenCV Người kế nhiệm chính thức của YOLOv3 là YOLOv4 và YOLOv7 mới được phát hành (2022), đánh dấu máy dò vật thể hiện đại nhất vàonăm 2023

3

Trang 11

Hệ thống phân loại đối tượng được các chương trình Trí tuệ nhân tạo (AI) sử dụng để nhận biết các đối tượng cụ thể trong một lớp là đối tượng quan tâm Các hệ thống sắp xếp các đối tượng trong hình ảnh thành các nhóm trong đó các đối tượng có đặc điểm tương tự được đặt cùng nhau, trong khi các đối tượng khác bị bỏ qua trừ khi được lập trình để làm khác.

1.2 Cách thức hoạt động của YOLOv3

YOLO là Mạng thần kinh chuyển đổi (CNN) để thực hiện phát hiện đối tượng trong thời gian thực

CNN là các hệ thống dựa trên bộ phân loại có thể xử lý hình ảnh đầu vào dưới dạng mảng dữ liệu có cấu trúc và nhận dạng các mẫu giữa chúng

YOLO có ưu điểm là nhanh hơn nhiều so với các mạng khác mà vẫn duy trì được độ chính xác Nó cho phép mô hình xem toàn bộ hình ảnhtại thời điểm thử nghiệm, do đó các dự đoán của nó được thông báo dựa trên bối cảnh chung trong hình ảnh

YOLO và các thuật toán mạng thần kinh tích chập khác “chấm điểm” các vùng dựa trên sự tương đồng của chúng với các lớp được xác định

4

Trang 12

trước Các khu vực có điểm cao được ghi nhận là sự phát hiện tích cực

về bất kỳ lớp nào mà chúng xác định rõ ràng nhất

Ví dụ: trong nguồn cấp dữ liệu giao thông trực tiếp, YOLO có thể được sử dụng để phát hiện các loại phương tiện khác nhau tùy thuộc vào khu vực nào của video có điểm cao so với các loại phương tiện được xác định trước

Trong trường hợp nhận dạng đối tượng trong video, YOLOv3 có thể theo dõi các đối tượng trên các khung hình bằng cách sử dụng kỹ thuậtgọi là "sắp xếp sâu" (Theo dõi trực tuyến đơn giản và thời gian thực)

Kỹ thuật này sử dụng kết hợp các thuật toán theo dõi và phát hiện đối tượng để theo dõi các đối tượng theo thời gian

Giải thuật YOLOv3 tách một hình ảnh thành một lưới và mỗi ô lưới

dự đoán một số lượng hộp giới hạn (còn được gọi là anchor box) xung quanh các đối tượng được phân loại trước Mỗi hộp giới hạn có điểm tin cậy tương ứng về độ chính xác của dự đoán và chỉ phát hiện một đối tượng trên mỗi hộp giới hạn

5

Trang 13

Các hộp giới hạn được tạo ra bằng cách gom cụm các kích thước của các hộp thực tế từ tập dữ liệu ban đầu để tìm các hình dạng và kích thước phổ been nhất YOLO khác với các hệ thống như R-CNN và Fast R-CNN bởi vì nó được huấn luyện để thực hiện phân loại và hồi quy hộp giới hạn cùng một lúc.

6

Trang 14

CHƯƠNG III XÂY DỰNG MÔ HÌNH

1 Load model YOLOv3

Đầu tiên, chương trình tải mô hình YOLOv3 bằng hàm

cv2.dnn.readNet(), với các tham số là đường dẫn đến tệp trọng số (yolov3-tiny.weights) và tệp cấu hình (yolov3-tiny.cfg) Mô hình này được huấn luyện để phát hiện các đối tượng trong ảnh hoặc video

Tiếp theo, chương trình đọc danh sách các lớp được định nghĩa trong tệp coco.names bằng hàm open() và readlines(), sau đó lưu vào biến classes Mỗi lớp tương ứng với một đối tượng cần phát hiện

Sau đó, chương trình lấy danh sách các tên lớp của mô hình bằng hàm net.getLayerNames(), và lấy danh sách các lớp đầu ra không kết nối

7

Trang 15

bằng hàm net.getUnconnectedOutLayers() Các lớp này sẽ được sử dụng để tính toán các dự đoán của mô hình.

Cuối cùng, chương trình khởi tạo một mảng màu ngẫu nhiên để sử dụng cho việc vẽ hộp giới hạn xung quanh các đối tượng được phát hiện Kích thước của mảng màu phụ thuộc vào số lượng lớp được địnhnghĩa trong tệp coco.names

2 Ghi và lấy dữ liệu từ webcam

Đầu tiên, chương trình khởi tạo một đối tượng VideoCapture của OpenCV với tham số là số 0, để mở kết nối với webcam được cài đặt trên máy tính Nếu muốn đọc video từ một tệp, ta chỉ cần thay số 0 bằng tên tệp

8

Trang 16

Tiếp theo, chương trình khởi tạo một font để hiển thị lên khung hình bằng biến cv2.FONT_HERSHEY_SIMPLEX Chương trình cũng khởitạo biến starting_time để lưu thời điểm bắt đầu chạy chương trình và biến frame_id để đếm số khung hình đã xử lý.

Trong vòng lặp, chương trình đọc khung hình từ webcam hoặc video bằng phương thức read() của đối tượng VideoCapture Kết quả trả về gồm hai giá trị, giá trị đầu tiên là một biến boolean cho biết việc đọc khung hình có thành công hay không, giá trị thứ hai là một mảng NumPy chứa dữ liệu khung hình

Sau đó, chương trình tăng biến frame_id lên 1 và tính toán kích thước của khung hình bằng thuộc tính shape của mảng khung hình Kích thước này sẽ được sử dụng trong việc tính toán các hộp giới hạn và vẽ chúng lên khung hình

9

Trang 17

3 Xử lý hình ảnh nhận được

Đầu tiên, chương trình tạo một blob từ khung hình hiện tại bằng hàm cv2.dnn.blobFromImage() Blob là một khối dữ liệu đầu vào cho mô hình YOLOv3, được chuẩn hóa và chuyển đổi từ định dạng khung hình ban đầu sang định dạng mà mô hình có thể sử dụng được

Trong đó, tham số đầu tiên là khung hình hiện tại, tham số thứ hai là tỉ

lệ chuẩn hóa, tham số thứ ba là kích thước của blob, tham số thứ tư là giá trị trung bình của các kênh màu và tham số thứ năm là cờ để xác định xem có cắt ảnh thành các phần nhỏ hay không

Tiếp theo, chương trình đưa blob vào mô hình YOLOv3 bằng hàm net.setInput() Sau đó, chương trình tính toán các dự đoán của mô hìnhbằng hàm net.forward(), với các tham số là danh sách các lớp đầu ra không kết nối Kết quả trả về gồm một danh sách các tensor chứa thông tin về các đối tượng được phát hiện trong khung hình

10

Trang 18

4 xử lý các dự đoán của mô hình để trích xuất thông tin

Đầu tiên, chương trình khởi tạo ba danh sách rỗng: class_ids,

confidences và boxes Các danh sách này sẽ được sử dụng để lưu thông tin về lớp của đối tượng, độ tin cậy của dự đoán và vị trí của hộpgiới hạn xung quanh đối tượng

Sau đó, chương trình bắt đầu vòng lặp qua danh sách các tensor outs, chứa thông tin về các đối tượng được phát hiện trong khung hình Trong mỗi tensor out, chương trình tiếp tục vòng lặp qua từng phần tử detection

11

Trang 19

Trong vòng lặp này, chương trình trích xuất điểm số (scores) từ phần

tử detection bằng cách lấy 5 phần tử cuối cùng của nó Điểm số này biểu thị độ tin cậy của mô hình cho mỗi lớp đối tượng

Tiếp theo, chương trình tìm ra chỉ số (class_id) của lớp có điểm số cao nhất bằng hàm np.argmax() Điều này giúp xác định lớp của đối tượng được phát hiện

Sau đó, chương trình lấy điểm số tương ứng với lớp đã xác định (confidence) và kiểm tra xem điểm số này có lớn hơn 0.1 hay không Nếu có, tức là mô hình có độ tin cậy cao về việc phát hiện đối tượng thuộc lớp này, chương trình tiếp tục xử lý thông tin về đối tượng này

5 tính toán tọa độ và kích thước của các hộp xung quanh các vật thể được nhận dạng trong video

Cụ thể, mô hình YOLO trả về một danh sách các detection, mỗi detection được biểu diễn dưới dạng một vector gồm 85 phần tử đã có sẵn của YOLO

12

Trang 20

Các phần tử này bao gồm tọa độ và kích thước của bounding box, điểm số (confidence score) của detection và xác suất của các lớp được phát hiện.

Đoạn code trên sử dụng các phần tử đầu tiên của vector detection để tính toán tọa độ và kích thước của bounding box Cụ thể, detection[0]

và detection[1] lần lượt là tọa độ tâm của bounding box trên trục x và

y, được tính dựa trên chiều rộng và chiều cao của khung hình (frame) detection[2] và detection[3] lần lượt là chiều rộng và chiều cao của bounding box, cũng được tính dựa trên chiều rộng và chiều cao của khung hình

13

Trang 21

6 Xử lý và gắn hộpcho vật thể phát hiện được

Đầu tiên, chương trình tính toán tọa độ của tâm (center_x, center_y) của hộp giới hạn và chiều rộng (w) và chiều cao (h) của nó Điều này được thực hiện bằng cách lấy thông tin từ phần tử detection trong tensor outs

Sau đó, chương trình tính toán tọa độ của góc trái trên (x, y) của hộp giới hạn bằng cách lấy tọa độ của tâm và kích thước của hộp giới hạn

Tiếp theo, chương trình thêm thông tin về vị trí, độ tin cậy và lớp của đối tượng vào các danh sách boxes, confidences và class_ids Thông tin về vị trí được lưu trữ dưới dạng một danh sách gồm tọa độ x, y, w

và h của hộp giới hạn Độ tin cậy được lưu trữ dưới dạng một số thực

và lớp được lưu trữ dưới dạng một số nguyên biểu thị chỉ số của lớp trong danh sách các lớp

14

Trang 22

7 Hiển thị kết quả của giải thuật ra khung hình

Đầu tiên, chương trình lặp qua từng phần tử trong danh sách boxes để

vẽ hộp giới hạn xung quanh các đối tượng trên khung hình Nếu phần

tử hiện tại có chỉ số nằm trong danh sách các chỉ số được giữ lại (indexes), chương trình sẽ lấy thông tin về vị trí, lớp và độ tin cậy của đối tượng từ các danh sách boxes, class_ids và confidences Sau đó, chương trình vẽ một hộp giới hạn xung quanh đối tượng bằng cách sử

15

Trang 23

dụng hàm cv2.rectangle() và hiển thị nhãn lớp và độ tin cậy bằng cách

sử dụng hàm cv2.putText()

Tiếp theo, chương trình tính toán thời gian đã trôi qua từ khi bắt đầu

xử lý (starting_time) đến hiện tại và tính toán số khung hình trên giây (FPS) Sau đó, chương trình hiển thị thông tin về FPS và hướng dẫn sửdụng trên khung hình

Cuối cùng, chương trình sử dụng hàm cv2.imshow() để hiển thị khung hình và chờ người dùng nhấn phím để thoát Nếu phím được nhấn là phím Esc (key == 27), chương trình sẽ dừng việc ghi hình và kết thúc

16

Trang 24

8 Kết quả thực nghiệm

Trang 25

CHƯƠNG V KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

1. Kết luận

Báo cáo mô tả chương trình xử lý ảnh nhận dạng và phân lại chitiết theo hình dạng sử dụng YOLOv3 và opencv-python Xây dựngđược một chương trình nhận dạng vật thể

Tiến hành nhận dạng trên nhiều mẫu thử khác nhau : nhiều hìnhđơn lẻ, luôn nhận biết chính xác đối tượng chi tiết xử lý với bất kỳ cácgóc quay kích thước to nhỏ khác nhau

Tiếp thu được nhiều kiến thức mới kiến thức bổ ích về xử lý ảnh Trong quá trình thực hiện các thí nghiệm và chạy chương trình, donhiều yếu tố khách quan cũng như chủ quan tác động nên kết quả thuđược chưa phải là lý tưởng Các yếu tố này bao gồm:

* Chất lượng của camera dùng để tiến hành thí nghiệm không phải

là cao Do đó khi ta thực hiện bắt ảnh thường bị nhiễu và chấtlượng hình ảnh không tốt

* Điều kiện tiến hành thí nghiệm không lý tưởng: điều kiện về độsáng, độ chói, góc quay…

* Các bước tiền xử lý đang còn đơn giản do đó chưa hỗ trợ tốt choquá trình xử lý ảnh

* Thuật toán giải quyết vấn đề chưa phải là lý tưởng dẫn đến việc

xử lý chưa đạt được tối ưu

18

Ngày đăng: 14/12/2024, 22:43

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

TÀI LIỆU LIÊN QUAN