1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN 1 o0o BÀI TIỂU LUẬN HỌC PHẦN IOT VÀ ỨNG DỤNG TÊN ĐỀ TÀI HỆ THỐNG PHÁT HIỆN, TỰ ĐỘNG CẢNH BÁO NGƯỜI BỊ NGÃ TRONG BỆNH VIỆN Hà Nội, thá[.]
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
BÀI TIỂU LUẬN HỌC PHẦN IOT VÀ ỨNG DỤNG
TÊN ĐỀ TÀI: HỆ THỐNG PHÁT HIỆN, TỰ ĐỘNG CẢNH BÁO
NGƯỜI BỊ NGÃ TRONG BỆNH VIỆN
Hà Nội, tháng 12 năm 2022
Trang 2HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
TÊN ĐỀ TÀI: HỆ THỐNG PHÁT HIỆN TỰ ĐỘNG CẢNH BÁO
NGƯỜI BỊ NGÃ TRONG BỆNH VIỆN
Sinh viên:
Nguyễn Hữu Hồng Sơn
Giảng viên hướng dẫn:
TS Nguyễn Tài Tuyên
Hà Nội, tháng 12 năm 2022
Trang 3Lời cam đoan
Em xin cam đoan đề tài Hệ thống phát hiện tự động cảnh báo người bị ngã trong bệnh viện do em nghiên cứu và thực hiện Em đã kiểm tra dữ liệu theo quy định hiện hành Kết quả làm của đề tài Hệ thống phát hiện tự động cảnh báo người bị ngã trong bệnh viện là trung thực và không sao chép từ bất kỳ bài tập của nhóm khác Các tài liệu được sử dụng trong tiểu luận có nguồn gốc, xuất xứ rõ ràng
(Ký và ghi rõ họ tên)
Nguyễn Hữu Hồng Sơn
Trang 4Lời cảm ơn
Em xin gửi lời cảm ơn sâu sắc đến thầy Nguyễn Tài Tuyên – Giảng viên môn IoT
và ứng dụng - Học viên Công nghệ Bưu chính Viễn thông đã nhiệt tình hướng dẫn và trang bị cho em kiến thức cần có trong suốt thời gian làm báo cáo Thầy đã tạo rất nhiều điều kiện thuận lợi, định hướng, chỉ bảo tận tình và cho những lời khuyên quý báu giúp
em giải quyết những khó khăn trong việc tiếp cận những kiến thức và thiết bị mới Đồng thời, thầy đã giúp em hiểu những kiến thức quan trọng, tiếp cận với cách tư duy, giải quyết và trình bày để có thể tìm hiểu và hoàn thành báo cáo đúng thời hạn
Lời nói cuối, em xin chân thành cảm ơn!
Hà Nội, tháng 12 năm 2022
Sinh viên
Nguyễn Hữu Hồng Sơn
Trang 5MỤC LỤC
PHẦN MỞ ĐẦU 6
PHẦN NỘI DUNG 6
1 ĐẶT VẤN ĐỀ 6
2 NỘI DUNG VÀ KẾT QUẢ THỰC HIỆN 7
2.1 Yêu cầu đối với hệ thống 7
2.1.1 Monitor 7
2.1.2 Sensor 7
2.2 Các thuật toán được sử dụng trong hệ thống: 7
2.2.1 Model YOLO-V3 7
2.2.2 Model AlphaPose 8
2.2.3 RMPE 9
2.2.4 Object Tracking 10
2.2.5 DeepSORT 10
2.2.6 Spatial-Temporal Graph Convolutional Networks (ST-GCN) 11
2.3 Xây dựng hệ thống 12
2.3.1 Luồng mở camera – Thông báo ngã Realtime 12
2.3.2 Luồng hiển thị thông tin chi tiết sự kiện ngã 12
2.3.3 Lưu đồ thuật toán 13
2.3.4 Code (Được đính kèm cùng với bài tiểu luận) 14
2.4 Kết quả 14
2.5 Nhận xét 15
2.6 Đề xuất giải pháp và khuyến nghị 15
PHẦN KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 16
PHỤ LỤC 16
Trang 6PHẦN MỞ ĐẦU
Theo thống kê về vấn đề dân số của Liên hợp quốc năm 2008, tỉ lệ người cao tuổi tăng từ 10% năm 2010 lên 23% và năm 2050 Đó là hệ quả của tỷ suất sinh giảm, tỷ suất chết giảm và tuổi thọ trung bình tăng nhanh Bên cạnh đó, tỷ lệ người cao tuổi sống cùng con cháu đang giảm nhanh, tỷ lệ hộ gia đình người cao tuổi sống cô đơn hoặc chỉ có vợ chồng người cao tuổi tăng lên đáng kể Trong bối cảnh người cao tuổi sống cô đơn và không khỏe mạnh, người già gặp rất nhiều nguy hiểm khi đột quỵ hay ngã mà không được phát hiện, cấp cứu kịp thời Bài tập này nghiên cứu về phương thức phát hiện ngã tự động nhằm góp phần tìm ra giải pháp gia tăng sự an toàn cho người cao tuổi sống một mình nói riêng,
và cho tất cả mọi người nói chung
Một thực trạng về điện kiện y tế khác là sự quá tải của bệnh viện, làm lãng phí thời gian và sức lao động của nhiều người khi 1 người đi viện phải có người chăm sóc, cũng như gây cản trở các bác sĩ trong khi thăm khám Nếu có một hệ thống giám sát bệnh nhân
tự động sẽ giúp giảm bớt số người chăm sóc, giảm tải sự quá tải của bệnh viện
Vì những lý do trên, em quyết định nghiên cứu tìm hiểu về đề tài xây dựng một hệ thống phát hiện ngã tự động thông qua camera đơn
PHẦN NỘI DUNG
1 ĐẶT VẤN ĐỀ
- Ngày này, các hệ thống xây dựng từ các cảm biến phục vụ cho y tế, chăm sóc sức khỏe đang được phát triển rộng rãi Hệ thống phát hiện tự động cảnh báo ngã là một sản phẩm thông minh đã được nhiều tổ chức trên thế giới chú ý phát triển Đặc biệt ở các nước phát triển như Nhật, Mỹ, EU…., sản phẩm sản phẩm thông minh đã trở nên gần gũi với người dân Các loại máy hỗ trợ trong ngành y tế cũng là một lĩnh vực được đầu tư phát triển, có rất nhiều sản phẩm như vậy trên thị trường , như thiết bị trợ thính thiết bị hỗ trợ giọng nói, các sản phẩm hỗ trợ dân dụng khác…
- Ở Việt Nam, những năm gần đây, những hệ thống thông minh cũng đã xuất hiện, nhưng
sự phát triển của những hệ thống này ở Việt Nam rất đơn giản và ít lựa chọn Về cơ bản,
Trang 7Hệ thống phát hiện tự động cảnh báo ngã gồm hai phần phần phát hiện ngã và phần nhận tín hiệu báo ngã, ứng dụng các các hệ thống hiện đại
2 NỘI DUNG VÀ KẾT QUẢ THỰC HIỆN
2.1 Yêu cầu đối với hệ thống
2.1.1 Monitor
- Máy Monitor chia làm 3 phần gồm phần:
+ Phần Backend: Giao tiếp với sensor và kết nối với frontend được viết bằng Java Spring boot,JPA,Hibernate
+ Phần Frontend: Hiển thị giao diện kết nối với người dùng được viết bằng HTML,CSS,JavaScript
+ Phần DBMS MySQL: Lưu trữ dữ liệu hệ thông khi máy Sensor gửi về cho Backend
- Monitor dùng kỹ thuật Server-Sent Events (SSE) (là công nghệ đẩy máy chủ cho phép máy khách nhận cập nhật tự động từ máy chủ thông qua kết nối HTTP và mô tả cách máy chủ có thể bắt đầu truyền dữ liệu tới máy khách sau khi kết nối máy khách ban đầu được
2.1.2 Sensor
- Mỗi sensor có 1 camera và bộ xử lý, tài nguyên tính toán riêng biệt, giúp phân tán, giảm thiểu tắc nghẽn, lỗi tại nút kiến toàn bộ hệ thống không hoạt động
- Sensor sử dụng FastAPI để có thể giao tiếp với Monitor, dùng kĩ thuật đa luồng để phát hiện ngã
- Mỗi khi Monitor yêu cầu mở camera, Sensor tạo một tiến trình phát hiện ngã chạy song song với hệ thống Mỗi khi phát hiện ngã, gửi ảnh, thời gian, địa điểm (tên Sensor) cho Monitor qua giao thức HTTP
- Khi Monitor yêu cầu tắt camera, Sensor dừng tiến trình phát hiện ngã
2.2 Các thuật toán được sử dụng trong hệ thống:
2.2.1 Model YOLO-V3
- Ứng dụng sử dụng model YOLO-V3 để phát hiện từng người trong khung hình và sử dụng
Trang 8model AlphaPose để xác định tư thế khung xương, sau đó sử dụng mô hình ST-GCN để dự đoán hành động từ mỗi 30 khung hình của mỗi người sử dụng tracking
- You only look once(Yolo) là một trong những thuật toán nhận diện vật thể nhanh nhất thời điểm hiện tại Mặc dù không phải là phương pháp chính có độ xác cao nhất tuy nhiên Yolo vẫn là được ứng dụng rất nhiều trong những dự án thực tế khi mà độ chính xác không phải là ưu tiên hàng đầu
2.2.2 Model AlphaPose
- Giới thiệu Human Pose Estimation (HPE): Human Pose là sự thể hiện định hướng của một người ở định dạng đồ họa (khung xương) Về cơ bản, nó là một tập hợp các tọa độ có thể được kết nối để mô tả tư thế của một người Mỗi phối hợp trong khung xương được gọi
là một 7 bộ phận (hoặc một khớp - joint, một điểm chính - keypoint) Một kết nối hợp lệ giữa hai phần được gọi là một cặp (hoặc một chi - limb) Không phải tất cả các kết hợp bộ phận đều tạo ra các cặp hợp lệ
- Multi-Person Pose Estimation: Multi-Person Pose Estimation sẽ khó hơn nhiều so với Single-Person Pose Estimation, bởi vì chúng ta không biết vị trí của mỗi người dẫn đến việc nhầm lẫn giữa các bộ phận của mỗi người với nhau Để giải quyết vấn đề này, có thể tiếp cận 1 trong 2 cách sau:
+ Top-Down: Đầu tiên, sử dụng kỹ thuật Object Detection để xác định vị trí của từng người trước, sau đó mới thực hiện Pose Estimation cho mỗi người trong từng vị trí cụ thể đó Ưu điểm của cách này là đơn giản, dễ thực hiện Còn độ chính xác thì còn tùy vào từng ngữ cảnh
+ Down-Top: Ngược lại với cách trên, cách này sẽ phát hiện toàn bộ các bộ phận của mọi người trong ảnh trước, sau đó mới liên kết lại với nhau để xác định Pose của mỗi người
Trang 9Hình 1 AlphaPose
2.2.3 RMPE
- AlphaPose (RMPE) là một đại diện phổ biến của HPE theo chiến lược topdown Phương pháp thường phụ thuộc vào độ chính xác của thuật toán phát hiện người trước đó Nếu việc phát hiện đối tượng người không chính xác thì hiệu quả của HPE cũng theo đó mà giảm xuống
- Sơ đồ hoạt động của Alpha-Pose – mô hình top-down pose estimation có dạng như hình bên dưới
Trang 10- Với mỗi phân vùng mô hình sẽ dự đoán nhiều skeleton và sau đó sử dụng thuật toán non maximum suppression (Pose NMS) để chọn ra skeleton có độ chính xác cao nhất Các mô hình top-down có độ chính xác và thời gian xử lý phụ thuộc vào mô hình nhận dạng người
và sẽ tăng lên khi số lượng người trong khung ảnh tăng
2.2.4 Object Tracking
- 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
- Phân loại: Object Tracking có thể chia thành 2 cách tiếp cận chính
+ 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ó
+ Multiple Object Tracking (MOT): Multiple 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
2.2.5 DeepSORT
- DeepSORT 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 đó là Matching Cascade giúp việc liên kết các đối tượng sau khi đã biến mất 1 thời gian được hiệu quả hơn Trong multiple object tracking, đặc biệt là đối với lớp thuật toán tracking-bydetection, 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
Trang 11ra khỏi bộ nhớ, …
- Trong deep SORT, nhóm tác giả giải quyết vấn đề data association dựa trên thuật toán Hungary (tương tự như SORT), tuy nhiên, việc liên kết không chỉ dựa trên IOU mà còn quan tâm đến các yếu tố khác: khoảng cách của detection và track (xét tính tương quan trong không gian vector) và khoảng cách cosin giữa 2 vector đặc trưng được trích xuất từ detection và track (chi tiết được trình ở các phần sau) - 2 vector đặc trưng của cùng 1 đối tượng sẽ giống nhau hơn là đặc trưng của 2 đối tượng khác nhau
- Luồng xử lý của Deep SORT được thực hiện tuần tự qua các bước sau:
● Bước 1: Sử dụng Faster Region CNN (với backbone là VGG16) để phát hiện các đối tượng trong khung hình hiện tại
● Bước 2: Deep SORT sử dụng Kalman Filter để dự đoán các trạng thái track mới dựa trên các track trong quá khứ 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), và sẽ cố gắng được 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 11
● Bước 3: Sử dụng những track đã được xác nhận, tiến hành đưa vào chiến lược đối sánh phân tầng (matching cascade) nhằm liên kết với các detection phát hiện được dựa trên
độ đo về khoảng cách và đặc trưng
● Bước 4: Các track và các detection chưa được liên kết sẽ được đưa đến 1 lớp lọc tiếp theo Sử dụng giải thuật Hungary giải bài toán phân công với ma trận chi phí IOU để liên kết lần 2
● Bước 5: Xử lý, phân loại các detection và các track ● Bước 6: Sử dụng Kalman filter để hiệu chỉnh lại giá trị của track từ những detection đã được liên kết với track và khởi tạo các track mới
2.2.6 Spatial-Temporal Graph Convolutional Networks (ST-GCN)
- ST-GCN (mạng lưới đồ thị theo không gian thời gian) là một mô hình học máy dùng để phát hiện hành động của con người dựa trên thông tin về khung xương thu được từ các thuật toán Pose Estimation
- Model pretrain: Model ST-GCN được train với bộ dataset NTU RGB-D để phát hiện 60
Trang 12loại hành động Ở bài toán này, em quyết định train lại model với 2 class là fall và no fall + Đầu vào ST-GCN được định dạng là (1, 3, 300, 18, 2), tương ứng với ( batch, chanel, frame, joint, person ) channel=0 là tọa độ x của khớp được chuẩn hóa trong phạm vi hơn [-0,5, 0,5], channel=1 là tọa độ y tương ứng, channel=2 là giá trị tin cậy, joint là chỉ số khớp trong khung và person là chỉ số người
+ Đầu ra sẽ là giá trị tin cậy(confidence) của ( batch, class, output_frame, Joint, person )
Để phát hiện một hành động, hãy tính tổng các giá trị tin cậy cho mỗi lớp và chọn lớp có giá trị cao nhất Output_frame là số lượng khung hình đầu vào chia cho 4 Đầu ra các tính năng chỉ được sử dụng để trực quan hóa các điểm chính nào đã góp phần vào hành động được phát hiện
2.3 Xây dựng hệ thống
2.3.1 Luồng mở camera – Thông báo ngã Realtime
Hình 2 Luồng mở camera – Thông báo ngã Realtime 2.3.2 Luồng hiển thị thông tin chi tiết sự kiện ngã
Trang 13Hình 3 Luồng hiển thị thông tin chi tiết sự kiện ngã 2.3.3 Lưu đồ thuật toán
Trang 14Hình 4 Lưu đồ thuật toán 2.3.4 Code (Được đính kèm cùng với bài tiểu luận)
2.4 Kết quả
Hình 5 Kết quả thực nghiệm
Trang 152.5 Nhận xét
- Về mặt thực tiễn: Hệ thống này phát hiện ngã dựa trên việc trích xuất thông tin về khung xương, và theo dõi qua các khung hình của từng người, sau đó dùng thuật toán liên quan đến tích chập đồ thị để đưa ra được kết luận Việc đưa ra dự đoán về việc ngã hay không dựa trên thông tin không phải trong một thời điểm mà dựa trên 1 khoảng thời gian (30 frames) đã làm tăng đáng kể độ chính xác của dự đoán
- Về kết quả: Tỷ lệ chính xác ở mức trung bình
- Về giao diện: Giao diện cơ bản, cần cải thiện thêm
- Về tốc độ xử lý của hệ thống: ở mức trung bình, có độ trễ khi đưa ra kết quả Cần nghiên cứu để tối ưu thêm Từ đó có thể đưa ra kết quả một cách tức thì (realtime)
2.6 Đề xuất giải pháp và khuyến nghị
- Về mặt trải nghiệm người dùng: Phát triển thêm một số tính năng và cải thiện về mặt giao diện
- Nghiên cứu thêm để triển khai thiết bị trên các thiết bị edge device nhỏ gọn như: Raspberry
Pi, Jetson Nano, để thuận tiện hơn cho việc triển khai ở các bệnh viện
PHẦN KẾT LUẬN
Qua quá trình nghiên cứu, em đã tìm hiểu các giải thuật về thị giác máy tính như: thuật toán phát hiện người, thuật toán object tracking, pose estimation, stgcn và có những hiểu biết cơ bản về các dạng bài toán này, làm nền tảng cho quá trình học tập nghiên cứu tiếp theo của bản thân trong lĩnh vực này Về mặt thực tiễn, bài tập này đã giới thiệu một phương thức phát hiện ngã dựa trên việc trích xuất thông tin về khung xương, và theo dõi qua các khung hình của từng người, sau đó dùng thuật toán liên quan đến tích chập đồ thị
để đưa ra được kết luận Việc đưa ra dự đoán về việc ngã hay không dựa trên thông tin không phải trong một thời điểm mà dựa trên 1 khoảng thời gian (30 frames) đã làm tăng đáng kể độ chính xác của dự đoán Ứng dụng được viết bằng ngôn ngữ Python và sử dụng