Dự án SS IoT Devices được Tinasoft sử dụng những công nghệ hiện đại nhấtnhư: Nest Js, ReactJs, AWS, S3, PostgresDB, MQTT, K8S, Docker, ElasticSearch …với những tính năng nổi bật như: T
Trang 11
BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN
THÔNG
KHOA KỸ THUẬT ĐIỆN TỬ 1
-
BÁO CÁO THỰC TẬP CHUYÊN SÂU CÔNG TY CỔ PHẦN
TINASOFT VIỆT NAM
Giảng viên: Nguyễn Quốc Uy
Họ và tên : Phùng Công Nguyên
Mã sinh viên : B19DCDT161Lớp : D19DTMT1 Niên khóa : 2019 - 2024
HÀ NỘI-2023
Trang 2Phụ lục
LỜI NÓI ĐẦU 3
Chương 1 : GIỚI THIỆU VỀ CÔNG TY 4
1.1 Giới thiệu về Tinasoft 4
1.1.1 Cái nhìn chung về Tinasoft 4
1.1.2 Công việc của Tinasoft 4
1.2 Các dự án tiêu biểu của Tinasoft 5
1.2.1 Dự án Easy 1 của Tinasoft Việt Nam 5
1.2.2 Hệ ống ERP cho Smart Corpth 6
1.2.3 Dự án SS IoT Devices của Tinasoft Việt Nam 7
Chương 2 : NỘI DUNG THỰC TẬP TẠI CÔNG TY 8
2.1 Xây dựng ứng dụng nhận diện khuôn mặt 8
2.1.1 Thiết lập môi trường 8
2.1.2 Khái quát về ứng dụng 9
2.2 Giao diện xác thực 12
2.2.1 Cách thức khởi tạo 12
2.2.2 Xây dựng chức năng cập nhật dữ ệu khuôn mặt để mã hóali 12
2.2.3 Thiết kế giao diện 14
2.3 Giao diện đăng ký 15
2.3.1 Cách thức khởi tạo 15
2.3.2 Xây dựng chức năng đăng ký và cập nhật tên người dùng 15
2.4 Cơ sở dữ li 17ệu 2.4.1 Thiết lập môi trường 17
2.4.2 Luồng dữ ệu trong Back-endli 17
2.5 Docker 22
2.5.1 Nền tảng lý thuyết 22
2.5.2 Thiết lập môi trường 22
2.5.3 Xây dựng Docker image cho ứng dụng nhận diện khuôn mặt 22
Chương 3 : KẾT QUẢ SAU KÌ THỰC TẬP 25
3.1 Thành quả sau thời gian thực tập 25
KẾT LUẬN 26
Trang 33
LỜI NÓI ĐẦU
Đầu tiên, em xin gửi lời cảm ơn chân thành đến Học viện Công nghệ Bưu chính Viễn thông đã tạo cơ hội cho chúng em thực tập tại công ty Tinasoft Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến thầy Nguyễn Quốc Uy, anh Võ Việt Hoàng đã nhiệt tình chỉ dẫn, truyền đạt những kiến thức, kinh nghiệm cho em trong suốt thời gian ực tập vừth a qua Trong thời gian tham gia, em đã có thêm cho mình nhiều kiến thức bổ ích, tinh
thần học tập, làm việc hiệu quả, nghiêm túc Đây chắc chắn sẽ là những kiến ức quý thbáu, là hành trang để em có thể vững bước sau này
Thời lượng thực tập tại công ty không nhiều, mặc dù đã có cố gắng nhưng những hiểu biết và kỹ năng về ệc thực tập của em còn hạn chế Do đó, bài báo vicáo của em có thể còn có những thiếu sót và những chỗ chưa chính xác, kính mong thầy xem xét và góp ý giúp bài báo cáo được hoàn ện hơn.thi
Em xin chân thành cảm ơn!
Hà Nội, ngày 29 tháng 5 năm 2023 Sinh viên thực hiện
Phùng Công Nguyên
Trang 4Chương 1 : GI ỚI THIỆU VỀ CÔNG TY
1.1 Giới thiệu về Tinasoft
1.1.1 Cái nhìn chung về Tinasoft
Được thành lập vào năm 2018, Tinasoft nhanh chóng khẳng định vị thế
là một trong những Nhà tư vấn Phát triển Phần mềm và Chuyển đổi Số hàng đầutại Việt Nam Kinh nghiệm, chuyên môn, cơ sở vật chất được trang tốt bị nhất,quản lý chuyên nghiệp và cam kết của chúng tôi và đã đang mang đến cho khách hàng sự hài lòng tối đa và đổi lại chúng tôi đã đạt được sự tăng trưởng nhanh chóng và bền vững trong hơn năm 6 qua
Để trở thành điểm đến duy nhất cho mọi nhu cầu về phần mềm, Tinasoft được tổ chức thành một nhóm gồm các công ty hệ thống khác nhau bao gồm các lĩnh vực chuyên môn liên quan, cụ thể là Tư vấn chuyển đổi kỹ thuật số, Phát triển phần mềm, Công nghệ thông tin Nhân sự & Tìm nguồn cung ứng Với 6 năm có mặt trên thị trường, Tinasoft đã xây dựng được một mạnglưới rộng lớn các đối tác và chuyên gia, những người đang sát cánh cùng Tinasoft để cung cấp các dịch vụ phát triển và giải pháp phần mềm tinh vi, hiệu quả, theo yêu cầu đặcbiệt cho khách hàng trên toàn thế giới Cho đến nay, chúng tôi đã hỗ trợ khách hàng thành công hơn 300 dự án phần mềm
1.1.2 Công việc của Tinasoft
Bên cạnh trọng tâm chính của Tinasoft là dịch vụ Gia công phần mềm & Chuyển đổi số, chúng tôi cũng cung cấp các giải pháp công nghệ toàn diện như: ERP, EAM, SCE, d/EPM, WMS… Tinasoft đã được lựa chọn trở thành đối tác chính thức của công nghệ hàng đầu thế giới như AWS, INFOR (USA), CityXsys, Fast Re-act… Giúp doanh nghiệp đạt được lợi thế cạnh tranh trên thị trường với tốc độ và khả năng trích xuất thông tin, tự động hóa các công việc thủ công tẻ nhạt, hỗ trợ làm việc sáng tạo, thông minh
Tinasoft đưa ra các mô hình hợp tác đa dạng như: Tăng cường nhân sựCNTT (Che lấp các khoảng trống về tài nguyên hoặc kỹ năng của nhóm CNTT nội
bộ của bạn với các chuyên gia của chúng tôi do bạn trực tiếp quản lý.), Đội tự quản (Nhận một nhóm tự quản do PM hoặc Trưởng nhóm của Tinasoft lãnh đạo đểthực hiện sáng kiến CNTT của bạn.), Thuê ngoài toàn bộ (Chúng tôi chăm sóc (các) chức năng CNTT cụ thể của bạn với toàn bộ trách nhiệm về chất lượng và các rủi ro liên quan)
Trang 55
1.2 Các dự án tiêu biểu của Tinasoft
1.2.1 Dự án Easy 1 của Tinasoft Việt Nam
Tinasoft ệt Vi Nam tự hào đã ển khai tri thành công dự án Easy 1 với đầy đủ tính năng một phần mềm quản tối ưu Với ần mềm quản lý ph lý và ch dị vụ ất chlượng cao của Tinasoft, chúng tôi đã nhận được những phản hồi rất tích cực từ phía khách hàng vậ chúng Vì y, tôi xin được ới ệu dự gi thi án Easy 1 đến những doanh nghiệp muốn ển khai.tri
Hình 1.1: Dự án Easy 1
Dự án Easy 1 được Tinasoft triển khai dưới dạng mô hình Agile Scrum vớ i đội ngũ nhân sự chuyên nghiệp gồm 17 người, trong đó có 1 PM, 1 Scrum Master,
2 BA, 1 Test Lead, 3 Tester, 4 BE, 4 FE, 2 Designer
Dự án Easy 1 được Tinasoft sử dụng những công nghệ hiện đại nhấtnhư: Nest Js, ReactJs, AWS, S3, Postgres DB, MQTT, K8S, Docker, Elas-ticSearch … với những tính năng nổi bật như:
Phần mềm quản lý công ty, chi nhánh, phòng ban, ức vụ, nhân sựch
Quản Lý Luồng Đơn Hàng, tạo, giao-nhận, xử lý và chăm sóc khách hàng của công ty
Tích hợp ống báo th kê cáo dữ ệu nhân sự, đơn hàngli
Quản lý các ch dị vụ, gói dị vụ trong công ch ty
Quản Lý Mua Bán Sản ẩm Trong Công Ty, nhập xuất sản phẩm bằng Ph Excel
Quản Lý Xu Nhất ập Kho
Với những tính năngưu việt trên, doanh nghiệp sẽ giảm thiểu tối đa những chi phí trong khâu quản lý và thống kê, từ đó giúp doanh nghiệptối ưu quy trình sản xuất và kinh doanh của mình
Trang 61.2.2 Hệ thống ERP cho Smart Corp
Hệ thống ERP là hệ ống hoạch định nguồn lực doanh nghiệp hỗ ợ ủ th tr chdoanh nghiệp điều hành hoạt động kinh doanh hiệu quả Hệ ống này bao gồth m quản lý hiệu suất doanh nghiệp, phần mềm giúp lập kế hoạch, lập ngân sách, dự đoán và báo cáo về kết quả tài chính của tổ chức
Hình 1.2: Hệ ống ERPth
Tại sao nên sử dụng hệ ống ERP cho Smart Corp ?th
Quản dị vụ khách hàng: Hệ lý ch thống cung cấp cho người quản lý các công cụ như ống kê, phân th tích và thẩm định các vấn đề trong kinh doanh, đánh giá hiệu quả công việc của nhân viên Công nghệ hỗ ợ tr các chuyên gia bán hàng tìm kiếm, theo dõi quản và lý khách hàng thành công
Quản cấu lý trúc công ty: Các tính năng phụ khác của quản cấu lý trúc nhóm bao gồm quản lý công ty, quản lý chi nhánh, công đối ty tác, quản khu vực lý vànhân viên quản lý theo vị trí và quyền hạn
Quản ị nhân sự: Hệ ống tr th còn hỗ ợ doanh nghiệp quản thông tr lý tin conngười, cơ cấu vị trí, cấp bậ quản c, lý lương, KPI, truyền thông nội bộ
Quản bán hàng lý và tiếp ị: th Quản lý chu trình bán hàng từ lâu đã mối quan làtâm lớn của các công ty, nhưng với hệ ống ERP th cho doanh nghiệp thông minh của Tinasoft, doanh nghiệp sẽ không phải mất nhiều ời gian th và tiền bạc để xử
lý các hoạt động telesales, đơn hàng affiliate, sự ện hay hoạt độki ng tiếp ị thĐiều phối đơn hàng cho từng chi nhánh hoặc sự ậm ễ trong quá ch tr trình lắp đặt sản phẩ vận m, chuyển hàng hóa hoặc dị vụ khách hàng.ch
Trang 7Công nghệ
phần mềm None
61
CDS-cho- Dnnvv-…
So-tay-huong-dan-Công nghệ
phần mềm None
94
Trang 8 Kiểm soát hàng tồn kho: Người dùng có thể quản lý các yêu cầu xuất nhập hàng, quản sản phẩ quản danh mụlý m, lý c, thống kê, báo cáo bằng chương trình Từ đó, lãnh đạo công tycó ể nhận ức hơn về th th rõ tình hình và thay đổi
số ợng nhập lư và tiêu th cácụ mặt hàng để tránh th thoát, lãnất g phí
Tổ ức kế ch toán và tài chính: nó cũng cho phép các chủ doanh nghiệp quản lývốn dòng ền, kế và ti toán, chi phí, sản nợ phải tài và trả
Tạo hệ ống ra th ERP cho công ty thông minh như ế nào ?th
Mô hình quản lý dự án: Agile Scrum
Số lượng: Tổng cộng 17 nhân sự (1 PM, 1 Scrum Master, 2 BA, 1 Test Lead, 3 Tester, 4 BE, 4 FE, 2 Designer)
Công nghệ: NestJs, ReactJs, AWS, S3, PostgresDB, MQTT, K8S, Docker, Tìm kiếm đàn hồi
1.2.3 Dự án SS IoT Devices của Tinasoft Việt Nam
Tinasoft ệt Vi Nam đã ển khai tri thành công dự án SS IoT Devices, với phần mềm tối dị vụ ất ưu và ch ch lượng cao Chúng tôi đã nhận được những phản hồi rất tích cực từ phía khách hàng với dự án SS IoT Devices vậVì y, chúng tôi xin được giới ệu dự thi án SS IoT Devices đến những doanh nghiệp muốn ển khai.tri
Dự án SS IoT Devices được Tinasoft triển khai dưới dạng mô hình Agile Scrum với đội ngũ nhân sự chuyên nghiệp gồm 9 người, trong đó có 1 PM, 1 QA,
1 Comtor, 1 Test Lead, 2 Tester, 2 BE, 1 FE
Dự án SS IoT Devices được Tinasoft sử dụng những công nghệ hiện đại nhất
như: Nest Js, ReactJs, AWS, S3, PostgresDB, MQTT, K8S, Docker, ElasticSearch …với những tính năng nổi bật như:
Thu thập thông tin từ nhiều ại cảm biến IoTlo
Lưu ữ Dữ ệu Tr Li Th Gian Thực,ời tần ất 100 devices/0.5s trong 120 ngàysu
Hiển ị đồ ị số ợng lớn điểm dữ th th có lư liệu
Cảnh Báo Ngoài Ngưỡng Qua email
Sử Dụng Trên Cả Mobile và desktop
Tải tệp CSV ứa dữ ệu đã lưu ữ ch li tr trong 24h
Cải Thiện Hệ Thống ện Tại Để Tối Hi Ưu Hóa Năng Xuất Nhà Máy
Phát ển màn hình/bảtri ng để hiển ị data đã thu ập được từ sensor.th th
Với những tính năng ưu việt trên, Tinasoft tự hào hỗ trợ doanh nghiệp giảmthiểu tối đa chi phí đồng thờitối ưu quy trình sản xuất và kinh doanh
Kịch bản unbuntu
Công nghệphần mềm None
8
Kiemtra 06 08 Lê Tiến Thành
Công nghệphần mềm None
5
Trang 98
Chương 2 : NỘI DUNG THỰC TẬP TẠI CÔNG TY 2.1 Xây dựng ứng dụng nhận diện khuôn mặt
2.1.1 Thiết lập môi trường
Ứng dụng nhận diện khuôn mặt được xây dựng bằng Python và sử dụng framework Flask để xây dựng API và trang web Các thư viện chính hỗ ợ nhậtr n diện khuôn mặt cụ thể trong đồ án này là OpenCV, dlib và face_recognition Để sử dụng các thư viện này trong Python, trước tiên cần cài đặt chúng thông qua trình quản lý gói pip Sau đó, khai báo các thư viện này vào chương trình Python như sau:
+) face_recognition: là một module Python cho việc nhận dạng khuôn mặt được xây dựng trên thư viện dlib Module này dùng thuật toán deep learning để học các đặc trưng của khuôn mặt và sử dụng các đặc trưng này để nhận dạng khuôn mặt trong ảnh hoặc video
+) dlib: là một thư viện C++ cho machine learning, xử ảnh và các thuật toán lý computer vision Thư viện này được sử dụng cho việc xây dựng các ứng dụng nhận dạng khuôn mặt, phát hiện đối tượng, theo dõi đối tượng và nhiều hơn nữa +) threading được sử dụng để tạo ra một thread mới để ực hiện một số công thviệc đồng thời
+) time là để sử dụng các hàm liên quan đến thời gian
+) from datetime import datetime để sử dụng cấu trúc ngày giờ trong Python +) os được sử dụng để truy cập các hàm liên quan đến hệ ống tệp.th
Trang 10+) from flask import Response, Flask, render_template, request, jsonify được
sử dụng để tạo mộ ứng dụng web bằng Flask và để xử lý các yêu cầu HTTP từ t client và trả lại các phản hồi HTTP Response được sử dụng để tạo phản hồi HTTP
đa phần Flask được sử dụng để tạ ứng dụng web o render_template được sử dụng
để tạo trang HTML từ các mẫu Jinja2 request được sử dụng để lấy thông tin từ yêu cầu HTTP của client jsonify được sử dụng để ả về dữ ệu JSON cho client.tr li+) from paho.mqtt import publish được sử dụng để xuất bản thông điệp đến một chủ đề MQTT bằng thư viện Paho MQTT
Deep Learning được sử dụng thông qua thư viện OpenCV và Face Recognition
Cụ thể:
Thư viện OpenCV có sử dụng các mô hình Deep Learning để phát hiện khuôn mặt (face detector) và khung mặt (face landmark detector)
Thư viện Face Recognition sử dụng mô hình Deep Metric Learning để tạo ra các
mã hóa (encoding) cho khuôn mặt Mô hình này được train trên tập dữ ệu lớn li
về khuôn mặt để tạo ra các mã hóa phân biệt cao cho từng khuôn mặt
Dlib là một thư viện mã nguồn mở cung cấp các công cụ và thuật toán trong lĩnh vực thị giác máy tính và học sâu Trong đó, thuật toán dlib nổi tiếng với khả năng nhận diện khuôn mặt và đặc biệt là nhận diện các điểm đặc trưng trên khuôn mặt như mắt, mũi, miệng, để phục vụ cho các ứng dụng nhận diện khuôn mặt, nhận dạng biểu cảm và nhận diện hành vi
(6) (7)
Trình duyệt của
người dùng
Ứng dụng Flask nhận yêu cầu từ người dùng
Trình duyệt hiển thị biểu mẫu
Ứng dụng Flask nhận thông tin biểu mẫu
Thông báo yêu cầu được xử lý thành công
Ứng dụng Flask nhận được tệp hình ảnh
Thông báo kết quả nhận diện khuôn mặt
Trình duyệt
hiển thị kết quả
nhận diện
Trang 11mã hóa khuôn mặt vào cơ sở dữ liệu
(5) : Người dùng sẽ ụp ảnh khuôn mặt của mình và gử ảnh đó đến máy chủ.ch i (6) : Ứng dụng sẽ xử lý ảnh nhận được từ người dùng và so sánh nó với các mã hóa khuôn mặt đã được lưu trữ trong cơ sở dữ liệu
(7) : Sau khi xử lý và so sánh, ứng dụng sẽ hiển thị kết quả cho người dùng biết, ví
dụ như thông báo xác nhận hoặc từ ối đăng ký, tùy vào kết quả so sánh ảnh khuôn chmặt của người dùng với dữ ệu đã lưu trữ trong cơ sở dữ li liệu
2.1.3 Khái quát về cách thức nhận diện
Hình 2.2: Sơ đồ ồng thể hiện quá trình nhận diện khuôn mặt người dùnglu
Mở máy ảnh mặc định
Hàm xử lý khâu
nhận diện
Chuyển đổi khung hình phát hiện khuôn mặt
Quét khuôn mặt
Mã hóa khuôn mặt
và so sánh
Kiểm tra
dữ ệu mã lihóa khuôn mặt
Xử lý kết quả nhận diện
Publish tên người dùng vào topic
Chuyển khung quét ảnh sang định dạng JPEG
(4)
(5) (6)
(7)
(12)
Trang 12Giải thích :
(1) : Trong hàm xử khâu nhận diện, đầu tiên khai báo camera mặc định.lý
(2) : Thực hiện chuyển đổi từ khung hình BGR sang định dạng RGB
(3) : Thực hiện quét khuôn mặt trong khung bằng thuật toán dlib
(4) : Tìm mã hóa khuôn mặt và so sánh với mã hóa khuôn mặt đã biết
(5) : Kiểm tra dữ ệu khuôn mặt đã được mã hóa và so sánh li
(9) : Gọi đến hàm timer trong quá trình đang nhận điện
(10) : Sau 15 giây, gọi hàm Publish cập nhật tên người dùng vào MQTT topic (11) : Chuyển đổi khung ảnh định dạng JPEG và trả lại dưới dạng phản hồi cho client (12) : Lặp lạ từ bướ (3) cho đến khi hàm được dừng lại c i
Kết luận:
Tổng hợp lại, quá trình xử lý nhận diện khuôn mặt được thực hiện thông qua việc thực hiện các bước từ (1) đến (12) Trong đó, các bước từ (1) đến (5) đóng vai trò quan trọng trong việc xác định và so sánh mã hóa khuôn mặt của người dùng Sau đó, kết quả nhận diện được xử lý và hiển thị cho người dùng thông qua các bước từ (6) đến (8) Quá trình nhận diện được lặp lại liên tục thông qua các bước từ (3) đến (12)
để đảm bảo tính liên tục và đáng tin cậy trong việc nhận diện khuôn mặt
ểm nổi bật của quá trình nhận diện khuôn mặt này là việc sử dụng thuật toán Đidlib để thực hiện quét khuôn mặt Điều này giúp cho quá trình nhận diện trở nên chính xác và nhanh chóng hơn
Bên cạnh đó, việc sử dụng giao thức MQTT để cập nhật tên người dùng và chuyển đổi khung ảnh định dạng JPEG để ả lại dưới dạng phản hồi cho client giúp trcho việc truyền tải thông tin trở nên nhanh chóng và hiệu quả hơn
Tóm lại, quá trình nhận diện khuôn mặt được thực hiện thông qua việc kết hợp nhiều bước xử lý khác nhau, đảm bảo tính chính xác và đáng tin cậy trong việc nhận diện khuôn mặt của người dùng
Trang 1312
Kết quả thu được :
Hình 2.3: Người dùng hợp lệ Hình 2.4: Người dùng không hợp lệ
sẽ được hiển thị
Hàm index() được gọi khi trang chủ được yêu cầu Nó trả về một trang HTML được tạo bởi render_template() với tên là 'index.html' Trong trang HTML này, KNOWN_NAMES được truyền vào như một biến names KNOWN_NAMES là một danh sách các tên người dùng đã biết trước đó Biế names này được sử dụng n
để hiển thị danh sách các người dùng khả dụng trên trang chủ
2.2.2. Xây dựng chức năng cập nhật dữ ệu khuôn mặt để mã hóali
Dựa vào thuật toán dlib thì việc nhận dạng chủ yếu dựa vào dữ ệu được mã lihóa Như vậy bài toán đặt ra ở đây là với dữ ệu thời gian thực có đặc tính là luôn lithay đổi theo thời gian thì ứng dụng cần phải có chức năng liên tục cập nhật dữ liệu khuôn mặt để mã hóa để từ đó dữ liệu có thể tiếp tục theo các luồng xử lý khác nhau Kết quả mong đợi sẽ là khi có dữ ệu mới ụ ể ảnh khuôn mặt) đượli (c th là c tiến hành train (huấn luyện) và mã hóa thì hệ thống có thể cập nhật dữ liệu và hiển
thị lên giao diện Web-server