You are on page 1of 18

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áng 12 năm 2022


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

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: Giảng viên hướng dẫn:


Nguyễn Hữu Hồng Sơn TS. Nguyễn Tài Tuyên

2
Hà Nội, tháng 12 năm 2022

3
Lờ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

4
Lờ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

5
MỤ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........................................................................................................16
TÀI LIỆU THAM KHẢO.............................................................................................16
PHỤ LỤC....................................................................................................................... 17

6
PHẦ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,
7
Hệ 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
thiết lập) để có thể cập nhật thông báo realtime từ Backend tới Frontend
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ử
8
dụng model 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.

9
Hì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.

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à
11
xóa track ra 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
12
loạ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ã

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

14
Hì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ả


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

15
Hình 5. Kết quả thực nghiệm
- Biểu đồ thể hiện kết quả (Test 20 trường hợp, trong đó có 13 trường hợp cho kết quả
đúng và 7 trường hợp cho kết quả chưa chính xác)

Hình 6. Biểu đồ kết quả

2.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
16
- 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
một số thư viện mã nguồn mở như OpenCV, Pytorch, FlaskAPI,.. Dựa vào những kết quả
thu được, ta có thể 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.

TÀI LIỆU THAM KHẢO


[1] Viblo. (30/12/2015) Tạo models tùy chỉnh cho YOLO v3 detect custome object
with yolo v3. Truy cập ngày 1/12/2022 từ https://viblo.asia/p/cnn-tao-models-uy-chinh-
cho-yolo-v3-detect-custom-object-with-yolo-v3-4dbZNp9L5YM

[2] TiensuGithub. (12/12/2016) Giới thiệu Human Pose Estimation và Detectron2 platform .
Truy cập ngày 1/12/2022 từ https://tiensu.github.io/blog/86_human_pose_estimation

[3] Mattdinh. (05/08/2017) Tổng quan về Object Tracking Truy cập ngày 1/12/2022 từ

17
https://mattdinh-aifighter.com/tong-quan-ve-object-tracking/

[3] Viblo. (18/12/2020) SORT - Deep SORT : Một góc nhìn về Object Tracking
Truy cập ngày 1/12/2022 từ https://viblo.asia/p/sort-deep-sort-mot-goc-nhin-ve-object-
tracking-phan-1-Az45bPooZxY

PHỤ LỤC

Danh mục các hình vẽ

TT Hình Nội dung Trang


Hình 1 AlphaPose 9
Hình 2 Luồng mở camera – Thông báo ngã Realtime 12
Hình 3 Luồng hiển thị thông tin chi tiết sự kiện ngã 13
Hình 4 Lưu đồ thuật toán 14
Hình 5 Kết quả thực nghiệm 14
Hình 5 Biểu đồ kết quả 15

18

You might also like