CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG 1.1 PHÂN TÍCH HIỆN TRẠNG Trước khi tiến hành việc thực hiện đề tài, em thực hiện đã khảo sát các cách để giảm thiểu tình trạng đối tượng xâm nhập vào vùng không an toàn ở những bệnh viện và ở những công trình trong và ngoài nước. Nhìn chung các cách ở những nước đang phát triển hầu như sử dụng bằng con người, ngoài ra ở một số nước chưa có cách để khắc phục. Một số nước phát triển sẽ có camera ở các công trình và bệnh viện, một số ít trong đó đã có hệ thống phát hiện đối tượng. Qua quá trình tìm hiểu và khảo sát đối với các hệ thống phát hiện đối tượng nhóm có nhận xét sau: Ưu điểm: • Có thể phát hiện kịp thời và ngăn cản đối tượng khi xuất hiện ở các vùng nguy hiểm.
Hạn chế: • Tiêu tốn nhiều vào nguồn nhân lực để phát hiện. • Không phát huy hết công dụng của những camera. Dựa trên khảo sát và phân tích như trên, em đã đề ra những điều mà cần tiếp thu học hỏi cũng như cải tiến áp dụng vào việc xây hệ thống của mình: • Cần tạo ra một hệ thống phát hiện và thông báo kịp thời. • Hệ thống sẽ thay đổi vị trí nguy hiểm do người sử dụng chỉ định.
• Hệ thống sẽ thông báo liên tục đến telegram người sử dụng đến khi đối tượng ra khỏi vùng nguy hiểm.2 PHÂN TÍCH YÊU CẦU: Dựa trên kết quả của phân tích hiện trạng thực tế hiện nay của lĩnh vực, nhóm đã xác định được các yêu cầu chức năng nghiệp vụ cần được xây dựng để đảm bảo tiêu chuẩn chất lượng và tạo nên những điểm mới trước khi tiến hành xây dựng đề tài: 3 Tính toán: • Tính toán vị trí của đối tượng tiếp xúc với vùng nguy hiểm. Kết quả: • Đưa ra thông báo kịp thời đến người dùng. 4 CHƯƠNG 2: TỔNG QUAN VỀ YOLO 2. GIỚI THIỆU VỀ NEURAL NETWORK[1] Trước tiên muốn hiểu về YOLO và cách thức hoạt động của YOLO chúng ta cần hiểu về mạng Neural Network là gì.
Neural Network hay còn được gọi là Mạng nơ-ron nhân tạo. Đây là chuỗi những thuật toán được đưa ra dựa vào việc bắt chước cách thức hoạt động từ não bộ con người nhằm tìm kiếm các mối quan hệ cơ bản trong tập hợp các dữ liệu. Nói cách khác, đây được xem là hệ thống các tế bào thần kinh nhân tạo. Hình 1: Hình ảnh mô phỏng mạng nơ-ron nhân tạo.
Kiến trúc mạng Neutal Network Mạng Neural Network là sự kết hợp của những tầng perceptron (perceptron đa tầng) và thường bao gồm 3 kiểu tầng: • Tầng vào (tầng input layer): Nằm bên trái cùng, thể hiện cho đầu vào của mạng. • Tầng ẩn (tầng hidden layer): Nằm giữa, thể hiện quá trình suy luận logic của mạng. 5 • Tầng ra (tầng output layer): Nằm bên phải cùng, thể hiện đầu ra của mạng. Hình 2: Kiến trúc mạng nơ-ron nhân tạo.
Mỗi nút mạng trong mạng Neural Network là một sigmoid nơ-ron nhưng chúng lại có hàm kích hoạt khác nhau. Tùy vào bài toán hoặc cách giải quyết mà có thể số lượng nút mạng ở mỗi tầng sẽ không giống nhau. Những nơ-ron ở tầng thường liên kết đôi với nhau, việc này giúp tạo thành mạng có kết nối đầy đủ nhất. Khi đó từ tầng và số nơ-ron, người ta có thể tính toán được kích cỡ của mạng.
Thuộc tính của mạng Neural Network Cũng như con người, mạng Neural Network có thể giải quyết vấn đề và áp dụng kỹ năng đó vào các tập dữ liệu lớn nên mạng Neural Networkk thường có những thuộc tính mạnh mẽ có thể kể đến như: • Học tập thích ứng: Dựa trên kiến thức có được từ trước, mạng nơ-ron sẽ mô hình hóa các mối quan hệ phức tạp và phi tuyến tính từ đó xây dựng thêm. 6 • Tự tổ chức: Mạng nơ-ron có khả năng phân cụm và phân loại lượng dữ liệu khổng lồ. • Hoạt động theo thời gian thực: Mạng có thể cung cấp những câu trả lời của con người theo thời gian thực. • Dự đoán • Khả năng chịu lỗi: Mạng nơ-ron có thể tự điền vào chỗ trống khi các phần quan trọng của mạng bị mất hoặc thiếu.
Phân loại Neural Network Vì những mục đích khác nhau mà mạng Neural Network được phân thành nhiều loại khác nhau. Những mạng được sử dụng phổ biến hiện nay có thể kể đến như: • The Perceptron: Là mạng được xem là đơn giản và lâu đời nhất. Đây được xem là nền tảng của những mạng nơ-ron khác. • Multilayer Perceptron (MPL): Đây thực ra là một dạng Perceptron nhưng phức tạp hơn • Convolutional Neural Network (CNN): Là mạng nơ-ron tích chập có kiến trúc và cách sử dụng như MPL.
Thường được dùng để nhận dạng hình ảnh hoặc thị giác máy tính. • Recurrent Neural Network (RNN): Là mạng nơ-ron hồi quy. Thường được dùng để tìm pattern liên tục của dữ liệu và dự đoán stock data. GIỚI THIỆU VỀ YOLO[3] YOLO (You Only Look Once) là một mô hình phát hiện các đối tượng bằng cách sử dụng các tính năng được học bởi một mạng Neural Network của tác giả Joseph Redmon.
Được xem là thuật toán nhanh nhất, đúng như tên gọi, YOLO chỉ cần lướt qua bức ảnh một lần là có thể phát hiện đối tượng. Đó được xem là ưu điểm của YOLO nhưng ngược lại, về độ chính xác có thể YOLO không phải là thuật toán tốt nhất hiện nay. YOLO còn có thể phát hiện được nhiều vật thể khác nhau trong cùng bức ảnh. 7 Hình 3: Logo của YOLO.
Mô hình thống nhất của YOLO có một vài ưu điểm so với các phương pháp phát hiện vật thể truyền thống như sau: • Thứ nhất, YOLO có tốc độ xử lý cực kì nhanh. Vì YOLO coi phát hiện vật thể là một bài toán hồi quy nên ta không cần dùng đến một cơ chế pipeline phức tạp. Ta chỉ đơn giản chạy Neural Network trên một bức ảnh mới tại test time để dự đoán detections. Base network của YOLO có tốc độ là 45 fps.
Điều này giúp ta có thể xử lý streaming video trong thời gian thực (real-time) với độ trễ nhỏ hơn 25 milliseconds. YOLO đạt được độ chính xác mAP hơn gấp đôi so với các hệ thống real-time khác. • Thứ hai, YOLO lập luận một cách toàn cục về bức ảnh khi đưa ra dự đoán. Không giống như các phương pháp cửa sổ trượt hay đề xuất vùng được nhắc đến ở trên, YOLO nhìn vào toàn bộ bức ảnh trong thời gian training và test, vì thế nên nó ngầm hiểu thông tin về ngữ cảnh về các classes cũng như là ngoại hình của chúng.
Vì thế background errors của YOLO nhỏ hơn đáng kể so với các phương pháp khác, ví dụ như Fast R-CNN. 8 • Thứ ba, cũng là điểm mới mẻ nhất: YOLO có khả năng học được các biểu diễn có tính tổng quát hóa của vật thể. Khi huấn luyện YOLO với những bức ảnh thực và thử bằng những tấm ảnh vẽ (art-work), YOLO có kết quả vượt trội so với các phương pháp detection hàng đầu khác như DPM hay R-CNN. Vì YOLO có tính tổng quát hóa rất cao nên nó ít khi thất bại khi được đưa vào các lĩnh vực mới hay sử dụng các input bất thường.
Hình 4: Kết quá dự đoán của YOLO trên các bức ảnh vẽ. LỊCH SỬ PHÁT TRIỂN[3] YOLO đã trải qua 7 phiên bản (Từ năm 2015-2022) phiên bản mới nhất bao gồm: • YOLOv1 • YOLOv2 • YOLOv3 • YOLOv4 • YOLOv5 • YOLOv6 • YOLOv7 Tác giả Joseph Redmon đã dừng việc nghiên cứu sau khi ra mắt phiên bản YOLOv3 vì lo ngại về việc công nghệ này bị sử dụng sai mục đích. Từ phiên bản YOLOv4 về sau thuộc về những tác giả khác như Alexey Bochkovskiy (YOLOv4), Glenn Jocher (YOLOv5),… Hiện nay YOLOv7 là phiên bản mới nhất. 9 Ngoài ra ở những bản về sau YOLO còn được chia nhỏ ra các bản để phù hợp với từng ứng dụng riêng biệt như phục vụ cho đầu vào có độ phân giải lớn, tốc độ khung hình hiển thị trên mỗi giây cao (FPS), xác định riêng cho từng nhóm đối tượng khác nhau cho từng trường hợp khác nhau, … Từ phiên bản YOLOv1 đến bản YOLOv4 tác giả đã thiết kế nghiêng về tinh chỉnh các thông số còn ở các bản YOLOv5, YOLOv6, YOLOv7 tác giả đã thiết kế sẵn các thông số giúp người dung không đặt nặng vấn đề tinh chỉnh.
Nhưng ở những phiên bản YOLOv5, YOLOv6, YOLOv7 lại gây tranh cãi với người dùng khi có nhiều bài viết nói rằng khi sử dụng ba phiên bản trên các GPU có hiệu năng thấp sẽ dễ gặp tình trạng lỗi treo máy. Và YOLOv4 được cho là ổn định nhất. Chính vì vậy em đã chọn YOLOv4 cho hệ thống của mình. KIẾN TRÚC YOLO[4] Kiến trúc của YOLO bao gồm: • Base network: Có nhiệm vụ trích xuất đặc trưng (Darknet Architecture).
• Extra Layers: Có tác dụng phát hiện vật thể trên feature map của base network. 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]A[i,j]. Với input shape khác nhau, kiến trúc YOLO cũng có thể tùy biến thành các phiên bản khác nhau cho phù hợp. Hình 5: Kiến trúc của YOLO.
10 YOLOv4 sử dụng các Convolutional Layers hay còn gọi là lớp tích chập khiến nó trở thành một Fully Convolutional Network (FCN). Từ YOLOv3 tác giả đã áp dụng mạng darknet-53 (mạng Feature Extractor). Theo sau đó là một activation Leaky Relu và một batch normalization. Tác giả sử dụng mẹo để giảm số lượng tham số cho mô hình bằng cách down sample bằng các filter với kích thước là 2.
Hình 6: Các layer trong mạng Darknet-53. 11 Hiện tại, YOLO hỗ trợ 2 kích thước đầu vào chính là 416x416 và 608x608. Ở mỗi đầu vào sẽ có các layers riêng biệt để phù hợp với shape của input. • Kích thước đầu vào sẽ quy định kích thước của feature map.
• Với input 416x416 các kích thước của feature map lần lượt là 13x13, 26x26, 52x52. • Với input 608x608 các kích thước của feature map lần lượt là 19x19, 38x38, 72x72. THUẬT TOÁN YOLO [5] 2. Residual blocks Residual blocks là hình ảnh đầu vào được chia thành lưới có kích thước là SxS và các ô bằng nhau.
Nhiệm vụ của mỗi ô là phát hiện các vật thể xuất hiện bên trong chúng. Hình 7: Residual block được thể hiện trên một bức ảnh.