Danh Sách 45 Video Dùng Làm Dữ Liệu


THEN giatri = 1;


ENDIF ENDIF

ENDFOR



Theo vết chuyển động


Giai đoạn theo vết chuyển động của từng đầu học sinh trong video sau khi có kết quả tìm được tập các vùng đầu của học sinh trong lớp học 𝐷𝑑𝑎𝑢. Thực hiện thuật toán theo vết chuyển động các vùng đầu học sinh bởi vì có thể trong một khoảng thời gian các bạn học sinh sẽ dịch chuyển nên cần tìm được vị trí

trung bình cho quá trình điểm danh để cho kết quả chính xác nhất. Vì vùng đầu của học sinh (hình chữ nhật bao vùng đầu) có đặc trưng mức độ đồng nhất mức xám (ở không gian xám) chiếm gần như cả hình chữ nhật bao quanh (có tỷ lệ lớn), do đó nên dùng đặc tính mức độ tương quan để theo vết chuyển động sẽ cho kết quả tốt hơn so với các phương pháp theo vết chuyển động khác. Vì vậy, chúng tôi hiệu chỉnh thuật toán theo vết chuyển động theo mức độ tương quan mức xám thành thuật toán theo vết chuyển động vùng đầu các em học sinh trong lớp học.

Thuật toán theo vết chuyển động tương quan được mô tả như sau trong thuật toán 3.5.


Thuật toán 3.5: thuật toán theo vết chuyển động


INPUT:


Video, frame thứ i (𝐹𝑖)

Vị trí đối tượng ở frame trước đó 𝑝𝑖−1 và tỷ lệ 𝑠𝑖−1

Mô hình biến đổi 𝑋ℎ𝑖𝑛ℎ, 𝑌ℎ𝑖𝑛ℎ và mô hình tỷ lệ

𝑋𝑑𝑎𝑛𝑔, 𝑌𝑑𝑎𝑛𝑔

𝑖−1

𝑖−1

𝑖−1 𝑖−1


OUTPUT:


Ước lượng vị trí đối tượng ở frame thứ t 𝑝𝑖; và tỷ lệ 𝑠𝑖;

Cập nhật mô hình biến đổi 𝑋ℎ𝑖𝑛ℎ, 𝑌ℎ𝑖𝑛ℎ ;

𝑖 𝑖


và mô hình tỷ lệ 𝑋𝑑𝑎𝑛𝑔, 𝑌𝑑𝑎𝑛𝑔;

𝑖 𝑖


Ước lượng biến đổi:


Trích một mẫu biến đổi 𝑧ℎ𝑖𝑛ℎ từ 𝐹𝑖 tại 𝑝𝑖−1 và tỷ lệ

𝑠𝑖−1

Tính tương quan biến đổi 𝑤ℎ𝑖𝑛ℎ với 𝑧ℎ𝑖𝑛ℎ, 𝑋ℎ𝑖𝑛ℎ, 𝑣à 𝑌ℎ𝑖𝑛ℎ


(từ công thức 3.2)

𝑖−1

𝑖−1


Đặt 𝑝𝑖 thành vị trí mục tiêu mà được cực đại hóa

𝑤ℎ𝑖𝑛ℎ

Ước lượng tỷ lệ:


Trích một mẫu tỷ lệ 𝑧𝑑𝑎𝑛𝑔 từ 𝐹𝑖 tại 𝑝𝑖 và tỷ lệ 𝑠𝑖−1

Tính tương quan tỷ lệ 𝑤

với 𝑧

, 𝑋𝑑𝑎𝑛𝑔, 𝑣à 𝑌𝑑𝑎𝑛𝑔


(từ công thức 3.2)

𝑑𝑎𝑛𝑔

𝑑𝑎𝑛𝑔

𝑖−1

𝑖−1


Đặt 𝑠𝑖 thành tỷ lệ mục tiêu mà được cực đại hóa

𝑤𝑑𝑎𝑛𝑔

Cập nhật mô hình:


Trích các mẫu 𝑓ℎ𝑖𝑛ℎ 𝑓𝑑𝑎𝑛𝑔 từ 𝐹 tại 𝑝𝑖 𝑠𝑖

Cập nhật mô hình biến đổi 𝑋ℎ𝑖𝑛ℎ, 𝑌ℎ𝑖𝑛ℎ


(từ công thức 3.1 a,b)

𝑖 𝑖

Cập nhật mô hình tỷ lệ 𝑋𝑑𝑎𝑛𝑔, 𝑌𝑑𝑎𝑛𝑔


(từ công thức 3.1a, công thức 3.1b)

𝑖 𝑖


𝑋𝑙= (1 − 𝜂)𝑋𝑙+ 𝜂̅𝐺̅̅𝑡𝐹𝑙

𝑖 𝑖−1 𝑖


𝑑

𝑌𝑖 = (1 − 𝜂)𝑌𝑖−1 + 𝜂 ∑ ̅𝐹̅̅𝑘̅ 𝐹𝑘

𝑖 𝑖

𝑘=1


(3.1 a)


(3.1 b)

𝑑̅𝑋̅̅𝑙𝑍𝑙

𝑤 = ℱ−1 { 𝑙=1 }

𝑌 + 𝜆


(3.2)

Có thể bạn quan tâm!

Xem toàn bộ 97 trang tài liệu này.

Hệ thống điểm danh học sinh thông qua nhận dạng đầu học sinh kết hợp theo vết chuyển động trong video - 8


Từ kết quả của thuật toán 3.5 nêu trên sau khi được hiệu chỉnh cho phù hợp với bài toán điểm danh học sinh, chúng tôi có được thuật toán theo vết chuyển động vùng đầu của các đối tượng là vùng đầu của từng học sinh trong lớp học, thuật toán 3.6.


Thuật toán 3.6: thuật toán theo vết chuyển động các đối tượng vùng đầu của từng học sinh trong lớp học

INPUT:


Video với vị trí frame bắt đầu trong video;


𝐷𝑑𝑎𝑢 = {𝐷𝑖/𝑖 = 1. . 𝑁}; Bước nhảy frame f

OUTPUT:


𝑘

𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢 = {𝑇𝑖 𝑖 = 1. . 𝑁} 𝑇𝑖 = {𝐷𝑎𝑢𝑖 / 𝑘 = 1. . 𝑀}; (với M là số lượng frame dùng để theo vết)

M = size(video)/f;

FOR u = 1 to N do


𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑢] = 𝐷𝑢;

ENDFOR


𝑝1 = 𝐷𝑑𝑎𝑢 ;


initital(𝑠1);

initial(𝑋ℎ𝑖𝑛ℎ, 𝑌ℎ𝑖𝑛ℎ, 𝑋𝑑𝑎𝑛𝑔, 𝑌𝑑𝑎𝑛𝑔);

1 1 1 1


FOR u = 2 to M do


𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢. 𝑡ℎ𝑒𝑜𝑣𝑒𝑡𝐷𝑎𝑢(𝑣𝑖𝑑𝑒𝑜. 𝑡𝑖𝑚𝐹𝑟𝑎𝑚𝑒(𝑢), 𝑝𝑢−1, 𝑠𝑢−1,

𝑋ℎ𝑖𝑛ℎ, 𝑌ℎ𝑖𝑛ℎ, 𝑋𝑑𝑎𝑛𝑔, 𝑌𝑑𝑎𝑛𝑔);

𝑢−1

𝑢−1

𝑢−1

𝑢−1


FOR i=1 to N do


𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑖] = 𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑖] ∪ 𝑝𝑢[𝑖];

ENDFOR ENDFOR

Tính vị trí tâm trung bình vùng đầu từng học sinh


Bước tiếp theo của bài toán điểm danh, sau khi đã có tập hợp tất cả các vị trí chuyển động vùng đầu của từng học sinh trong lớp học là tìm vị trí tâm trung bình của vùng đầu của từng học sinh trong lớp thông qua khoảng cách Euclide, thuật toán 3.7.


Thuật toán 3.7: Thuật toán tính vị trí tâm trung bình của vùng đầu từng học sinh

INPUT:


𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢

OUTPUT:


𝑖

𝑉𝑖𝑇𝑟𝑖𝑑𝑎𝑢 = {𝑉𝑖𝑇𝑟𝑖𝑎𝑣𝑒 = (𝑎, 𝑏)/𝑖 = 1. . 𝑁, (𝑎, 𝑏) ∈ ℤ2}

FOR i = 1 to N do


FOR j = 1 to M do


𝑎𝑙 = 𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑖].timDau().ViTri1A();


𝑎𝑟 = 𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑖].timDau().ViTri2A();

𝑏𝑙 = 𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑖].timDau().ViTri1B();

𝑏𝑟 = 𝑇ℎ𝑒𝑜𝑉𝑒𝑡𝑑𝑎𝑢[𝑖].timDau().ViTri2B();


TB[𝑖][𝑗] =

𝑎𝑙+𝑎𝑟 , 𝑏𝑙+𝑏𝑟);

(

2 2


ENDFOR


𝑎𝑡𝑜𝑛𝑔 = 0;

𝑏𝑡𝑜𝑛𝑔 = 0;

FOR j = 1 to M do


𝑎𝑡𝑜𝑛𝑔 = 𝑎𝑡𝑜𝑛𝑔 + TB[𝑖][𝑗]. 𝑡𝑎𝑜𝐴();

𝑏𝑡𝑜𝑛𝑔 = 𝑏𝑡𝑜𝑛𝑔 + 𝑇𝐵[𝑖][𝑗]. 𝑡𝑎𝑜𝐵();


ENDFOR


𝑉𝑖𝑇𝑟𝑖


𝑎𝑡𝑜𝑛𝑔 𝑏𝑡𝑜𝑛𝑔

[ ]

𝑖 = ( , );

𝑑𝑎𝑢

𝑀 𝑀


ENDFOR


SapXep(𝑉𝑖𝑇𝑟𝑖𝑑𝑎𝑢);



Điểm danh học sinh trong lớp học


Cuối cùng là bài toán điểm danh học sinh. Để điểm danh học sinh, chúng tôi dùng sơ đồ lớp đã được xây dựng trước bao gồm: vị trí bàn ghế của lớp học được sắp xếp cố định trong phòng học, vị trí học sinh được bố trí ở vị trí bàn ghế theo sơ đồ đã được giáo viên chủ nhiệm sắp xếp và đăng ký với Phòng Công tác học sinh (khi có thay đổi sẽ được báo cáo để cập nhật dữ liệu). Khi có được sơ đồ lớp như mô tả, chúng tôi xây dựng thuật toán 3.8 để điểm danh từng học sinh trong lớp học.


Trong thuật toán này dữ liệu đầu vào là vị trí đầu học sinh 𝑉𝑖𝑇𝑟𝑖𝑑𝑎𝑢, sơ đồ vị trí bàn học trong phòng và danh sách học sinh lớp học. Ta có biến 𝐷𝑆𝑏𝑎𝑛 để xác định học sinh có mặt hay vắng mặt khi hệ thống thực hiện điểm danh. Kết quả được so sánh vị trí tốt nhất (max) của tọa độ vùng đầu của học sinh tại vị trí bàn học sinh ngồi theo sơ đồ. Kết quả xuất ra là số vùng đầu học sinh tốt nhất đếm được, từ đó suy ra số lượng học sinh có mặt và vị trí học sinh vắng mặt (nếu có)


Thuật toán 3.8: thuật toán điểm danh học sinh trong lớp học


INPUT:


Vị trí đầu học sinh 𝑉𝑖𝑇𝑟𝑖𝑑𝑎𝑢 ;

Sơ đồ vị trí bàn học 𝑉𝑖𝑇𝑟𝑖𝑏𝑎𝑛 = {(𝑎, 𝑏, 𝑡𝑎𝑚)/(𝑎, 𝑏) ∈ ℤ2 𝑣à 𝑡𝑎𝑚 ∈ {0,1}} ;

Danh sách học sinh tương ứng 𝐷𝑆𝑏𝑎𝑛 = {(𝐷𝑆𝑡𝑒𝑛, 𝑔𝑖𝑎𝑡𝑟𝑖)/

𝑔𝑖𝑎𝑡𝑟𝑖 ∈ {0,1}};


OUTPUT:


𝐷𝑆𝑏𝑎𝑛 𝒈𝒊𝒂𝒕𝒓𝒊 = 1 nghĩa là học sinh có mặt tại lớp và nếu 𝒈𝒊𝒂𝒕𝒓𝒊 = 0 là học sinh vắng mặt.

FOR i = 1 to |𝑉𝑖𝑇𝑟𝑖𝑏𝑎𝑛| do

𝐷𝑆𝑏𝑎𝑛[𝑖]. 𝑡𝑎𝑜𝐺𝑖𝑎𝑇𝑟𝑖(0);

𝑃𝑜𝑠𝑡𝑎𝑏𝑙𝑒 [𝑖]. 𝑡𝑎𝑜𝑇𝑎𝑚(0);

ENDFOR


FOR i = 1 to N do


𝑑𝑚𝑖𝑛 = max;

𝑑 = max;


pos = -1;


FOR j = 1 to |𝑉𝑖𝑇𝑟𝑖𝑏𝑎𝑛| do

IF(! 𝑉𝑖𝑇𝑟𝑖𝑏𝑎𝑛[𝑗]. 𝑡𝑎𝑜𝑇𝑎𝑚()) 𝒕𝒉𝒆𝒏

𝑑 = 𝑘ℎ𝑜𝑎𝑛𝑔𝑐𝑎𝑐ℎ(𝑉𝑖𝑇𝑟𝑖𝑑𝑎𝑢[𝑖], 𝑉𝑖𝑇𝑟𝑖𝑏𝑎𝑛[𝑗]);

IF(𝑑 < 𝑑𝑚𝑖𝑛) then

𝑑𝑚𝑖𝑛 = 𝑑;

pos = j;


ENDIF ENDIF

ENDFOR


IF(𝑑𝑚𝑖𝑛 < 𝛿) THEN

𝐷𝑆𝑏𝑎𝑛[𝒑𝒐𝒔]. 𝑡𝑎𝑜𝐺𝑖𝑎𝑇𝑟𝑖(1);

𝑉𝑖𝑇𝑟𝑖𝑏𝑎𝑛[𝒑𝒐𝒔]. 𝑡𝑎𝑜𝑇𝑎𝑚(1);

ENDIF ENDFOR


KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN


Môi trường thực nghiệm

Bài toán điểm danh học sinh trong lớp học được chúng tôi cài đặt trên máy tính với cấu hình phần cứng gồm: CPU Intel® Core™ i5-6500 tốc độ 3.2HGz, RAM 16GB cùng với GPU 900MB. Máy tính chạy hệ điều hành Ubuntu 16.04; ngôn ngữ lập trình của bài toán điểm danh học sinh là Python 3 cùng sự hỗ trợ của các thư viện: Numpy 1.14.3, Opencv 3.4.0, Tensorflow 1.6.0, Keras 2.1.5,

Dlib 19.13.1.


Xây dựng dữ liệu

Dữ liệu của bài toán điểm danh học sinh bao gồm 45 video được quay tại 15 lớp khác nhau thuộc sáu khoa của Trường Trung cấp Thủy sản, bảng 4.1.

Bảng 4.1 Danh sách 45 video dùng làm dữ liệu


TT

TÊN VIDEO

TÊN LỚP

NGÀY

BUỔI

SĨ SỐ

1

M01

TKT33

03-02-2018

Chiều

16

2

M02

TKT33

03-02-2018

Chiều

17

3

M03

TKT33

03-02-2018

Chiều

17

4

M04

TTP33-3N

13-04-2018

Sáng

18

5

M05

TTP33-3N

13-04-2018

Sáng

20

6

M06

TTP33-3N

13-04-2018

Sáng

20

7

M07

TTP33

10-04-2018

Chiều

23

8

M08

TTP33

10-04-2018

Chiều

23

9

M09

TTP33

10-04-2018

Chiều

24

10

M10

TCB33-3N

12-04-2018

Sáng

20

11

M11

TCB33-3N

12-04-2018

Sáng

20

12

M12

TCB33-3N

12-04-2018

Sáng

19

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 06/02/2023