Điều này cho phép người lập trình sử dụng Python cho nhiều mục đích, từ phát triển ứng dụng web, phân tích dữ liệu, trí tuệ nhân tạo cho đến xử lý văn bản và tự động hóa công việc.. Nó đ
Trang 1ĐẠI HỌC CẦN THƠ TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO KẾT QUẢ THỰC TẬP THỰC TẾ
ĐỀ TÀI :
“WEBSITE NHẬN DẠNG ĐỒ VẬT TÍCH HỢP MÔ HÌNH YOLOv4”
Cán bộ hướng dẫn :
HỒ QUỐC AN
Sinh viên thực hiện : Trầm Thành Đạt – B1906647 Học phần : Thực Tập Thực Tế - KTPM (CT474-Nhóm 03)
Cần Thơ, 07/2023
Trang 2Lời cảm ơn
Em xin gửi lời cảm ơn chân thành đến quý công ty và toàn thể nhân viên đã cho em cơ hội thực tập thực tế tại Công ty TNHH PASSAGE OF STUDY Kỳ thực tập đã trở thành một hành trình đáng nhớ và mang lại cho em nhiều kiến thức và kinh nghiệm thực tiễn Trong thời gian thực tập, em được cho cơ hội làm việc cùng với các anh trong công ty có kinh nghiệm trong từng lĩnh vực công nghệ thông tin Sự hướng dẫn và hỗ trợ nhiệt tình
từ các anh giúp em phát triển kỹ năng và nhận thức được rõ hơn về qui trình phát triển phần mềm Cùng với một dự án nhỏ liên quan đến lĩnh vực thị giác máy tính (Computer vision) đã mở rộng tầm nhìn của em và trang bị cho em những kỹ năng thực tế cần thiết phục vụ cho công việc sau này
Em cũng xin cảm ơn đến tất cả các nhân viên trong công ty đã chia sẽ kiến thức và kinh nghiệm cá nhân cho em, cùng với đó là các trao đổi và những lời khuyên để giúp em nắm bắt được các khía cạnh quan trọng trong công việc và phát triển năng lực cá nhân Các anh trong công ty đã tạo cho các em môi trường làm việc thân thiện, đoàn kết Em được
sự giúp đỡ và hỗ trợ tận tình của các anh tạo ra kỷ niệm đáng nhớ trong quá trình thực tập của em
Cuối cùng cho em xin gửi lời cảm ơn cho cán bộ hướng dẫn là anh Hồ Quốc An đã truyền đạt cho em cũng như các bạn trong nhóm các kiến thức về xử lý ảnh, cách sử dụng mô hình YOLO, cài đặt môi trường các thư viện hỗ trợ việc nhận dạng vật thể Đây là kiến thức mới giúp em có được những trải nghiệm thực tế về một lĩnh vực mới mẻ
Em xin chân thành cảm ơn và hy vọng sẽ có cơ hội để được hợp tác làm việc với tất cả các anh trong tương lai
Trân trọng !
Trầm Thành Đạt
Trang 3MỤC LỤC
Trang 4PHIẾU GIAO VIỆC
Trang 5CHƯƠNG 1: TÌM HIỂU VỀ TỔ CHỨC CÔNG TY
1 TỔ CHỨC HÀNH CHÍNH
2 TỔ CHỨC NHÂN SỰ
CHƯƠNG 2: HOẠT ĐỘNG CHUYÊN NGHÀNH VÀ MÔI TRƯỜNG THỰC
TẬP
1 HOẠT ĐỘNG CHUYÊN NGHÀNH :
1.1 Tìm hiểu về thị giác máy tính (Computer Vision) :
Thị giác máy tính (Computer Vision) là một trong những lĩnh vực hot nhất của khoa học máy tính và nghiên cứu trí tuệ nhân tạo Dù chúng vẫn chưa thể cạnh tranh với sức mạnh thị giác của mắt người, đã có rất nhiều ứng dụng hữu ích được tạo ra khai thác tiềm năng của chúng
Khi bạn nhìn vào hình ảnh sau đây, bạn sẽ thấy người, vật thể và các tòa nhà Nó mang đến những ký ức về những trải nghiệm trong quá khứ, những tình huống tương tự bạn gặp phải Đám đông đang đối mặt cùng hướng và giơ điện thoại lên, điều này cho bạn biết rằng đây là một loại sự kiện Người đứng gần máy ảnh đang mặc áo thun gợi ý về sự kiện
có thể xảy ra Khi bạn nhìn vào các chi tiết nhỏ khác, bạn có thể suy ra nhiều thông tin hơn từ hình ảnh
Nhưng đối với máy tính, hình ảnh này giống như tất cả các hình ảnh khác, đó là một mảng các pixel, các giá trị số đại diện cho các sắc độ của màu đỏ, xanh lá cây và xanh dương Một trong những thách thức mà các nhà khoa học máy tính phải vật lộn từ những năm 1950s là tạo ra những cỗ máy có thể hiểu được hình ảnh và video như con người
Trang 6Lĩnh vực thị giác máy tính từ đó đã trở thành một trong những lĩnh vực nghiên cứu hot nhất về khoa học máy tính và trí tuệ nhân tạo
Nhiều thập kỷ sau, chúng ta đã đạt được tiến bộ lớn trong việc tạo ra các phần mềm có thể hiểu và mô tả nội dung của dữ liệu một cách trực quan Nhưng chúng ta cũng đã nhận ra rằng cần phải đi xa đến mức nào trước khi có thể hiểu và tái tạo một trong những chức năng cơ bản của bộ não con người
1.2 Tìm hiểu về mô hình YOLOv4 (You Only Look Once) :
YoloV4 là một mô hình nhận dạng đối tượng và phát hiện đối tượng trong ảnh và video
Nó là phiên bản tiếp theo của mô hình YoloV3 và được phát triển bởi Alexey Bochkovskiy, Chien-Yao Wang và Hong-Yuan Mark Liao Mô hình YoloV4 kết hợp các cải tiến từ các phiên bản trước và đạt được hiệu suất cao trong việc phát hiện đối tượng chính xác và nhanh chóng Dưới đây là một số đặc điểm chính của YoloV4:
1 Kiến trúc: YoloV4 sử dụng một kiến trúc mạng neural convolutional được gọi là CSPDarknet53 Kiến trúc này cải tiến trên Darknet-53 trong YoloV3 bằng cách sử dụng các khối kết nối thông qua kiến trúc Cross Stage Partial (CSP), giúp tăng cường khả năng học và tăng tốc độ xử lý
2 Điểm nổi bật (Backbone): Mô hình sử dụng CSPDarknet53 làm điểm nổi bật để trích xuất đặc trưng từ ảnh đầu vào
3 Đặc trưng lớp: YoloV4 sử dụng các lớp đặc trưng để trích xuất thông tin từ các tầng trung gian trong kiến trúc mạng Điều này giúp mô hình phát hiện các đối tượng ở nhiều
tỷ lệ và kích thước khác nhau
Trang 74 Cải tiến hộp giới hạn (Bounding Box): Mô hình YoloV4 sử dụng một thuật toán cải tiến
để tạo ra các hộp giới hạn chính xác hơn cho các đối tượng Nó sử dụng các phương pháp như IoU (Intersection over Union) và kỹ thuật Non-Maximum Suppression (NMS) để lọc
và giảm thiểu sự trùng lặp của các hộp giới hạn
5 Các cải tiến khác: YoloV4 còn có nhiều cải tiến khác như hỗ trợ học không giám sát (unsupervised learning), thêm các phương pháp tăng cường dữ liệu (data augmentation), tăng cường độ tin cậy của dự đoán và cải thiện độ chính xác trong việc nhận dạng đối tượng
Tóm lại, YoloV4 là một mô hình phát hiện đối tượng nhanh chóng và chính xác trong ảnh
và video, với nhiều cải tiến từ các phiên bản trước đó Nó đã đạt được sự chú ý và sử dụng rộng rãi trong cộng đồng nghiên cứu và ứng dụng thị giác máy tính Trong đề tài chúng em sử dụng một mô hình YOLOv4 đã được huấn luyện để phát hiện vật thể (Object Detection) trong thời gian thực
1.3 Tìm hiểu về Flask và Python và các thư viện xử lý ảnh :
Flask là gì ?
Flask là một framework phát triển ứng dụng web dựa trên ngôn ngữ lập trình Python Nó được xây dựng nhằm cung cấp một cách đơn giản và linh hoạt để xây dựng ứng dụng web Flask không yêu cầu các công cụ hoặc thư viện ngoài phức tạp, điều này làm cho nó trở thành một lựa chọn phổ biến cho các dự án ứng dụng web nhỏ và trung bình
Flask được thiết kế theo triết lý "micro", tức là nó chỉ cung cấp các thành phần cơ bản để xây dựng ứng dụng web, nhưng vẫn giữ cho người phát triển sự linh hoạt và sức mạnh để
mở rộng ứng dụng theo nhu cầu Điều này cho phép người dùng tự do chọn các thành phần và thư viện mà họ muốn sử dụng
Flask cung cấp các tính năng cơ bản như routing (định tuyến), template rendering (hiển thị giao diện), session management (quản lý phiên), và integration with database (tích hợp với cơ sở dữ liệu) Ngoài ra, Flask còn hỗ trợ viết API để xây dựng các ứng dụng web dựa trên kiến trúc RESTful
Flask được phát triển theo nguyên tắc KISS (Keep It Simple, Stupid) và rất dễ học và sử dụng Nó có một cộng đồng lớn, với nhiều tài liệu, ví dụ và gói mở rộng hữu ích để hỗ trợ việc phát triển ứng dụng web
Trang 8 Python là gì ?
Python là một ngôn ngữ lập trình thông dịch, dễ học và dễ sử dụng
Đơn giản: Python có cú pháp đơn giản và rõ ràng, giúp người lập trình dễ dàng đọc, hiểu và viết mã Nó giảm thiểu sự phức tạp và tăng tính nhất quán trong việc phát triển phần mềm
Đa năng: Python hỗ trợ nhiều phong cách lập trình, bao gồm lập trình hướng đối tượng, lập trình cấu trúc và lập trình hàm Điều này cho phép người lập trình sử dụng Python cho nhiều mục đích, từ phát triển ứng dụng web, phân tích dữ liệu, trí tuệ nhân tạo cho đến xử lý văn bản và tự động hóa công việc
Hỗ trợ mạnh mẽ: Python có một cộng đồng phát triển
lớn, cung cấp rất nhiều thư viện và công cụ hữu ích
Các thư viện như NumPy, Pandas và Matplotlib cho
phép xử lý dữ liệu và tính toán số học hiệu quả Thư
viện TensorFlow và PyTorch hỗ trợ phát triển các mô
hình trí tuệ nhân tạo Flask và Django là các framework
phát triển ứng dụng web mạnh mẽ được sử dụng rộng rãi
trong cộng đồng
Giao diện thân thiện: Python có thư viện đồ họa như Tkinter và PyQt cho phép xây dựng các giao diện người dùng đẹp mắt và tương tác với người dùng một cách dễ dàng
Di động và nhúng: Python cũng được sử dụng trong lĩnh vực di động và nhúng Có các framework như Kivy và BeeWare cho phép phát triển ứng dụng di động và desktop đa nền tảng bằng Python
Thư viện TensorFlow :
TensorFlow là một thư viện mã nguồn mở và một nền tảng phần mềm dành cho việc phát triển và triển khai các mô hình trí tuệ nhân tạo Nó được phát triển bởi nhóm Google Brain và cung cấp một cách linh hoạt để xây dựng và huấn luyện các mô hình học máy, mạng neural và trí tuệ nhân tạo khác
Khả năng tính toán đa nền tảng: TensorFlow cho phép thực hiện tính toán trên nhiều nền tảng, bao gồm máy tính xách tay, máy tính để bàn và các thiết bị di động Nó hỗ trợ việc tích hợp với các bộ xử lý đồ họa (GPU) để tăng tốc độ xử lý cho các tác vụ tính toán lớn
Ký hiệu dựng đồ thị: TensorFlow sử dụng cấu trúc dữ liệu được gọi là "đồ thị tính toán" (computational graph) để biểu diễn và thực hiện các phép tính Điều này cho
Trang 9phép người dùng xác định, tối ưu hóa và thực hiện các phép tính theo cách hiệu quả và dễ dàng
Tích hợp công cụ học máy:
TensorFlow cung cấp các công cụ và
thư viện hỗ trợ mạnh mẽ cho việc
phát triển các mô hình học máy Nó
bao gồm các API cho việc xây dựng
và huấn luyện các mạng neural, các
thuật toán tối ưu hóa, quản lý dữ liệu
và công cụ đánh giá hiệu suất
Xử lý dữ liệu lớn: TensorFlow hỗ trợ
xử lý dữ liệu lớn thông qua khả năng phân tán và tích hợp với hệ thống Apache Hadoop và Apache Spark Điều này cho phép xử lý và huấn luyện các mô hình trên các tập dữ liệu có kích thước lớn
Hỗ trợ cộng đồng lớn: TensorFlow có một cộng đồng sôi nổi và phong phú, với nhiều tài liệu, ví dụ và gói mở rộng sẵn sàng để hỗ trợ việc phát triển và triển khai các ứng dụng trí tuệ nhân tạo
TensorFlow là một công cụ mạnh mẽ trong lĩnh vực trí tuệ nhân tạo và học máy, được sử dụng rộng rãi trong cả nghiên cứu và ứng dụng thực tế
Tìm hiểu về CUDA và CuDNN :
CUDA (Compute Unified Device Architecture) và cuDNN (CUDA Deep Neural Network library) là hai công nghệ phần mềm liên quan đến việc tính toán và tăng tốc độ
xử lý trên GPU (Graphics Processing Unit) trong các ứng dụng liên quan đến máy học (machine learning) và trí tuệ nhân tạo (artificial intelligence)
CUDA là một nền tảng tính toán song song của NVIDIA, cho phép người lập trình sử
cho phép xử lý đồ họa và tính toán
suất cho các ứng dụng đòi hỏi tính toán nặng
cuDNN là một thư viện mở rộng của CUDA, được phát triển bởi NVIDIA, nhằm hỗ trợ việc triển khai và tăng tốc độ các mô hình mạng neural sâu trên GPU Nó cung cấp các chức năng và thuật toán tối ưu hóa cho việc thực hiện các phép tính phức tạp như tích chập (convolution) và pooling trong mạng neural cuDNN giúp tăng tốc độ huấn luyện và
Trang 10dự đoán mô hình mạng neural trên GPU bằng cách tối ưu hóa việc sử dụng các tài nguyên tính toán trên GPU và khai thác hiệu suất của nó
Pycharm :
PyCharm là một môi trường phát triển tích hợp (IDE) dành cho việc phát triển ứng dụng Python Nó được phát triển bởi JetBrains, công ty nổi tiếng về các công cụ phát triển phần mềm PyCharm cung cấp một loạt các tính năng và công cụ để hỗ trợ người lập trình Python trong quá trình phát triển ứng dụng, bao gồm:
Gỡ lỗi và xem trước: PyCharm cho phép người dùng gỡ lỗi mã nguồn Python bằng cách đặt điểm dừng (breakpoint) và theo dõi giá trị biến, vị trí thực thi, và luồng chương trình Nó cũng cung cấp khả năng xem trước (debug) từng bước thực hiện của mã nguồn để phân tích và sửa lỗi
Code completion và tự động hoàn thành: PyCharm tự động đề xuất mã và hoàn thành từ khóa, tên biến, phương thức và các đoạn mã khác để tăng tốc độ viết code
Nó cũng cung cấp kiểm tra cú pháp và gợi ý lỗi để giúp người lập trình viết code chính xác và tránh lỗi
Quản lý môi trường và gói: PyCharm cho phép tạo và quản lý các môi trường ảo (virtual environment) để phát triển ứng dụng Python độc lập Nó cũng hỗ trợ quản
lý các gói phụ thuộc và cài đặt gói từ kho lưu trữ PyPI (Python Package Index)
Tích hợp công cụ phát triển: PyCharm tích hợp với các công cụ phổ biến khác như Git, Mercurial và SVN để quản lý phiên bản mã nguồn Nó cũng hỗ trợ các công
cụ kiểm thử và kiểm tra tự động, như pytest và unittest
Hỗ trợ cho các framework và thư viện Python: PyCharm cung cấp tích hợp sẵn cho các framework phổ biến như Django, Flask và PyTorch Nó cung cấp các công cụ
và tính năng đặc biệt để hỗ trợ phát triển và gỡ lỗi trong các dự án sử dụng các framework này
PyCharm có phiên bản miễn phí (Community Edition) và phiên bản trả phí (Professional Edition) với các tính năng mở rộng và hỗ trợ cho các công nghệ phát triển phức tạp hơn
Nó là một trong những IDE phổ biến và được ưa chuộng trong cộng đồng lập trình Python
2 MÔI TRƯỜNG THỰC TẬP :
CHƯƠNG 3: MÔ TẢ CÔNG VIỆC ĐƯỢC PHÂN CÔNG
1 XÂY DỰNG MÔ HÌNH WEBSITE CLIENT – SERVER (TÍCH HỢP MÔ HÌNH NHẬN DẠNG YOLOV4) :
1.1 Mô hình Client-Server là gì ?
Mô hình client-server là một kiến trúc phân tán trong hệ thống mạng, trong đó một máy chủ (server) cung cấp các dịch vụ và tài nguyên cho các máy khách (clients) Trong mô
Trang 11hình này, máy chủ là một entity trung tâm có trách nhiệm xử lý và đáp ứng các yêu cầu từ các máy khách
Các thành phần chính của mô hình client-server bao gồm:
Máy chủ (Server): Máy chủ là một thiết bị hoặc một phần mềm chạy trên một máy tính hoặc một hệ thống phân tán Nó chịu trách nhiệm cung cấp các dịch vụ, tài nguyên và xử lý các yêu cầu từ các máy khách
Máy khách (Client): Máy khách là các thiết bị hoặc phần mềm trên máy tính hoặc thiết bị di động tương tác với máy chủ để truy cập và sử dụng các dịch vụ, tài nguyên được cung cấp bởi máy chủ Các máy khách gửi yêu cầu tới máy chủ và nhận lại phản hồi từ máy chủ
Giao thức truyền thông: Giao thức truyền thông như HTTP (Hypertext Transfer Protocol) thường được sử dụng để giao tiếp giữa máy khách và máy chủ trong mô hình client-server Giao thức này quy định các quy tắc và quy trình cho việc trao đổi thông tin giữa hai bên
Trong mô hình client-server, máy chủ cung cấp các dịch vụ và tài nguyên cho máy khách, như cung cấp dữ liệu từ cơ sở dữ liệu, xử lý yêu cầu, lưu trữ tệp tin, cung cấp dịch vụ web, và nhiều hơn nữa Máy khách, sử dụng các ứng dụng và giao diện người dùng, gửi yêu cầu tới máy chủ và nhận lại phản hồi từ máy chủ
Mô hình client-server phổ biến trong các ứng dụng mạng như trang web, ứng dụng di động, ứng dụng dựa trên dịch vụ (service-based applications) và nhiều hơn nữa, nơi máy chủ cung cấp các tài nguyên và dịch vụ cho người dùng cuối (clients) thông qua mạng
1.2 Ứng dụng vào việc xây dựng mô hình Client – Server (Tích hợp mô hình YOLOv4) :
*Các thành phần của Website “Nhận dạng vật thể (Object Detection)” bao gồm một máy chủ (Server) tích hợp mô hình nhận dạng YOLOv4 và một máy khách (Client) hỗ trợ việc bật tắt một camera
Xây dựng máy chủ (Server) :
Để xây dựng một máy chủ có tích hợp mô hình YOLOv4 em sử dụng Flask để tạo một server bên trong máy chủ này sẽ chứa một đoạn mã nguồn của mô hình YOLOv4 đóng