Professional Documents
Culture Documents
THÔNG TIN KẾT QUẢ NGHIÊN CỨU ĐỀ TÀI NCKH CỦA SINH VIÊN
Năm học: 2022 - 2023
1. Thông tin chung:
− Tên đề tài: Nghiên cứu xây dựng hệ thống cảnh báo dựa trên camera giám sát
− Lớp: ĐH CNTT K62 Khoa: Kỹ thuật – Công nghệ thông tin Năm thứ: 03
Xác nhận của khoa Sinh viên chịu trách nhiệm chính
thực hiện đề tài
(ký, họ và tên)
1
viên chúng em áp dụng kiến thức đã học vào thực tế và đặc biệt là góp phần thúc đẩy sự
phát triển ứng dụng khoa học công nghệ vào giáo dục.
2. Mục tiêu
Mục tiêu chung: Nghiên cứu và xây dựng thành công hệ thống cảnh báo cháy dựa
trên camera giám sát
Mục tiêu cụ thể:
- Xây dựng thành công hệ thống với giao diện đơn giản, dễ sử dụng.
- Xây dựng thành công các chức năng hệ thống như phát hiện cháy, xem các camera
hoạt động, gửi cảnh báo, xem lại hình ảnh các khu vực xảy ra sự cố.
- Xây dựng thành công hệ thống gửi được cảnh báo thông qua email, các ứng dụng
tin nhắn thời gian thực.
- Xây dựng thiết kế thành công hệ thống ghi được cảnh báo vào hệ thống để làm tư
liệu cho người giám sát.
3. Đối tượng, phạm vi nghiên cứu
* Đối tượng nghiên cứu
Hệ thống camera giám sát
Các phương pháp gửi cảnh báo đến người dùng
Các phương pháp phát hiện cháy
* Phạm vi nghiên cứu
Các phương pháp phát hiện cháy.
Các phương pháp có hiệu năng tốt trong giải quyết bài toán.
4. Nội dung nghiên cứu
- Nghiên cứu, tìm hiểu các ngôn ngữ lập trình web phù hợp và các công cụ bổ trợ
khác cho thiết kế web.
- Nghiên cứu, tìm hiểu các mô hình cảnh báo cháy dựa trên kĩ thuật học sâu.
- Mô tả chi tiết các chức năng cần có của trang web và xây dựng bố cục giao diện
cho trang web.
- Cài đặt trang web và hoàn thiện sản phẩm.
5. Phương pháp nghiên cứu
Để thực hiện nội dung nghiên cứu đã đề ra, đề tài sử dụng các phương pháp nghiên
cứu chính sau:
- Phương pháp nghiên cứu tài liệu lý thuyết liên quan tới vấn đề
- Nghiên cứu các công trình đã được công bố liên quan tới vấn đề
- Phương pháp lập trình, thử nghiệm
- Phương pháp phân tích, đánh giá
2
6. Bố cục
Đề tài được trình bày trong 3 phần:
Phần I. Mở đầu
Phần II. Nội dung
Chương 1. Cơ sở lý thuyết
Chương 2. Phân tích và thiết kế hệ thống
Chương 3. Cài đặt, giao diện và thao tác
Phần III. Kết luận
3
PHẦN 2: NỘI DUNG
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
Các hệ thống giám sát an ninh đã được nghiên cứu và ứng dụng nhiều trong các
thành phố ở Việt Nam và trên toàn thế giới. Các hệ thống đã tạo ra các môi trường và các
phần mềm nhằm đáp ứng nhu cầu của con người. Đặc biệt với sự phát triển của công
nghệ hình ảnh, con người đã tạo ra camera giúp giám sát bằng hình ảnh được áp dụng
mọi nơi, từ cơ quan, doanh nghiệp, trường học, gia đình đến phương tiện di chuyển và
những nơi công cộng. Công nghệ của camera đã phát triển hơn 50 năm, từ những camera
tương tự đến camera IP và hình ảnh được cải thiện với chất lượng cao. Minh chứng đó là
các hệ thống giám sát an ninh như là: hệ thống phát hiện người vi phạm khi tham
gia giao thông, hệ thống còi báo động, hệ thống kiểm soát vào ra,… Trong những năm
gần đây, ngày càng có nhiều phương pháp được đề xuất nhằm đạt được độ chính xác cao
cũng như có thể áp dụng để phát triển các hệ thống thực tế nhằm nâng cao chất lượng hệ
thống.
Đề tài tập trung nghiên cứu đề xuất các phương pháp nhằm giải quyết một vài vấn
đề như: Phát hiện sự cố, gửi cảnh báo, khoanh vùng sự cố. Phương pháp này có ưu điểm
là nhanh chóng xác định được các vùng có sự cố và gửi cảnh báo tới người dùng một
cách chính xác mà không cần người dùng phải giám sát và gọi điện.
Ngoài ra với sự phát triển của công nghệ thông tin và sự phát triển của xã hội. Qúa
trình phát triển và phát hiện các sự cố được thực hiện hoàn toàn thông qua môi trường
mạng máy tính. Việc sử dụng các hệ thống này sẽ giúp việc giám sát cảnh báo hiệu quả
chính xác hơn. Hiện nay một số nhà cung cấp đã triển khai các dịch vụ giám sát hình ảnh
bằng camera bằng Internet đến các doanh nghiệp, tổ chức lần hộ gia đình như dịch vụ
Megavnn của VNPT, dịch vụ IP Camera của Viettel hay dịch vụ Camera Cloud của FPT.
Tuy nhiên, vì còn nhiều hạn chế nên các dịch vụ hiện tại vẫn chưa phổ biến.
Hiện nay trên nhiều tỉnh thành trên toàn quốc đã chính thức áp dụng các hệ thống
camera giám sát để duy trì trật tự an ninh ví dụ như ở TP HCM đã vận hành hệ thống
giám sát trên quốc lộ 1A [1]. Ở khu vực Đồng Hới, hệ thống camera an ninh cũng đã
được lắp đặt và phát triển để giám sát và đáp ứng cơ bản một số mục tiêu cơ bản nhằm hỗ
trợ việc an ninh của khu vực thành phố. Tuy nhiên với sự phát triển của ngành công nghệ
thông tin tại thành phố thì hệ thống camera an ninh lại chưa đáp ứng được các nhu cầu về
cảnh báo sự cố như: cảnh báo cháy trong đô thị [2], cảnh báo có đánh nhau [3], truy vết
người ở các khu vực công cộng [4].
4
1.1. Giới thiệu môi trường phát triển web Django
1.1.1. Django là gì?
Django[5] là một nền tảng web framework sử dụng ngôn ngữ Python được phát triển
bởi Adrian Holovaty và Simon Willison từ năm 2003. Nó dựa trên python, nghĩa là mọi
người phải viết hầu hết mã của dự án bằng Python. Nhưng Django đi kèm với rất nhiều
mã soạn sẵn và do đó nó trở nên khá nhanh trong quá trình phát triển. Django được phát
triển dựa trên kiến trúc MVT (Model-View-Template) thay vì MVC (Model-View-
Controller). Django là một khuôn khổ mã nguồn mở, nó được duy trì bởi Tổ chức Quỹ
Phần mềm Django. Bởi vì Framework này được xây dựng bởi các nhà phát triển có kinh
nghiệm nên nó có khả năng xử lý hầu hết những phần phức tạp của việc phát triển web.
Do đó, mọi người có thể tập trung vào việc viết app mà không cần phải dừng lại để kiểm
tra. Django miễn phí và là open-source. Framework này có một cộng đồng người dùng
đông đảo và có nhiều tài liệu hỗ trợ.
1.1.2. Tính chất của Django
- Độ hoàn thành cao:
Django cung cấp hầu hết mọi thứ mà các developer có thể muốn để phát triển web
theo hướng mình muốn.
Tất cả các phần trong framework hoạt động liền mạch với nhau, tuân theo một
nguyên tắc thiết kế nhất quán và có tài liệu để mọi người tham khảo.
Nhờ đó, mọi người có thể vừa phát triển web theo phong cách riêng, vừa tiết kiệm được
thời gian
- Linh hoạt:
Django có thể sử dụng để xây dựng hầu hết mọi loại trang web- từ hệ thống quản lý
nội dung (như wiki), cho đến các trang mạng xã hội, tin tức.
Nó có thể hoạt động cùng với các framework bên ngoài và cũng có thể cung cấp nội
dung ở hầu hết mọi định dạng (bao gồm HTML, RSS feeds, JSON, XML,..v..v..).
Framework này còn cung cấp các tùy chọn khác nhau cho hầu hết các chức năng (như
công cụ tạo template, cơ sở dữ liệu phổ biến,..).
- Bảo mật:
Django giúp developer tránh được nhiều lỗi bảo mật phổ biến bằng cách cung cấp
framework có khả năng tự bảo vệ trang.
Ví dụ: Django cung cấp một giải pháp an toàn để quản lý tài khoản người dùng và
mật khẩu (password), tránh những lỗi phổ biến như đưa thông tin phiên vào ở nơi dễ bị
tấn công như cookie (thay vào đó cookie chỉ chứa key còn dữ liệu thực tế được lưu trữ
trong database) hoặc trực tiếp lưu trữ password chứ không phải lưu trữ password hash.
5
Django còn bảo vệ website khỏi những lỗ hổng khỏi những loại tấn công mạng như:
tấn công SQL injection, Cross-site Scripting, cross-site request forgery và clickjacking.
- Khả năng mở rộng:
Django sử dụng kiến trúc thành phần riêng nên mọi người có thể mở rộng quy mô
bằng cách thêm phần cứng vào các cấp độ (máy chủ bộ nhớ đệm, máy chủ cơ sở dữ liệu
hoặc máy chủ ứng dụng).
Instagram là ví dụ rõ ràng nhất cho khả năng mở rộng này.
- Khả năng duy trì:
Code của Django được viết bằng cách sử dụng các nguyên tắc và mẫu thiết kế
khuyến khích việc tạo mã có thể bảo trì và tái sử dụng.
Nó còn thúc đẩy việc nhóm các chức năng liên quan thành các “ứng dụng” có thể
tái sử dụng, từ đó giúp website có khả năng duy trì cao hơn.
1.1.3. Ưu điểm của Django
- Django đơn giản và nhanh chóng
Một trong những mục tiêu chính của Django là đơn giản hóa công việc cho
developer. Để làm điều đó, Django framework sử dụng:
+ Nguyên tắc phát triển nhanh chóng: tức là các nhà phát triển có thể thực hiện
nhiều iteration một lúc thay vì phải bắt đầu lại từ đầu.
+ Nguyên lý DRY (Don’t Repeat Yourself – không lặp lại)- có nghĩa là các nhà phát
triển có thể tái sử dụng các đoạn code hiện có và tập trung vào nó.
Các đoạn mã trùng lặp không cần thiết sẽ được framework này loại bỏ, từ đó giảm
số lượng code. Nhờ đó, bạn sẽ tiết kiệm được nhiều thời gian hơn.
- Bảo mật
Bảo mật cũng là ưu tiên hàng đầu của Django. Nó là một trong những framework có
hệ thống bảo mật tốt nhất hiện nay.
Nhờ hệ thống đó, các nhà phát triển có thể tránh các vấn đề về bảo mật phổ biến
như: Clickjacking; Cross-site scripting; Cross-site request forgery; SQL injection.
Framework này còn thường xuyên phát hành các bản vá bảo mật. Django được xem
là framework đi đầu trong việc phản hồi các lỗ hổng bảo mật và cách báo các framework
khác.
- Phù hợp với mọi dự án website
Với Django, Nó có thể giải quyết các dự án ở bất kỳ quy mô nào (từ trang web đơn
giản cho đến những ứng dụng web high-load).
6
+ Django có nhiều tính năng bổ sung và có thể mở rộng. Bạn có thể tạo các ứng
dụng xử lý lưu lượng truy cập lớn hoặc khối lượng lớn thông tin thông qua Django.
+ Django đa nền tảng (cross-platform). Bạn có thể chạy dự án trên Mac, Linux hoặc
PC đều được.
+ Django hoạt động với hầu hết các database chính và cho phép sử dụng cơ sở dữ
liệu khác nhau tùy thuộc vào dự án. Thậm chí, bạn có thể sử dụng nhiều cơ sở dữ liệu
cùng lúc.
- Cộng đồng người dùng và thiết lập hoàn thiện
Django set up khá tốt. Điều này đã được chứng nhận bởi thời gian và một số người
sử dụng khung công tác này.
Nó có một big user cộng đồng, được hỗ trợ truy cập thông qua nhiều diễn đàn, kênh
và các chuyên trang web.
Bạn sẽ dễ dàng nhận được sự trợ giúp khi các vấn đề liên quan đến Django cũng
như dễ dàng tìm thấy nhà phát triển chạy dự án cho công ty mình (nếu bạn có ý định chạy
dự án trên Django).
- Django có chi tiết tài liệu thư viện và được cập nhật liên tục.
Nhờ đó bạn hoàn toàn có thể thích ứng nhanh chóng với các thay đổi của khung này
(nếu có).
Các vấn đề liên quan sẽ luôn được giải quyết ngay khi chúng tôi phát sinh. Phần
mềm được cập nhật liên tục và các gói mới được phát hành để bạn làm việc với Django
ngày càng thuận lợi.
1.1.4. Tìm hiểu về MVT model của Django
Django giới thiệu rằng họ sử dụng MVC mô hình (Model View Control). Sự thật là
Django có đi theo MVC mô hình nhưng lại phát triển theo một hướng rất khác.
Django cho rằng khung chính là quyền kiểm soát. Và trên thực tế, các thành viên
lập trình lớn chỉ làm việc với View, Model, Template và View. Từ đó cho ra cái tên
Model View Template của Django, trong đó:
- Model: đóng vai trò tương tác với dữ liệu của ứng dụng. Chúng ta có thể coi
Model của Django là phần trung gian giữa cơ sở dữ liệu và View (Model giúp định nghĩa
cách thức lưu trữ, truyền nhận dữ liệu giữa database và View)
- View: có chức năng tiếp nhận dữ liệu cũng như các request từ người dùng và trả
về các response. View cũng tương tác với cơ sở dữ liệu để truyền dữ liệu sang Template
nhằm phục vụ mục đính hiển thị.
- Template: được viết dưới dạng .html file sử dụng HTML, CSS, Javascript…nhằm
cung cấp giao diện hiển thị cho người dùng.
7
Hình 1.1. Mô hình MVT của Django
1.1.5. Nguồn gốc của Django
- Năm 2003, Django được tạo ra khi các lập trình viên web của tờ báo Lawrence
Journal-World, Adrian Holovaty và Simon Willison, bắt đầu sử dụng Python để xây dựng
các ứng dụng. Jacob Kaplan-Moss đã sớm được thuê trong quá trình phát triển của
Django ngay trước khi kỳ thực tập của Simon Willison kết thúc.
- Vào tháng 7 năm 2005 Django được phát hành công khai theo giấy phép BSD và
được đặt theo tên của nghệ sĩ guitar Django Reinhardt Adrian Holovaty là một người
chơi guitar jazz người Roman.
- Vào tháng 6 năm 2008, có thông báo rằng Quỹ Phần mềm Django (DSF) mới
được thành lập sẽ duy trì Django trong tương lai.
- Có rất nhiều công ty đã phát triển các ứng dụng của mình bằng Django. Dưới đây
là một số công ty điển hình :
+ Instagram là một ứng dụng xã hội rất phổ biến. Django là cốt lõi của Instagram và
Django có khả năng tích hợp tuyệt vời với các công nghệ khác như ứng dụng iOS và
Android. Nó cho phép Instagram khởi chạy nhanh chóng và xử lý hàng triệu người dùng
hoạt động cùng lúc.
8
Hình 1.2. Logo Instagram
+ Disqus: Các nhà phát triển đã sử dụng Python và Django để xây dựng ứng dụng từ
đầu. Họ muốn trang web của họ được xử lý một số không lớn. của những người dùng
đang hoạt động cùng một lúc. Họ cũng tạo ra sentry, một ứng dụng kiểm tra lỗi và đây là
một công nghệ hiện đại cũng dựa trên Django.
9
Hình 1.6. Logo Youtube
1.2. Ngôn ngữ lập trình Python
1.2.1. Giới thiệu về Python
Python[6] là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng
(object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic
semantics). Python hỗ trợ các module và gói (packages), khuyến khích chương trình
module hóa và tái sử dụng mã. Trình thông dịch Python và thư viện chuẩn mở rộng có
sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có
thể được phân phối tự do.
10
- Python có thể kết nối với các đối tượng COM, .NET (Ironpython, Python for .net),
và CORBA, Java… Python cũng được hỗ trợ bởi Internet Communications Engine
(ICE) và nhiều công nghệ kết nối khác.
- Có thể viết các thư viện trên C/C++ để nhúng vào Python và ngược lại.
Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng.
- Python có cho mọi hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga, và
những hệ điều hành khác. Thậm chí có cả những phiên bản chạy trên .NET, máy ảo Java,
và điện thoại di động (Nokia Series 60). Với cùng một mã nguồn sẽ chạy giống nhau trên
mọi nền tảng.
Python rất đơn giản và dễ học
- Python có cộng đồng lập trình rất lớn, hệ thống thư viện chuẩn, và cả các thư viện
mã nguồn mở được chia sẻ trên mạng.
Python là ngôn ngữ mã nguồn mở
- Cài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự do,
ngay cả trong việc thương mại. Giấy phép Python được quản lý bởi Python Software
Foundation.
1.2.3. Lịch sử của Python
Python đã được hình thành vào cuối những năm 1980, và việc thực hiện nó vào
tháng 12 năm 1989 bởi Guido van Rossum tại Centrum Wiskunde & Informatica
(CWI) ở Hà Lan như là một kế thừa cho ngôn ngữ ABC (tự lấy cảm hứng từ SETL) có
khả năng xử lý ngoại lệ và giao tiếp với Hệ điều hành Amoeba. Van Rossum là tác giả
chính của Python, và vai trò trung tâm của ông trong việc quyết định hướng phát triển
của Python.
Về nguồn gốc của Python, Van Rossum đã viết vào năm 1996:
Hơn sáu năm trước, vào tháng 12 năm 1989, tôi đã tìm kiếm một dự án lập trình "sở
thích" mà nó đã chiếm đóng tâm trí tôi trong suốt tuần lễ Giáng sinh. Văn phòng của
tôi ... sẽ đóng cửa, nhưng tôi đã có một máy tính ở nhà, và không có nhiều thứ khác trên
tay. Tôi quyết định viết một bộ thông dịch (interprester) cho ngôn ngữ kịch bản mới mà
tôi đã từng nghĩ đến: một hậu duệ của ABC có thể hấp dẫn các hacker Unix/C. Tôi đã
chọn Python như là một tiêu đề làm việc cho dự án.
11
Hình 1.8. Guido van Rossum
Python 2.0 đã được phát hành vào ngày 16 tháng 10 năm 2000 và có nhiều tính
năng mới, bao gồm bộ thu gom rác theo chu kỳ (cycle-detecting garbage) và hỗ
trợ Unicode. Với việc phát hành này quá trình phát triển đã được thay đổi và trở nên
minh bạch hơn và cộng đồng hậu thuẫn
Python 3.0 được phát hành năm 2008, sau một thời gian dài thử nghiệm.
Cho tới nay, Python đang có phiên bản mới nhất 3.10.2
1.3. Kỹ thuật học sâu
Deep Learning là một chức năng của trí tuệ nhân tạo (AI), bắt chước cách bộ não
con người hoạt động để xử lí dữ liệu, tạo ra các mẫu để sử dụng cho việc đưa ra quyết
định.
1.3.1. Khái niệm
Deep Learning (học sâu) có thể được xem là một lĩnh vực con của Machine
Learning (học máy) – ở đó các máy tính sẽ học và cải thiện chính nó thông qua các thuật
toán. Deep Learning được xây dựng dựa trên các khái niệm phức tạp hơn rất nhiều, chủ
yếu hoạt động với các mạng nơ-ron nhân tạo để bắt chước khả năng tư duy và suy nghĩ
của bộ não con người.
Thật ra các khái niệm liên quan đến mạng nơ-ron nhân tạo và Deep Learning đã
xuất hiện từ khoảng những năm 1960, tuy nhiên nó lại bị giới hạn bởi khả năng tính toán
và số lượng dữ liệu lúc bấy giờ. Trong những năm gần đây, những tiến bộ trong phân tích
dữ liệu lớn (Big Data) đã cho phép ta tận dụng được tối đa khả năng của mạng nơ-ron
nhân tạo.
12
Mạng nơ-ron nhân tạo chính là động lực chính để phát triển Deep Learning. Các
mạng nơ-ron sâu (DNN) bao gồm nhiều lớp nơ-ron khác nhau, có khả năng thực hiện các
tính toán có độ phức tạp rất cao. Deep Learning hiện đang phát triển rất nhanh và được
xem là một trong những bước đột phá lớn nhất trong Machine Learning.
1.3.2. Cách thức hoạt động
Deep Learning là một phương pháp của Machine Learning. Mạng nơ-ron nhân tạo
trong Deep Learning được xây dựng để mô phỏng khả năng tư duy của bộ não con người.
Một mạng nơ-ron bao gồm nhiều lớp (layer) khác nhau, số lượng layer càng nhiều
thì mạng sẽ càng “sâu”. Trong mỗi layer là các nút mạng (node) và được liên kết với
những lớp liền kề khác. Mỗi kết nối giữa các node sẽ có một trọng số tương ứng, trọng số
càng cao thì ảnh hưởng của kết nối này đến mạng nơ-ron càng lớn.
Mỗi nơ-ron sẽ có một hàm kích hoạt, về cơ bản thì có nhiệm vụ “chuẩn hoá” đầu ra
từ nơ-ron này. Dữ liệu được người dùng đưa vào mạng nơ-ron sẽ đi qua tất cả layer và trả
về kết quả ở layer cuối cùng, gọi là output layer.
Trong quá trình huấn luyện mô hình mạng nơ-ron, các trọng số sẽ được thay đổi và
nhiệm vụ của mô hình là tìm ra bộ giá trị của trọng số sao cho phán đoán là tốt nhất.
Các hệ thống Deep Learning yêu cầu phần cứng phải rất mạnh để có thể xử lý được
lượng dữ liệu lớn và thực hiện các phép tính phức tạp. Nhiều mô hình Deep Learning có
thể mất nhiều tuần, thậm chí nhiều tháng để triển khai trên những phần cứng tiên tiến
nhất hiện nay.
1.3.3. Ưu điểm
Deep Learning là một bước ngoặt to lớn trong lĩnh vực trí tuệ nhân tạo, cho phép
khác nhà khoa học dữ liệu xây dựng nhiều mô hình có độ chính xác rất cao trong lĩnh vực
13
nhận dạng ảnh, xử lý ngôn ngữ tự nhiên, xử lý giọng nói,… Một số ưu điểm vượt trội của
Deep Learning gồm có:
Kiến trúc mạng nơ-ron linh hoạt, có thể dễ dàng thay đổi để phù hợp với nhiều vấn
đề khác nhau.
Kiến trúc mạng nơ-ron linh hoạt, có thể dễ dàng thay đổi để phù hợp với nhiều vấn
đề khác nhau.
Tính tự động hoá cao, có khả năng tự điều chỉnh và tự tối ưu.
Có khả năng thực hiện tính toán song song, hiệu năng tốt, xử lý được lượng dữ
liệu lớn.
1.3.4. Nhược điểm
Bên cạnh những ưu điểm, mặt khác, hiện nay Deep Learning vẫn còn nhiều khó
khăn và hạn chế, chẳng hạn như:
Cần có khối lượng dữ liệu rất lớn để tận dụng tối đa khả năng của Deep Learning.
Chi phí tính toán cao vì phải xử lý nhiều mô hình phức tạp.
Chưa có nền tảng lý thuyết mạnh mẽ để lựa chọn các công cụ tối ưu cho Deep
Learning.
1.3.5. Các kỹ thuật học sâu
Có rất nhiều kỹ thuật và thuật toán Deep Learning khác nhau, từ đơn giản đến vô
cùng phức tạp, có thể ứng dụng vào hầu hết các bài toán trong lĩnh vực trí tuệ nhân tạo
hiện nay:
Mạng nơ-ron cổ điển
Mạng nơ-ron tích chập (CNN)
Mạng nơ-ron hồi quy (RNN)
Mạng sinh đối nghịch (GAN)
Học tăng cường sâu
1.4. Mạng nơ-ron tích chập (CNN)
Mạng nơ-ron tích chập (Convolutional Neural Network – CNN) là một kiến trúc
Neural Network nhân tạo nâng cao, được xây dựng để giải quyết các bài toán phức tạp,
đặc biệt là liên quan đến xử lý hình ảnh.
Tích chập là một khái niệm trong xử lý tín hiệu số nhằm biến đổi thông tin đầu
vào qua một phép tích chập với bộ lọc, nhằm trả về đầu ra là một tín hiệu mới. Tín hiệu
này sẽ giảm bớt những đặc trưng mà bộ lọc không quan tâm, giữ lại những đặc trưng
chính và quan trọng nhất.
Bên cạnh input layer và output layer, mô hình CNN còn có thêm một sampling
layer để giới hạn số lượng nơ-ron tham gia vào các layer tương ứng. Việc xây dựng mô
hình trải qua ba giai đoạn chính:
14
Quá trình tích chập (convolution): Thông qua các tích chập giữa ma trận đầu vào
với bộ lọc để tạo thành các đơn vị trong một tầng mới. Quá trình này có thể diễn ra
liên tục ở phần đầu của mạng và thường sử dụng kèm với hàm kích hoạt ReLU.
Mục tiêu của tầng này là trích suất đặc trưng hai chiều.
Quá trình tổng hợp (max pooling): Giảm kích thước khối ma trận đầu vào thông
qua việc tìm ra 1 giá trị đại diện cho mỗi một vùng không gian mà bộ lọc đi qua sẽ
không làm thay đổi các đường nét chính của bức ảnh nhưng lại giảm được kích
thước của ảnh.
Quá trình kết nối hoàn toàn (fully connected): Sau khi đã giảm kích thước đến một
mức độ hợp lý, ma trận cần được trải phẳng (flatten) thành một vector và sử dụng
các kết nối hoàn toàn giữa các tầng. Tầng kết nối hoàn toàn cuối cùng (fully
connected layer) sẽ có số lượng đơn vị bằng với số lớp.
Dựa vào những đặc điểm của mình, các ứng dụng phổ biến nhất của mạng CNN gồm
có: Nhận diện, phân tích và phân khúc hình ảnh, phân tích video, xử lý ngôn ngữ tự
nhiên,…
15
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1. Phân tích thiết kế hệ thống
2.1.1. Bài toán
Ngôn ngữ lập trình là một trong những môn học nền tảng của ngành công nghệ
thông tin, rất khó để một giảng viên có thể truyền tải nội dung của các bài toán, kiểm tra
và sửa lỗi cho tất cả học viên trong một lớp. Đặc biệt trong giai đoạn sinh viên mới học
lập trình, một chương trình cần được giảng viên kiểm tra và sửa chữa nhiều lần. Vì vậy,
kỹ năng lập trình là một trở ngại lớn đối với hầu hết các bạn sinh viên khi học lập trình.
Đặc biệt đối với sinh viên chuyên ngành công nghệ thông tin, việc đánh giá chất lượng
thuật toán về thời gian chạy chương trình, hiệu quả, khả năng bao quát khó có thể đánh
giá toàn diện thông qua phân tích chương trình.
Hệ thống Kiểm tra và Đánh giá Kỹ năng Lập trình được thiết kế nhằm đáp ứng nhu
cầu rèn luyện kỹ năng, tự học, nâng cao kỹ năng lập trình, học thuật toán. Đảm bảo chất
lượng, kiến thức tốt cho học sinh khi làm bài. Sinh viên khi sử dụng hệ thống phải giải
quyết các bài toán với nhiều thể loại và các mức độ khó khác nhau. Việc xây dựng một
hệ thống đánh giá kỹ năng lập trình vừa giúp học sinh không phải tìm sách, vừa có thể
giúp học sinh ít tốn tiền mua tài liệu ôn tập và truy cập vào thư viện bài tập lớn các cấp.
Tuy nhiên vẫn phải đảm bảo vừa đủ kiến thức sách vở, rút ngắn thời gian tìm tài liệu, giải
bài tập. Kiến thức đủ rộng nên một phong trào tích cực để tìm ý tưởng đòi hỏi người học
phải suy nghĩ, động não, sau đó thảo luận, lựa chọn và sắp xếp các ý một cách hợp lý để
làm rõ và làm nổi bật vấn đề cần giải quyết. Như vậy, sinh viên sẽ rút ra kiến thức khóa
học, ý tưởng và kỹ năng giao tiếp khi họ tạo chương trình.
2.1.2. Đối với người dùng
- Đăng ký người: Người dùng đăng ký trực tiếp trên hệ thống bằng cách nhập vào
thông tin email và password và password confirm. Hệ thống sẽ kiểm tra thông tin nhập
vào có hợp lệ hay không. Nếu hợp lệ thì thông tin sẽ được gửi lên server để thực hiện
đăng ký. Dữ liệu người dùng sẽ được lưu lại hệ thống.
- Đăng nhập: Người dùng thực hiện nhập email và password. Hệ thống tiến hành
kiểm tra thông tin nhập vào có hợp lệ hay không. Nếu hợp lệ thì thông tin sẽ được gửi lên
server để truy vấn và server sẽ trả lại thông tin của người dùng, sau đó báo đăng nhập
thành công.
- Các kỳ thi: Hiển thị các kì thi, lịch của các kì thi sắp tới. Chức năng tìm kiếm các
kì thi, chọn kì thi muốn tham gia và tham gia vào kì thi.
- Danh sách bài: Hiển thị danh sách bài của các kì thi diễn ra, được sắp xếp theo
nhóm.Chức năng tìm kiếm các bài theo dạng đề và theo nhóm.
16
- Các bài nộp: Hiển thị danh sách các bài toán đã được nộp của tất cả và cá nhân
người dùng. Chức năng lọc các bài nộp, lọc theo ngôn ngữ, tổ chức, trạng thái, thống kê
trạng thái.
- Thành viên: Hiển thị Bảng xếp hạng các thành viên và tổ chức trên hệ thống,
- Thông tin: Hiển thị thông tin về hệ thống, máy chấm, các ngôn ngữ, phiên bản
trình chấm, custom checkers, Tips.
- Thư viện đề thi: Hiển thị các đề thi của các trường qua các năm
- Chỉnh sửa hồ sơ: Người dùng có thể đổi mật khẩu, bật xác thực hai yếu tố, đổi ảnh
đại diện.
2.1.3. Đối với admin
- Đăng nhập: admin thực hiện nhập email và password. Hệ thống tiến hành kiểm tra
thông tin nhập vào có hợp lệ hay không. Nếu hợp lệ thì thông tin sẽ được gửi lên server
để truy vấn và server sẽ trả lại thông tin của người dùng, sau đó báo đăng nhập thành
công.
- Bài: Admin quản lý tất cả các bài toán đã đăng, thêm bài và xóa bài với các thông
tin đầy đủ
- Bài đăng blog: Admin quản lý các bài đăng blog, thêm bài, khôi phục và xóa các
bài blog
- Nhận xét: Admin quản lý các nhận xét, thêm nhận xét, khôi phục và xóa các nhận
xét
- Hồ sơ người dùng: Admin quản lý hồ sơ tất cả các người dùng đăng kí vào hệ
thống, thêm, khôi phục và xóa người dùng
- Bài nộp: Admin quản lý tất cả các bài đã nộp. Thêm, khôi phục và xóa các máy
chấm.
- Kì thi: Quản lý các kì thi, thêm, khôi phục và xóa các kì thi, xếp hạng các kì thi.
2.2. Các biểu đồ hệ thống
2.2.1. Biểu đồ Use-case
- Use-case người dùng
17
Hình 2.10. Biểu đồ use-case người dùng
- Use-case admin
18
Hình 2.12. Use-case thông tin người dùng
2.2.2. Sơ đồ hệ thống cảnh báo thông qua camera giám sát
19
Hình 2-4: Mô hình kiến trúc vật lý hệ thống
20
CHƯƠNG 3. CÀI ĐẶT, GIAO DIỆN VÀ THAO TÁC
3.1. Cài đặt
Hệ thống chạy trên nền Linux. Do điều kiện nghiên cứu, chúng tôi chọn Ubuntu
server làm nền tảng cài đặt.
- Tạo cơ sở dữ liệu: Chúng ta sẽ thiết lập cơ sở dữ liệu bằng MariaDB. DMOJ chỉ
được thử nghiệm để hoạt động với MySQL và nó không có khả năng hoạt động với bất
kỳ thứ gì khác. Vui lòng truy cập trang MariaDB và làm theo hướng dẫn tải xuống. Tiếp
theo, chúng ta nên thiết lập cơ sở dữ liệu. Bạn sẽ được yêu cầu nhập mật khẩu gốc mà
bạn vừa đặt, sau đó bạn nên thực hiện các lệnh dưới đây để tạo cơ sở dữ liệu cần thiết.
- Chuẩn bị môi trường:
+ Đầu tiên, tạo một môi trường ảo.
+ Sau đó kích hoạt nó.
- Cài đặt QBUOJ:
Chúng tôi dựa vào DMOJ và VNOJ được cung cấp trên thư viện mã nguồn mở để
chỉnh sửa các chức năng cũng như giao diện phù hợp hơn để phục vụ cho việc sử dụng
đặc thù trong Trường đại học Quảng Bình. Từ đó, xây dựng được hệ thống mã nguồn
riêng của QBUOJ được cung cấp tại địa chỉ https://github.com/qbuailab/QBUOJ.
Tiến hành tải và cài đặt các module liên quan bằng các dòng lệnh sử dụng các cú
pháp git và cài đặt python từ shell của hệ thống:
+ Cài đặt các thư viện của Python và môi trường ảo và cấu hình cho file
dmoj/local_settings.py. Chúng ta nên tạo một bản sao tệp cài đặt mẫu từ đây và đọc qua
nó, thực hiện các thay đổi nếu cần.
+ Tổng hợp các nội dung: QBUOJ sử dụng sass và autoprefixer để tạo các
bảng định kiểu trang web. QBUOJ đi kèm với một make_style.sh tập lệnh có thể được
chạy để biên dịch và tối ưu hóa các bảng định kiểu.Thu thập các tệp tĩnh như được chỉ
định và tạo các tệp quốc tế hóa.
+ Thiết lập bảng cơ sơ dữ liệu và tải một số dữ liệu ban đầu để cài đặt.
+ Thiết lập Celery, QBUOJ sử dụng Celery worker để thực hiện các công
việc nặng nhọc như đánh điểm số cho 1 tập các bài nộp.
+ Thiết lập uWSGI làm module kết nối python.
+ Thiết lập supervisord và cấu hình nó dùng để giám sát, kết nối site, bridge
và celery đã chạy hay chưa.
+ Cài đặt nginx làm môi trường giao diện của hệ thống, chỉnh sửa và đặt file
“nginx.conf” ở bất cứ nơi nào được cho để cài đặt nginx. Thông thường nginx các tệp
trang web được đặt tại “/etc/nginx/conf.d”. Tiếp theo kiểm tra xem có bất kì vấn đề nào
với nginx và tải lại cấu hình nginx. Sau đó, truy cập trang web ở nơi mà chúng ta đã thiết
lập để thực hiện bước xác minh.
21
- Cài đặt máy chấm Judge: Cài đặt judge trên cùng máy chủ hoặc trên các máy tính
riêng biệt tùy theo số lượng người dùng đồng thời.
+ Đầu tiên hãy thêm giáo khảo ở trên trang quản trị nằm trong
https://example.com/admin/judge. Cung cấp tên của máy chấm và khóa xác thực cho máy
chấm. Bạn có thể sử dụng nút “Tạo lại” để tạo lại khóa xác thực.
+ QBUOJ hỗ trợ cài đặt máy chấm thông qua Docker và gói PyPi. Ở đây
chúng tôi cài đặt với gói PyPi.
+ Cài đặt judge-server tại https://github.com/qbuailab/judge-server, sau đó
cấu hình judge bắt đầu bằng cách lấy khối “runtime” từ lệnh “dmoj-autoconf” và đặt nó ở
file mới judge.yml
+ Kết nối judge với hệ thống qua IP được chỉ định trong
BRIDGED_JUDGE_ADDRESS và port là 9999.
+ Cập nhật thư viện bài thi và test case thông qua các folder của máy chủ.
Nếu máy chấm và giao diện được chạy trên các máy khác nhau thì phải có cơ chế đồng
bộ dữ liệu giữa thư mục dữ liệu của hai máy.
Các thông tin cấu hình về cổng kết nối và thư mục chứa test case phải được khai báo
trong file cấu hình của hệ thống.
- Cài đặt các gói chương trình dịch. Một số gói chương trình dịch phổ biến: C, C++,
Python, Java, Pascal… được cài đặt thông qua các lệnh cài đặt và cấu hình để các chương
trình chạy bình thường. Sau đó tiến hành khai báo đường dẫn thông số thông qua các
chương trình dịch thông qua tệp cấu hình của hệ thống.
3.2. Sử dụng hệ thống và nhập dữ liệu
- Nhập đầu bài và số liệu của test case
+ Vào trang web đăng nhập tài khoản admin, từ bên phải phía dưới tên tài
khoản kích chọn “Quản trị” xuất hiện cửa sổ mới.
+ Chọn tab “Bài” sau đó chọn “Thêm” rồi điền các thông tin: Mã bài, Tên bài
toán, người đăng, hiển thị công khai, ngày đăng…. Tại ô soạn thảo để soạn nội dung đề
bài (hình 2.1).
22
Hình 3.1. Màn hình nhập các thông tin đề bài
+ Phía dưới ô soạn thảo đề bài tiếp tục điền thông tin như: phân loại, “dạng
đề” và “nhóm đề” bài phù hợp.
+ Tại mục “Điểm” số điểm đạt được khi hoàn thành bài tập sau đó tích vào ô
“cho phép điểm từng phần”.
+ Tại mục “Giới hạn”: “Giới hạn thời gian” là thời gian hoàn thành bài tập và
“Giới hạn bộ nhớ”.
+ Tại mục “Ngôn ngữ” chọn loại ngôn ngữ hoặc chọn tất cả (hình 2.2)
23
Khi đã hoàn thành tất cả các trường thông tin trên người dùng chọn các chế độ phù
hợp để lưu lại: “Lưu”, “Lưu và thêm mới”, “Lưu và tiếp tục chỉnh sửa”.
24
3.3. Giao diện ứng dụng được xây dựng
3.3.1. Màn hình trang chủ
26
Hình 3.9. Màn hình đăng nhập
- Đăng xuất
27
3.3.3. Danh sách các bài
29
Hình 3.15. Màn hình xếp hạng các thành viên
Hình 3.16. Màn hình đóng góp của các thành viên
30
Hình 3.17. Màn hình các tổ chức
3.3.6. Thông tin
31
3.3.7. Trang Admin
32
Hình 3.21. Màn hình lịch các kì thi
3.3.9. Tài liệu
33
3.3.10.Màn hình máy chấm
Hình 3.24. Màn hình các ngôn ngữ của máy chấm
34
Hình 3.25. Màn hình các phiên bản ngôn ngữ của máy chấm
35
PHẦN 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Qua thời gian được học tập và tìm hiểu các công nghệ mới, sau thời gian thực tập,
tôi đã xây dựng hệ thống camera giám sát dưới dạng website với các chức năng phát hiện
đám cháy và gửi cảnh báo qua email và telegram. Hệ thống được xây dựng dựa trên môi
trường phát triển website Django và ngôn ngữ lập trình phổ biến python. Hệ thống đạt
được những kết quả nhất định:
- Xây dựng thiết kế thành công giao diện của hệ thống đảm bảo tính thẩm mỹ, thân
thiện, bố cục của hệ thống hợp lý trong trình bày các thông tin giúp cho người
dùng dễ tiếp cận.
- Xây dựng thành công các chức năng chính của hệ thống như: phát hiện đám cháy,
xem các camera hoạt động, gửi cảnh báo, xem lại hình ảnh các khu vực xảy ra sự
cố.
- Với thời gian và kỹ năng có hạn, đồng thời chưa có nhiều thời gian để kiểm thử hệ
thống và chưa rộng về lượng người dùng nên hệ thống còn thiếu sót rất nhiều tính
năng nên hướng phát triển và nghiên cứu thêm là:
- Có thể cảnh báo thêm ngoài cảnh báo cháy như cảnh báo có người lạ xâm nhập,
cảnh báo có xảy ra đánh nhau...
- Phát triển hệ thống đa quản lý.
- Vấn đề bảo mật an toàn thông tin cho hệ thống.
- Cải thiện mã nguồn tối ưu.
36
- TÀI LIỆU THAM KHẢO
[1]https://congly.vn/tp-hcm-chinh-thuc-van-hanh-he-thong-camera-giam-sat-tren-quoc-
lo-1a-206248.html, xem 12/03/2022.
[2] https://github.com/tobybreckon/fire-detection-cnn, xem 12/03/2022.
[3] https://gitlab.com/Shinobi-Systems/Shinobi, xem 12/03/2022.
[4] https://github.com/ArjunInventor/CogniTrack, xem 12/03/2022.
[5] Django, <https://www.djangoproject.com/>, xem 12/03/2022.
[6] Python, < https://www.python.org/>, xem 12/03/2022.
37