1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế mô hình hệ thống hướng dẫn tài xế trong bãi xe thông minh

65 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế Mô hình Hệ thống Hướng dẫn Tài xế trong Bãi xe Thông minh
Trường học Đại học Công nghệ Thông tin TP.HCM
Chuyên ngành Hệ thống Thông minh và Trí tuệ Nhân tạo
Thể loại Đề tài tốt nghiệp
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 65
Dung lượng 3,29 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (10)
    • 1.1 TÌNH HÌNH NGHIÊN CỨU (10)
    • 1.2 MỤC TIÊU ĐỀ TÀI (11)
    • 1.3 GIỚI HẠN ĐỀ TÀI (11)
    • 1.4 BỐ CỤC ĐỀ TÀI (12)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (13)
    • 2.1 TỔNG QUAN VỀ XỬ LÝ ẢNH (13)
      • 2.1.1 Giới thiệu (13)
      • 2.1.2 Các giai đoạn xử lý ảnh (13)
      • 2.1.3 Những khái niệm cơ bản trong xử lý ảnh (14)
    • 2.2 TỔNG QUAN VỀ CÔNG NGHỆ AI (15)
      • 2.2.1 Giới thiệu (15)
      • 2.2.2 Một số ứng dụng của AI trong đời sống (16)
    • 2.3 HỌC SÂU (18)
    • 2.4 MẠNG NƠRON TÍCH CHẬP (18)
      • 2.4.1 Tổng quan về mạng nơron tích chập (18)
      • 2.4.2 Các lớp cơ bản của CNN (19)
      • 2.4.3 Cấu trúc của CNN (22)
    • 2.5 MẠNG RESNET50 (22)
    • 2.6 THUẬT TOÁN STOCHASTIC GRADIENT DESCENT (25)
    • 2.7 NGÔN NGỮ YAML (26)
    • 2.8 THƯ VIỆN KERAS (26)
    • 2.9 NGÔN NGỮ PYTHON (27)
      • 2.9.1 Giới thiệu (27)
      • 2.9.2 Các tính năng chính (28)
      • 2.9.3 Ứng dụng của Python (28)
    • 2.10 THƯ VIỆN OPEN CV (29)
      • 2.10.1 Giới thiệu (29)
      • 2.10.2 Đặc điểm thư viện Open CV (30)
    • 2.11 HỆ THỐNG THÔNG TIN VÀ HƯỚNG DẪN ĐẬU XE PGI (30)
    • 2.12 TẬP DỮ LIỆU BÃI ĐẬU XE (32)
    • 2.13 TRÌNH SOẠN THẢO SUBLIME TEXT (33)
      • 2.13.1 Giới thiệu (33)
      • 2.13.2 Các tính năng chính (33)
      • 2.13.3 Sử dụng trình soạn thảo Sublime Text (34)
    • 2.14 COMMAND PROMPT (35)
  • CHƯƠNG 3: THIẾT KẾ MÔ HÌNH HỆ THỐNG (37)
    • 3.1 YÊU CẦU VÀ SƠ ĐỒ KHỐI CỦA HỆ THỐNG (37)
      • 3.1.1 Yêu cầu của hệ thống (37)
      • 3.1.2 Sơ đồ khối và chức năng (37)
      • 3.1.3 Hoạt động của hệ thống (38)
    • 3.2 THIẾT KẾ HỆ THỐNG PHẦN CỨNG (38)
      • 3.2.1 Khối Webcam (38)
      • 3.2.2 Khối xử lý trung tâm (39)
      • 3.2.3 Khối nguồn (40)
      • 3.2.4 Khối hiển thị (41)
    • 3.3 THIẾT KẾ PHẦN MỀM (41)
      • 3.3.1 Yêu cầu phần mềm (41)
      • 3.3.2 Lưu đồ giải thuật (41)
  • CHƯƠNG 4: KẾT QUẢ THỰC HIỆN (47)
    • 4.1 KẾT QUẢ PHẦN CỨNG (47)
    • 4.2 KẾT QUẢ PHẦN MỀM (47)
  • CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (64)
    • 5.1 KẾT LUẬN (64)
    • 5.2 HƯỚNG PHÁT TRIỂN (64)
  • TÀI LIỆU THAM KHẢO (65)

Nội dung

Ở Đà Nẵng, một bãi đỗ xe thông minh với kinh phí gần 28 tỷ đồng, được thiết kế dạng khối thép cao 6 tầng và vận hành theo hệ thống xếp hình tự động của Nhật Bản cũng đã được đưa vào sử d

TỔNG QUAN

TÌNH HÌNH NGHIÊN CỨU

Việt Nam đang bước vào giai đoạn công nghiệp hóa hiện đại hóa với trình độ khoa học kỹ thuật ngày càng cao, nhờ công nghệ điện tử và Internet vạn vật (IoT) mà nhiều vấn đề được giải quyết nhanh chóng IoT kết nối mạng lưới cảm biến, thiết bị kích hoạt và các thiết bị thông minh, cho phép chúng có thể lập trình và tương tác với con người cũng như giao tiếp với nhau Ứng dụng của IoT rất đa dạng từ quản lý môi trường và mua sắm thông minh đến tự động hóa ngôi nhà và quản lý bãi đỗ xe Trong bối cảnh lưu lượng phương tiện đông đúc ở Việt Nam, đỗ xe trở thành thách thức và nhiều trung tâm thương mại đã triển khai mô hình bãi đỗ xe thông minh Ví dụ tại Vincom Đồng Khởi đã triển khai giải pháp quản lý bãi đỗ xe và dẫn đường dựa trên cảm biến nhằm tiết kiệm thời gian và công sức tìm chỗ đậu Tại Đà Nẵng, một bãi đỗ xe thông minh với kinh phí gần 28 tỷ đồng được thiết kế như khối thép cao 6 tầng và vận hành theo hệ thống xếp hình tự động của Nhật Bản, đưa vào sử dụng và mở rộng hiệu quả quản lý đỗ xe.

Hình 1.1: Bãi đỗ xe 6 tầng ở Đà Nẵng [1]

Hiện nay ở nước ngoài có nhiều nghiên cứu về vấn đề đỗ xe nhằm giải quyết việc tìm chỗ trống và giảm ùn tắc khi vào bãi xe Hệ thống thông tin và hướng dẫn đỗ xe PGI (Parking Guidance and Information) được hai tác giả Chen và Chang nghiên cứu và phân tích để tối ưu hóa việc xác định vị trí đỗ và nâng cao trải nghiệm người dùng Những tìm kiếm này cho thấy tầm quan trọng của PGI trong quản lý không gian đỗ xe và giảm thời gian tìm chỗ.

Việc phát triển hệ thống chỉ dẫn tài xế trong bãi xe thông minh bắt đầu từ năm 2011 nhằm cung cấp thông tin chính xác và cập nhật về việc sử dụng chỗ đậu xe để hướng dẫn người dùng đến các vị trí còn trống một cách đáng tin cậy Theo Ichihashi và cộng sự (2009), hệ thống PGI dựa trên camera có ưu thế gấp ba lần so với các hệ thống hiện có: không cần cơ sở hạ tầng bổ sung ngoài việc lắp đặt camera quan sát và CCTV phủ kín bãi đỗ, cung cấp vị trí chính xác của các bãi đỗ trống để điều hướng phương tiện, và có khả năng áp dụng cao cho bãi đỗ xe trên đường phố cũng như khu dân cư Ở Mỹ và Anh đã triển khai nhiều mô hình bãi giữ xe thông minh để giải quyết các vấn đề giao thông và kẹt xe vào giờ cao điểm tại các trung tâm thương mại Trong nước ta còn nhiều hạn chế về kỹ thuật và tài chính, một phần do ý thức, dẫn đến tình trạng bãi giữ xe vẫn có chỗ nhưng kẹt xe; vì vậy đề tài “Thiết kế mô hình hệ thống hướng dẫn tài xế trong bãi xe thông minh” trở thành một chủ đề nóng nhằm giải quyết việc tìm chỗ đậu xe lâu và rộng bằng cách tích hợp xử lý ảnh từ camera để cải thiện hiệu quả và tính linh hoạt của các hệ thống hiện có.

MỤC TIÊU ĐỀ TÀI

Để thực hiện đề tài hiệu quả, nhóm bắt đầu bằng việc tìm hiểu sâu về công nghệ AI và IoT, xác định ứng dụng của chúng trong đời sống và đặc biệt là giám sát nhà xe thông minh dựa trên IoT Tiếp đó, nhóm nghiên cứu mạng nơ ron tích chập (CNN) và áp dụng nó để nhận diện chỗ trống trong bãi giữ xe, từ đó tối ưu hoá việc đỗ xe Cuối cùng, nhóm xây dựng một mô hình bãi giữ xe với quy mô khoảng 15 vị trí nhằm nâng cao hiệu quả quản lý và vận hành bãi xe.

GIỚI HẠN ĐỀ TÀI

 Camera cung cấp hình ảnh không chất lượng dẫn đến trong quá trình nhận dạng xảy ra sai sót

 Hệ thống áp dụng cho xe từ 7 chỗ trở xuống

 Xe nhỏ hơn có thể bị che khuất bởi những xe lớn khi góc nhìn camera không tới

 Những hình ảnh được chụp bởi góc nghiêng của camera cho kết quả có độ chính xác chưa cao Camera phải được đặt cố định

BỐ CỤC ĐỀ TÀI

Quyển báo cáo sẽ gồm 5 chương Nội dung từng chương sẽ là:

Chương 1: Tổng quan Ở chương 1, nhóm trình bày tổng quan về đề tài, sơ bộ về tình hình nghiên cứu ở trong nước và ngoài nước, mục tiêu và giới hạn của đề tài, sau đó là bố cục chính của đề tài

Chương 2: Cơ sở lý thuyết

Trong chương 2, các lý thuyết về xử lý ảnh, mạng nơron tích chập và những lý thuyết liên quan đến đề tài sẽ được đề cập đến

Chương 3: Thiết kế mô hình hệ thống Ở chương 3, nhóm sẽ đưa ra sơ đồ khối, chức năng từng khối và hoạt động của hệ thống Sau đó, trình bày lưu đồ giải thuật của chương trình chính và các chương trình con

Chương 4: Kết quả thực hiện

Chương 4 sẽ thể hiện kết quả của hệ thống cả phần cứng lẫn phần mềm Sau đó, nhóm sẽ trình bày về các trường hợp khác nhau và đưa ra nhận xét về từng trường hơp, những giải pháp khi hệ thống hoạt động không chính xác

Chương 5: Kết luận và hướng phát triển

Trong chương 5, nhóm trình bày các kết quả nghiên cứu đã đạt được, phân tích những ưu điểm nổi bật của mô hình và chỉ ra các khía cạnh cần cải thiện trong tương lai để mô hình có thể được áp dụng rộng rãi và hiệu quả trong thực tế.

CƠ SỞ LÝ THUYẾT

TỔNG QUAN VỀ XỬ LÝ ẢNH

Xử lý ảnh là một lĩnh vực khoa học và công nghệ đang phát triển rất nhanh, dù mới so với nhiều ngành khoa học khác Sự ra đời của xử lý ảnh và những ứng dụng của nó đang kích thích hoạt động của các trung tâm nghiên cứu và triển khai, đặc biệt là máy tính chuyên dụng dành riêng cho lĩnh vực này Những tiến bộ trong xử lý ảnh mang lại các ứng dụng thiết thực cho cuộc sống và tác động đến nhiều lĩnh vực công nghiệp và dịch vụ.

Các phương pháp xử lý ảnh được phát triển từ các ứng dụng nhằm nâng cao chất lượng hình ảnh thông qua phân tích phù hợp với hạn chế của phần cứng ban đầu, như tăng độ sáng và độ phân giải Nhờ sự xuất hiện và phát triển mạnh của máy tính, quá trình thực hiện các thuật toán xử lý ảnh ngày càng hiệu quả hơn Ứng dụng của xử lý ảnh ngày càng được mở rộng sang nhiều lĩnh vực như viễn thông, điều khiển tự động, giao thông thông minh và kỹ thuật y sinh Đặc biệt, các thiết bị kỹ thuật số có màn hình hiển thị luôn dành một phần tài nguyên cho xử lý ảnh, từ máy tính xách tay, camera kỹ thuật số, điện thoại thông minh đến TV thông minh.

2.1.2 Các giai đoạn xử lý ảnh

Hình 2.1: Các bước trong xử lý ảnh

Thu nhận ảnh: Ảnh có thể được nhận từ camera màu hoặc qua camera số hoá (như CCD – Charge Coupled Device), là một loại photodiode tạo cường độ sáng tại mỗi điểm ảnh Camera thường dùng là loại quét, ảnh được tạo ra ở dạng hai chiều Chất lượng của ảnh thu được phụ thuộc vào thiết bị thu và môi trường (ánh sáng, phong cảnh).

Tiền xử lý ảnh là bước sau khi nhận từ bộ thu, nhằm khắc phục nhiễu và độ tương phản thấp để nâng cao chất lượng hình ảnh Trong quá trình tiền xử lý, các kỹ thuật lọc nhiễu được áp dụng để làm sạch dữ liệu ảnh, đồng thời tăng cường độ tương phản nhằm làm ảnh rõ nét và chi tiết hơn, từ đó tối ưu cho các bước phân tích và xử lý tiếp theo.

Biểu diễn ảnh Nhận dạng ảnh

Phân đoạn ảnh là quá trình tách một ảnh đầu vào thành các vùng hoặc phần riêng biệt để biểu diễn cho phân tích và nhận dạng ảnh Đây là bước phức tạp nhất trong xử lý ảnh và dễ gây lỗi, có thể làm giảm độ chính xác của ảnh Kết quả nhận dạng phụ thuộc rất nhiều vào chất lượng và độ chính xác của công đoạn phân đoạn, do đó tối ưu hóa phân đoạn ảnh là yếu tố then chốt để nâng cao hiệu suất nhận dạng.

Biểu diễn ảnh sau phân đoạn là đầu ra gồm các điểm ảnh của vùng ảnh được phân đoạn kèm theo mã liên kết với các vùng lân cận Việc biến đổi các số liệu này sang dạng thích hợp là cần thiết để xử lý tiếp theo bằng máy tính Quá trình trích chọn đặc trưng (feature selection) liên quan đến việc xác định và biểu diễn các đặc tính của ảnh dưới dạng thông tin định lượng, phục vụ cho việc phân biệt các lớp đối tượng trong ảnh Ví dụ, trong nhận dạng ký tự trên phong bì thư, ta miêu tả các đặc trưng của từng ký tự để phân biệt ký tự này với ký tự khác.

Nhận dạng ảnh là quá trình xác định nội dung của một hình ảnh, thường được thực hiện bằng cách so sánh với mẫu chuẩn đã được học hoặc lưu trước Nội suy là phán đoán dựa trên nhận dạng, ví dụ một chuỗi chữ số và các nét gạch ngang trên phong bì thư có thể được nội suy thành một mã điện thoại Theo lý thuyết nhận dạng, các mô hình toán học dùng để nhận dạng ảnh được phân thành hai loại cơ bản: nhận dạng theo tham số và nhận dạng theo cấu trúc Hiện nay, các đối tượng nhận dạng phổ biến trong khoa học và công nghệ gồm nhận dạng ký tự (in, viết tay, chữ ký điện tử), nhận dạng văn bản, nhận dạng vân tay, nhận dạng mã vạch và nhận dạng khuôn mặt.

2.1.3 Những khái niệm cơ bản trong xử lý ảnh [3] Điểm ảnh: Là một phần tử của ảnh số tại toạ độ (x,y) với độ xám hoặc màu nhất định Mỗi điểm ảnh biểu diễn một màu sắc nhất định (hay độ sáng với ảnh đen trắng) tại một điểm duy nhất Độ phân giải: Với cùng một ảnh, càng nhiều điểm được lấy mẫu thì ảnh chụp càng chi tiết Mật độ điểm ảnh trong một ảnh được xem như độ phân giải của chính nó Ảnh có độ phân giải càng cao thì càng chứa nhiều thông tin Nói một cách chính xác, khi giữ ảnh tại cùng một kích thước vật lý thì ảnh trở nên sắc nét hơn và chi tiết hơn nếu độ phân giải cao hơn Ảnh RGB: Ảnh này được biểu diễn bởi một ma trận ba chiều có kích thước m x n x 3, với m x n là kích thước ảnh theo điểm ảnh Ma trận này định nghĩa các thành phần màu red, green, blue cho mỗi điểm ảnh

Mức xám của ảnh: Là cường độ sáng của nó được gán bằng giá trị số tại điểm đó

Các giá trị mức xám thông thường 16, 32, 64, 128, 256

Lược đồ mức xám (histogram) là công cụ mô tả tần số xuất hiện của từng mức xám trong ảnh, giúp nhận diện phân bố cường độ sáng và đặc trưng cấu trúc ảnh Đối với ảnh số có L mức xám, phổ biến là L = 256, lược đồ mức xám được thể hiện dưới dạng một hàm rời rạc p(f_k) ∈ [0,1], đại diện cho xác suất hoặc tần suất chuẩn hóa của mỗi mức xám f_k Trên miền f_k từ 0 đến 255, p(f_k) cho biết tần suất xuất hiện của mức xám tương ứng trong ảnh và tổng các giá trị p(f_k) bằng 1, cho thấy đây là một phân bố xác suất của cường độ sáng trong ảnh.

𝑛 (1) Trong đó : fk là giá trị mức xám thứ k (k = 0,1,…,L-1) nk là số pixel mức xám đó n là tổng số pixel của ảnh

Khôi phục ảnh là quá trình hồi phục ảnh gốc từ ảnh bị biến dạng, hay nói cách khác là kỹ thuật cải thiện chất lượng hình ảnh nhằm đưa ảnh trở về trạng thái gần với ảnh thật nhất khi ảnh bị méo Quá trình này tập trung vào khử méo, phục hồi chi tiết và tăng cường độ nét để kết quả sau khôi phục trông tự nhiên và trung thực với bản gốc.

Phân đoạn ảnh là quá trình phân chia ảnh thành các vùng có thuộc tính giống nhau, nhằm nhận diện và phân tích nội dung một cách hiệu quả Đối với ảnh đơn sắc, thuộc tính cơ bản dùng để phân đoạn là độ chói, cho phép ghép các điểm ảnh có cường độ sáng tương tự thành các khu vực riêng biệt Với ảnh màu, quá trình phân đoạn dựa trên các thành phần màu như sắc độ, độ sáng và các thông tin màu để xác định các vùng có đặc trưng màu tương tự.

TỔNG QUAN VỀ CÔNG NGHỆ AI

Trí tuệ nhân tạo (AI) là một trong những công nghệ được các gã khổng lồ công nghệ đầu tư mạnh nhằm mô phỏng quá trình học tập, tư duy và suy nghĩ của con người để máy học và xử lý thông tin hiệu quả trên các hệ thống máy tính có khả năng xử lý cao AI tập trung vào việc thu thập dữ liệu, học hỏi từ thông tin quanh ta và áp dụng các quy tắc để khai thác dữ liệu một cách tối ưu Quá trình vận hành của AI gồm ba bước chính: học tập (máy tự thu thập và học hỏi thông tin), lập luận (tư duy và áp dụng quy tắc để đưa ra kết quả chính xác), và khả năng tự sửa lỗi nhằm nâng cao hiệu suất và độ tin cậy theo thời gian.

Hình 2.2: Công nghệ AI 2.2.2 Một số ứng dụng của AI trong đời sống

Trợ lý ảo : Trí tuệ nhân tạo giúp các trợ lý ảo linh hoạt hơn trong xử lý yêu cầu nhờ học hỏi thói quen sinh hoạt của người dùng và dự đoán cảm xúc Ngoài ra, trợ lý còn có thể tự đưa ra các quyết định hoặc đặt lịch hẹn cho chủ nhân dựa trên tình hình giao thông, thời tiết

Hình 2.3: Trợ lý ảo SIRI của Apple

Trong lĩnh vực y tế: Thông qua thị giác máy tính và mạng lưới thần kinh tích chập,

AI hiện có khả năng đọc quét hình ảnh cộng hưởng từ (MRI) để đánh giá khối u và sự phát triển ác tính liên quan, với tốc độ xử lý nhanh hơn và sai số thấp hơn đáng kể so với các bác sĩ X-quang Điều này có thể giúp rút ngắn thời gian chẩn đoán, tăng tính chính xác trong phát hiện khối u và theo dõi tiến triển của bệnh, đồng thời mở ra cơ hội cải thiện quản lý điều trị bằng công nghệ AI trong hình ảnh y khoa.

Hình 2.4: AI chẩn đoán ung thư phổi

Nhà thông minh là tương lai của công nghệ nhà ở, nơi AI làm động lực chính cho hệ thống thông minh Các bộ lõi nhà thông minh có khả năng học hỏi và ghi nhớ người dùng qua lệnh giọng nói, hành vi và thói quen hàng ngày, sau đó kết hợp với xu hướng IoT – vạn vật Internet để tối ưu hóa các hoạt động trong gia đình Nhờ trí tuệ nhân tạo, hệ thống có thể tự động điều chỉnh ánh sáng, mức nhiệt, an ninh và hiệu quả tiêu thụ năng lượng, mang lại trải nghiệm sống tiện nghi, an toàn và tiết kiệm hơn cho cả gia đình.

Hình 2.5: Mẫu nhà thông minh mới Cube Two

HỌC SÂU

Học sâu (DL-Deep Learning) là một chủ đề của trí truệ nhân tạo (AI) và là một phạm trù nhỏ của máy học Học sâu tập trung giải quyết các vấn đề liên quan đến mạng nơron nhân tạo nhằm nâng cấp các công nghệ như nhận diện giọng nói, thị giác máy tính và xử lý ngôn ngữ tự nhiên

Học sâu đang trở thành một trong những lĩnh vực trọng điểm của khoa học máy tính, mang lại những đột phá đáng kể trong vài năm gần đây Các ứng dụng nổi bật của học sâu bao gồm nhận thức sự vật, dịch tự động và nhận diện giọng nói, những vấn đề từng rất khó khăn với trí tuệ nhân tạo nay đã được giải quyết phần nào nhờ các mô hình tiến tiến Những tiến bộ này mở đường cho AI triển khai rộng rãi trong thực tiễn và thúc đẩy nghiên cứu ở nhiều ngành.

Một số ứng dụng của học sâu:

- Hệ thống xử lý trên các nền tảng

- Xử lý ngôn ngữ tự nhiên.

MẠNG NƠRON TÍCH CHẬP

2.4.1 Tổng quan về mạng nơron tích chập

Mạng nơ-ron tích chập (Convolutional Neural Networks, CNN) là một trong những mô hình học sâu phổ biến và có ảnh hưởng lớn nhất trong cộng đồng thị giác máy tính CNN được dùng trong nhiều bài toán như nhận dạng ảnh, phân tích video, ảnh MRI, hoặc cho các bài toán của lĩnh vực xử lý ngôn ngữ tự nhiên, và hầu hết đều giải quyết tốt các bài toán này.

CNN cũng có lịch sử khá lâu đời Kiến trúc gốc của mô hình CNN được giới thiệu bởi một nhà khoa học máy tính người Nhật vào năm 1980 Sau đó, năm 1998, Yan LeCun lần đầu huấn luyện mô hình CNN với thuật toán lan truyền ngược cho bài toán nhận dạng chữ viết tay Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính người Ukraine Alex Krizhevsky xây dựng mô hình CNN (AlexNet) và sử dụng GPU để tăng tốc quá trình huấn luyện deepnets để đạt được đỉnh cao trong cuộc thi thị giác máy tính thường niên ImageNet với độ lỗi phân lớp top 5 giảm hơn 10% so với những mô hình truyền thống trước đó, đã tạo nên làn sóng mạnh mẽ sử dụng CNN sâu với sự hỗ trợ của GPU để giải quyết càng nhiều vấn đề trong thị giác máy tính

Hình 2.6: Tổng quan về mạng nơron tích chập [4]

2.4.2 Các lớp cơ bản của CNN [12]

CNN là một kiến trúc mạng nơ-ron tích chập bao gồm các lớp cơ bản như lớp chập, lớp phi tuyến tính (ví dụ ReLU), lớp tổng hợp và lớp kết nối đầy đủ Các lớp này được liên kết theo một trình tự nhất định: một hình ảnh sẽ được đưa qua lớp chập và lớp phi tuyến tính đầu tiên, sau đó các giá trị được tính toán sẽ được lan truyền qua lớp tổng hợp; bộ ba chập - phi tuyến tính - tổng hợp có thể lặp lại nhiều lần để trích xuất đặc trưng ở nhiều cấp độ khác nhau Cuối cùng, đặc trưng được đưa qua lớp kết nối đầy đủ và hàm softmax để tính xác suất của các lớp vật thể có thể có trong ảnh và từ đó thực hiện phân loại ảnh.

Lớp chập, hay còn gọi là lớp tích chập, là thành phần cốt lõi của CNN và đảm nhận toàn bộ phép toán liên quan đến tích chập trên dữ liệu đầu vào Các khái niệm cơ bản ở lớp này gồm bản đồ lọc (kernel), bước nhảy (stride), đệm (padding) và bản đồ đặc trưng được tạo ra từ quá trình tích chập Việc điều chỉnh kích thước bản lọc, mức đệm và bước nhảy cho phép mạng nơ-ron tích chập kiểm soát kích thước không gian của đầu ra và trích xuất các đặc trưng phù hợp từ hình ảnh hoặc tín hiệu Nhờ quá trình này, lớp chập sinh ra các bản đồ đặc trưng ở các mức độ khác nhau, phục vụ cho các lớp tiếp theo và tăng khả năng nhận diện mẫu của CNN.

+ Bản đồ lọc (Filter map) là một ma trận 3 chiều trong đó bao gồm các con số và các con số đó là tham số

+ Bước nhảy (Stride) biểu diễn sự dịch chuyển bản đồ lọc theo điểm ảnh dựa vào một giá trị từ trái sang phải

+ Đệm (Padding) là những giá trị được thêm vào lớp đầu vào

Bản đồ đặc trưng (Feature map) thể hiện kết quả của mỗi lần bản đồ lọc quét qua đầu vào, phản ánh các đặc điểm được trích xuất từ dữ liệu sau quá trình tính toán Mỗi lần quét như vậy sẽ sinh ra một bản đồ đặc trưng riêng biệt, cho thấy hoạt động của bộ lọc và cách dữ liệu được biến đổi qua từng bước xử lý.

Hình 2.7: Ví dụ về lớp chập CNN

- Lớp gộp: Là những lớp được xếp vào giữa các lớp chập để là giảm các tham số

Có 2 loại phổ biến là gộp theo giá trị lớn nhất và gộp theo giá trị trung bình

Hình 2.8: Ví dụ về lớp gộp trong mạng CNN

Relu (Rectified Linear Unit) là một hàm kích hoạt trong mạng nơ-ron có tác dụng mô phỏng sự truyền tín hiệu qua sợi trục và được sử dụng rộng rãi nhờ tính dễ tính toán và hiệu quả trong huấn luyện Lớp Relu cho phép các giá trị dương đi qua và chặn các giá trị âm, giúp mạng nơ-ron học nhanh hơn và giảm hiện tượng gradient bị mất trong các mạng sâu Relu trở nên phổ biến trong nhiều kiến trúc mạng vì ưu điểm vượt trội về thời gian huấn luyện và khả năng xử lý dữ liệu phi tuyến tính Tuy nhiên, khi dùng Relu cần lưu ý điều chỉnh tốc độ học tập và theo dõi các đơn vị có thể bị loại bỏ (dead neurons) trong quá trình huấn luyện để duy trì hiệu suất của mô hình.

Hình 2.9: Ví dụ về lớp Relu trong mạng CNN

Trong mạng CNN, lớp kết nối đầy đủ chịu trách nhiệm chuyển đổi ma trận đặc trưng ở tầng trước thành vector chứa xác suất của các lớp cần được dự đoán, từ đó hệ thống có thể phân loại ảnh một cách hiệu quả Quá trình huấn luyện mô hình CNN cho bài toán phân loại ảnh tương tự như các mô hình khác: ta cần một hàm mất mát để đo sai số giữa dự đoán và thực tế và sử dụng thuật toán lan truyền ngược để cập nhật trọng số theo hướng giảm lỗi Nhờ cơ chế này, các tham số của mạng được tối ưu qua từng batch, giúp cải thiện độ chính xác và sự ổn định của mô hình trên tập dữ liệu.

Hình 2.10: Ví dụ về lớp kết nối đầy đủ trong mạng CNN

Trong mạng CNN, các lớp được xếp chồng lên nhau và hoạt động bằng cách áp dụng các hàm kích hoạt lên các trọng số và đầu vào Mỗi lớp sau khi kích hoạt sẽ tạo ra các biểu diễn trừu tượng phục vụ cho các lớp phía sau, cho phép các lớp kế tiếp nắm bắt và thể hiện kết quả từ lớp trước Qua quá trình huấn luyện, các lớp của mạng tự động học được các giá trị và đặc trưng được thể hiện thông qua các bộ lọc (lớp lọc), từ đó tối ưu hóa khả năng nhận diện và phân loại dữ liệu.

Cấu trúc cơ bản của mạng CNN gồm 3 phần chính:

- Trường tiếp nhận cục bộ: Giúp chúng ta tách lọc dữ liệu, thông tin của ảnh và chọn được những vùng ảnh có giá trị sử dụng nhất

- Trọng số chia sẻ: Làm giảm tối đa số lượng các tham số trong mạng CNN

Lớp tổng hợp đơn giản hóa thông tin đầu ra, cho ra kết quả chúng ta mong muốn Để chọn được tham số cho mạng CNN hiệu quả, ta cần chú ý đến số lượng các mục như số lớp chập, kích thước bộ lọc, kích thước bộ tổng hợp và quá trình thử huấn luyện, nhằm tối ưu hóa hiệu suất và đạt được kết quả tốt trong các bài toán nhận diện và phân loại.

Độ sâu của mạng – số lớp chập càng nhiều thì hiệu suất chạy của chương trình càng được cải thiện Việc tăng lượng lớp chập cho phép mô hình học biểu diễn các đặc trưng phức tạp và tối ưu hóa quá trình xử lý dữ liệu Đồng thời, sử dụng nhiều lớp chập với số lượng lớn có thể làm giảm các tác động tiêu cực tới hệ thống một cách đáng kể, giúp nâng cao tính ổn định và hiệu quả tổng thể.

- Kích thước bộ lọc: Thông thường các bộ lọc sẽ có kích thước 3x3 hoặc 5x5

Trong xử lý ảnh, kích thước của bộ tổng hợp quyết định khả năng nắm bắt đặc trưng và hiệu suất xử lý Với hình ảnh thông thường, nên dùng kích thước 2x2 để duy trì chi tiết ở mức vừa phải và tối ưu tốc độ Khi đầu vào là hình ảnh có kích thước lớn hoặc độ phân giải cao, có thể sử dụng kích thước 4x4 để nắm bắt đặc trưng phức tạp và cải thiện chất lượng kết quả.

- Thử huấn luyện: Việc thử huấn luyện nên được thực hiện nhiều lần sẽ cho ra được các tham số tốt nhất

Những thuật toán xây dựng từ kiến trúc của mạng CNN: LeNet, AlexNet, VGGNet, GoogLeNet, ResNet, ZFNet.

MẠNG RESNET50

ResNet (Residual Network) được giới thiệu năm 2015 và nhanh chóng giành vị trí top-1 tại ILSVRC 2015 với tỉ lệ lỗi top-5 chỉ 3.57% Nó cũng dẫn đầu trong các thử thách ILSVRC và COCO 2015 ở các nhiệm vụ ImageNet Detection, ImageNet Localization, COCO Detection và COCO Segmentation Hiện nay, ResNet có nhiều biến thể với số lớp khác nhau từ ResNet-18, ResNet-34 đến ResNet-50, ResNet-101, ResNet-152 và các phiên bản tương tự.

Ý tưởng chính của ResNet là sử dụng kết nối tắt đồng nhất xuyên qua một hoặc nhiều lớp, giúp tín hiệu bỏ qua một phần mạng để đi thẳng từ đầu vào đến đầu ra Việc này tháo bỏ rào cản cho gradient, cho phép quá trình lan truyền ngược diễn ra trơn tru hơn và mang lại hiệu quả huấn luyện vượt trội cho các mạng sâu Các kết nối tắt áp dụng các hàm super-highway để kích hoạt gradient và cho phép nhiều đường đi có độ sâu khác nhau đồng thời tồn tại từ đầu vào tới đầu ra, giúp bảo toàn thông tin và cải thiện khả năng học biểu diễn phức tạp.

Hình 2.11: Cấu trúc của mạng ResNet-50

Hình 2.12: Kết nối xuyên qua một hoặc nhiều lớp của ResNet

ResNet là kiến trúc mạng nơ-ron sâu gần như tương tự các mạng có lớp chập, lớp tổng hợp, hàm kích hoạt và lớp kết nối đầy đủ, nhưng bổ sung khối dư để hỗ trợ huấn luyện sâu hơn Trong khối dư, một mạch kết nối dư được vẽ bằng một mũi tên cong từ đầu khối đến cuối khối, cho phép thông tin từ x bỏ qua một số lớp và được cộng với đầu ra của các lớp trong khối Với H(x) là giá trị dự đoán và F(x) là giá trị nhãn thực tế, mục tiêu là H(x) bằng hoặc xấp xỉ F(x) F(x) được xác định từ x thông qua các biến đổi trong mạng, và khối dư giúp tối ưu quá trình huấn luyện bằng cách truyền tín hiệu và gradient dễ dàng hơn, từ đó cho phép mô hình sâu nhưng vẫn đạt hiệu suất cao.

Giá trị H(x) có được bằng cách:

So sánh giữa VGGNet và ResNet:

Hình 2.13: So sánh giữa VGGNet và ResNet

Hình 2.13(a): VGG-19 là một mô hình CNN sử dụng kernel 3x3 trên toàn bộ mạng, VGG-19 cũng đã giành được ILSVRC năm 2014

Hình 2.13(b): ResNet sử dụng các kết nối tắt ( kết nối trực tiếp đầu vào của lớp

Trong bài viết này, hai tham số n và n+x được thể hiện bằng các mũi tên cong, cho thấy mối liên hệ giữa các cấp tham số trong mạng Qua kết quả mô hình, có thể chứng minh rằng khi mạng có hơn 20 lớp, việc áp dụng mối liên hệ giữa n và n+x có thể cải thiện hiệu suất huấn luyện mẫu, góp phần tối ưu quá trình học và nâng cao chất lượng kết quả trên tập dữ liệu.

Trong Hình 2.13(c), tổng cộng có 12 đầu ra từ ResNet-152 và VGG-19 được dùng làm đầu vào cho một mạng có hai lớp ẩn Đầu ra cuối cùng được tính toán từ hai lớp ẩn này, và việc xếp chồng các lớp không làm giảm hiệu suất của mạng Với kiến trúc này, các lớp ở phía trên nhận thông tin trực tiếp hơn từ các lớp ở phía dưới nên có thể điều chỉnh trọng số một cách hiệu quả hơn [5].

THUẬT TOÁN STOCHASTIC GRADIENT DESCENT

Stochastic Gradient Descent (SGD) là một biến thể đơn giản của Gradient Descent, tính toán gradient và cập nhật ma trận trọng số W dựa trên một mẫu dữ liệu huấn luyện nhỏ thay vì toàn bộ tập huấn luyện Mặc dù các cập nhật với SGD có độ nhiễu cao hơn, phương pháp này cho phép thực hiện nhiều bước cập nhật gradient trên mỗi epoch, từ đó quá trình học hội tụ nhanh hơn mà không gây ảnh hưởng tiêu cực đến giá trị mất mát và độ chính xác phân loại.

Stochastic Gradient Descent (SGD) là thuật toán tối ưu quan trọng nhất trong quá trình đào tạo mạng lưới thần kinh sâu, cho phép cập nhật trọng số từ từng điểm dữ liệu một cách nhanh nhạy và hiệu quả Dù ý tưởng của SGD đã được giới thiệu cách đây hơn 57 năm, nó vẫn là công cụ cốt lõi để huấn luyện các mạng neural lớn, giúp học các mẫu phức tạp và tối ưu hóa hàm mất mát trên dữ liệu huấn luyện Với tính linh hoạt và khả năng mở rộng, SGD tiếp tục là nền tảng của học sâu hiện đại, từ nhận diện hình ảnh và xử lý ngôn ngữ tự nhiên đến các hệ thống đề xuất và dự báo.

Một cách thứ tự lựa chọn điểm dữ liệu:

Sau mỗi epoch, cần xáo trộn (shuffle) thứ tự dữ liệu để đảm bảo tính ngẫu nhiên của quá trình huấn luyện Việc xáo trộn dữ liệu ảnh hưởng trực tiếp đến hiệu năng của SGD (Stochastic Gradient Descent), vì ngẫu nhiên hóa luồng dữ liệu giúp mô hình học tốt hơn và tránh phụ thuộc vào thứ tự ban đầu Do đó, quản lý quá trình shuffle dữ liệu là một yếu tố quan trọng trong tối ưu hóa và kết quả huấn luyện của mô hình.

Trong quá trình tối ưu tham số θ bằng SGD, quy tắc cập nhật được diễn đạt bằng θ = θ − η ∇_θ J(θ; x_i, y_i), với J(θ; x_i, y_i) là hàm mất mát tính theo một cặp dữ liệu (x_i, y_i) Mỗi bước cập nhật sử dụng một mẫu dữ liệu duy nhất nhằm tối ưu tham số một cách nhanh và tiết kiệm tài nguyên, đặc trưng cho cách học song song và linh hoạt của SGD Chú ý: chúng ta có thể áp dụng các thuật toán tăng tốc gradient như Momentum, AdaGrad vào SGD để cải thiện tốc độ hội tụ và ổn định quá trình huấn luyện trên các tập dữ liệu thực tế Việc kết hợp các phương pháp này cho phép điều chỉnh hiệu quả tốc độ học η và cách lan tỏa độ dốc, từ đó nâng cao hiệu suất tối ưu hóa và chất lượng của mô hình.

NGÔN NGỮ YAML

YAML (YAML Ain't Markup Language) là ngôn ngữ tuần tự hóa dữ liệu (Data

Serialization Language), giúp con người dễ đọc hiểu, tương tự như JSON và XML

Nó sử dụng định dạng thụt đầu dòng (giống python) để xác định cấu trúc

- Để nhập và xuất dữ liệu tới và từ một máy chủ

- Cấu hình ứng dụng với một file duy nhất Những file này chỉ định tham số cấu hình và những giá trị tương ứng của nó

- Truyền dữ liệu giữa hai thành phần khác nhau trong một ứng dụng

- Lưu trữ dữ liệu trung gian

YAML là ngôn ngữ biểu diễn dữ liệu ở dạng văn bản, tương tự XML và JSON, và các file YAML được lưu với phần mở rộng yml hoặc yaml Với cú pháp dễ đọc và dễ viết, YAML được xem là thân thiện với người dùng hơn nhiều so với XML hay JSON Do tính dễ đọc và cấu trúc hợp lý, file YAML thường được dùng làm file cấu hình cho nhiều ứng dụng phổ biến như PHP, Docker và các môi trường triển khai khác.

YAML sử dụng cú pháp viết với khoảng trắng (space), phần tử dữ liệu con viết thụt vào 2 khoảng trắng so với dữ liệu cha [7]

THƯ VIỆN KERAS

Keras là một thư viện mã nguồn mở được phát triển vào năm 2015 bởi François Chollet, một nhà nghiên cứu học sâu tại Google Keras cung cấp một API bậc cao để xây dựng và huấn luyện mạng nơ-ron, được viết bằng Python Nó có thể được sử dụng với các thư viện học sâu phổ biến như TensorFlow (do Google phát triển), CNTK và Theano, giúp việc thiết kế mô hình trở nên nhanh chóng và dễ dàng hơn.

Keras có một số ưu điểm như:

- Dễ sử dụng, xây dựng model nhanh Có thể chạy trên cả CPU và GPU

- Hỗ trợ xây dựng CNN, RNN và có thể kết hợp cả 2

Hình 2.14: Cấu trúc của Keras

Hàm để xây dựng khung cho model

Hàm dùng để tiền xử lý dữ liệu

Hàm ở trong khung của model

Hình 2.15: Thành phần chính của model Keras

Hình 2.16: Các lớp trong mô hình Keras [8]

NGÔN NGỮ PYTHON

Python là một ngôn ngữ lập trình thông dụng do Guido van Rossum tạo ra năm

Python từ năm 1990 là ngôn ngữ có kiểu động hoàn toàn và quản lý bộ nhớ tự động, giúp nó tương tự như Perl, Ruby, Scheme, Smalltalk và Tcl Được phát triển trong một dự án mở và được quản lý bởi Python Software Foundation, một tổ chức phi lợi nhuận Theo đánh giá, Python có hình thức sáng sủa, cấu trúc rõ ràng và rất thuận tiện cho người mới bắt đầu học lập trình Cú pháp của Python được thiết kế để người dùng có thể viết lệnh với tối thiểu số lần gõ phím, tăng hiệu quả và năng suất khi lập trình.

Ban đầu, Python được phát triển để chạy trên Unix, nhưng theo thời gian nó đã mở rộng và tương thích với nhiều hệ điều hành, từ MS-DOS và Mac OS đến OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, Guido van Rossum vẫn được xem là tác giả của ngôn ngữ này.

Lớp trong mô hình Keras

Lớp tích chập Lớp gộp Lớp lặp lại Lớp nhúng

19 chủ yếu của Python Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python

Python là ngôn ngữ lập trình có cú pháp đơn giản và rõ ràng, giúp việc đọc và viết mã dễ dàng hơn so với các ngôn ngữ như C++, Java hoặc C# Với tính dễ học, Python cho phép bạn tập trung vào giải pháp và logic của bài toán thay vì phải xử lý cú pháp, từ đó quá trình lập trình trở nên thú vị và thuận tiện hơn.

Python miễn phí và mã nguồn mở, cho phép bạn tự do sử dụng, phân phối và thậm chí áp dụng cho mục đích thương mại Nhờ tính mở của mã nguồn, bạn không chỉ có thể chạy các phần mềm được viết bằng Python mà còn chỉnh sửa và tùy biến mã nguồn của chúng để phù hợp với nhu cầu của mình.

Khả năng di động nền tảng của Python cho phép các chương trình được di chuyển từ nền tảng này sang nền tảng khác và chạy nguyên bản mà không cần bất kỳ thay đổi nào Với tính đa nền tảng, Python hoạt động liền mạch trên Windows, macOS và Linux, giúp các dự án phát triển linh hoạt, tối ưu hóa thời gian và đảm bảo tương thích trên nhiều hệ điều hành.

Khả năng mở rộng và nhúng cho phép kết hợp dễ dàng các phần mã bằng C, C++ và các ngôn ngữ khác có thể gọi từ C vào code Python, ngay cả khi ứng dụng đòi hỏi mức độ phức tạp cao Việc tích hợp này mang lại cho ứng dụng của bạn những tính năng mạnh mẽ hơn và khả năng viết kịch bản (scripting) mà các ngôn ngữ lập trình khác khó có thể thực hiện.

Ngôn ngữ thông dịch cấp cao như Python giúp bạn thoát khỏi những nhiệm vụ phức tạp của C/C++, đặc biệt là quản lý bộ nhớ và dọn dẹp dữ liệu vô nghĩa Khi chạy mã Python, trình thông dịch sẽ tự động biên dịch mã thành bytecode và thực thi trên máy ảo, cho phép bạn tập trung vào logic chương trình mà không phải lo về cấp thấp Với Python, việc quản lý bộ nhớ và dọn dẹp dữ liệu được tự động xử lý, giúp tăng tốc quá trình phát triển và cải thiện hiệu quả làm việc trên dự án của bạn.

Thư viện tiêu chuẩn Python là kho công cụ phong phú giúp giải quyết các tác vụ phổ biến một cách hiệu quả, khiến việc lập trình trở nên dễ thở hơn nhờ tận dụng các module có sẵn thay vì tự viết tất cả mã Việc sử dụng thư viện tiêu chuẩn không chỉ rút ngắn thời gian phát triển mà còn tăng tính ổn định và bảo trì cho dự án Với các công cụ chuyên dụng cho xử lý dữ liệu, làm việc với tệp tin, mạng, và nhiều tác vụ phổ biến khác, Python cho phép bạn xây dựng ứng dụng nhanh hơn, an toàn hơn và dễ mở rộng khi cần.

Trong Python, hướng đối tượng là nguyên tắc nền tảng khi mọi thứ được xem là đối tượng Lập trình hướng đối tượng (OOP) giúp giải quyết các vấn đề phức tạp một cách trực quan bằng cách phân chia chúng thành các tập nhỏ hơn thông qua việc tạo ra các đối tượng Nhờ OOP, bạn có thể quản lý và tái sử dụng mã nguồn hiệu quả hơn, đồng thời mở rộng dự án dễ dàng bằng cách mô tả rõ ràng các đối tượng, lớp và mối quan hệ giữa chúng.

Lập trình ứng dụng web cho phép xây dựng các web app có khả năng mở rộng bằng cách kết hợp framework hiện đại và hệ thống quản trị nội dung (CMS) được tích hợp sẵn, giúp quản trị nội dung dễ dàng và tăng tính linh hoạt khi mở rộng quy mô Việc chọn framework phù hợp sẽ tối ưu hiệu suất, đảm bảo mã nguồn có cấu trúc và dễ bảo trì, đồng thời hỗ trợ mở rộng theo nhu cầu người dùng và dữ liệu ngày càng lớn Kết hợp CMS cho phép quản trị nội dung hiệu quả mà vẫn duy trì tốc độ tải trang, đặc biệt khi áp dụng các kỹ thuật tối ưu hóa như caching, tối ưu hóa truy vấn và phân phối nội dung qua CDN Đối với dự án quy mô lớn, nên xem xét kiến trúc API-first, tách riêng frontend và backend, và triển khai các mô hình như microservices hoặc thiết kế mô-đun để tăng khả năng mở rộng và khả năng bảo trì Đồng thời, để đảm bảo hiệu quả SEO, cần tối ưu hóa URL thân thiện, tiêu đề và mô tả meta hợp lý, cấu trúc dữ liệu có ý nghĩa và thời gian tải trang nhanh, từ đó cải thiện xếp hạng trên công cụ tìm kiếm.

Trong Python có nhiều framework hỗ trợ phát triển web app Các nền tảng phổ biến nhất cho xây dựng web app gồm Django, Flask, Pyramid, Plone và Django CMS, phù hợp với các dự án từ nhẹ đến phức tạp Các trang nổi tiếng như Mozilla, Reddit, Instagram và PBS được viết bằng Python, minh chứng cho khả năng của Python trong phát triển web và các hệ thống quy mô lớn.

Trong lĩnh vực khoa học và tính toán dữ liệu, Python nổi bật nhờ hệ sinh thái thư viện phong phú, gồm các công cụ phổ biến như SciPy và NumPy cho các tác vụ tính toán chung Bên cạnh đó còn có các thư viện chuyên biệt như EarthPy cho khoa học trái đất và AstroPy cho thiên văn học, mở rộng phạm vi ứng dụng của Python trong nhiều ngành khoa học Ngoài ra, Python còn được sử dụng nhiều trong máy học, khai thác dữ liệu và học sâu, nhờ tính linh hoạt và cộng đồng phát triển ngày càng mạnh mẽ.

Python là một ngôn ngữ lập trình rất phù hợp để tạo nguyên mẫu phần mềm và bản chạy thử nhanh chóng; tuy nhiên, so với các ngôn ngữ được biên dịch như C++ và Java, Python thường có hiệu suất chậm hơn Điều này có nghĩa là nếu nguồn lực hạn chế và yêu cầu về hiệu suất là bắt buộc, Python có thể không phải lựa chọn tối ưu Tuy vậy, Python vẫn là công cụ tuyệt vời để phát triển prototype, giúp rút ngắn thời gian từ ý tưởng đến thử nghiệm và kiểm tra khái niệm trong chu trình phát triển trước khi chuyển sang các ngôn ngữ có hiệu suất cao hơn cho phần triển khai cuối cùng.

Python là ngôn ngữ được nhiều công ty và trường học chọn để dạy lập trình cho trẻ em và người mới bắt đầu Bên cạnh các tính năng mạnh mẽ và khả năng linh hoạt, cú pháp đơn giản và dễ tiếp cận của Python là lý do chính khiến ngôn ngữ này được ưa chuộng cho quá trình học lập trình [9].

THƯ VIỆN OPEN CV

Open CV (Open Source Computer Vision) là dự án bắt đầu tại hãng Intel vào năm

1999 bởi Gary Bradsky và ra mắt lần đầu tiên vào năm 2000 Sau đó Vadim Pisarevsky gia nhập và quản lý nhóm Tiếp theo nó tiếp tục được cải tiến và phát triển dưới sự hỗ trợ của Willow Garage bên cạnh với Gary Bradsky và Vadim Pisarevsky Hiện tại Open CV hỗ trợ vô số các thuật toán liên quan để lĩnh vực thị giác máy tính (computer vision) và lĩnh vực học máy (machine learning)

Open CV có thể sử dụng được ở hầu hết các ngôn ngữ như C++, Python, Java và các hệ điều hành khác nhau như Windows, Linux, OS X, Android, IOS Ngoài ra nó có thể sử dụng card đồ họa GPU để xử lý nhằm tăng tốc độ xử lý

Một số module trong thư viện Open CV:

Chức năng lõi (core) của hệ thống là một module gọn nhẹ, đảm nhận xác định và xử lý các cấu trúc dữ liệu cơ bản Nó bao gồm mảng đa chiều dày đặc và cung cấp nhiều chức năng căn bản được dùng bởi tất cả các module khác trong dự án Thiết kế tối ưu và nhất quán của module lõi đảm bảo hiệu suất cao, tính ổn định và khả năng mở rộng cho toàn bộ hệ thống khi làm việc với các cấu trúc dữ liệu nền tảng.

Image Processing (imgproc) is a core module for digital image enhancement and analysis It encompasses linear and non-linear image filtering to reduce noise, enhance features, and improve image quality, along with geometric transformations such as scaling, rotation, and perspective changes to align and prepare images for downstream computer vision tasks.

21 size, afin và warp phối cảnh, ánh xạ lại dựa trên bảng chung), chuyển đổi không gian màu, biểu đồ, và nhiều cái khác

- Video Analysis (video): Module phân tích video bao gồm các tính năng ước tính chuyển động, tách nền, và các thuật toán theo dõi vật thể

Object Detection (objdetect) là công nghệ phát hiện và nhận diện đối tượng trong ảnh hoặc video, xác định vị trí và nhãn của các đối tượng xuất hiện trong khung hình Nó dựa trên các lớp predefined classes (lớp được định nghĩa sẵn), cho phép nhận diện nhanh các đối tượng phổ biến như khuôn mặt, mắt, cốc, con người và xe hơi Nhờ objdetect, hệ thống có thể gán nhãn và định vị vị trí của đối tượng một cách chính xác, phục vụ cho các ứng dụng từ giám sát an ninh đến phân tích cảnh và tự động hóa xử lý video.

- GPU: Các thuật toán tăng tốc GPU từ các module Open CV khác [10]

2.10.2 Đặc điểm thư viện Open CV

OpenCV là một thư viện nguồn mở cho phép sử dụng miễn phí các thuật toán xử lý ảnh và đồng thời cho phép cộng đồng đóng góp thêm các thuật toán mới, từ đó giúp thư viện ngày càng phát triển và hoàn thiện.

Một số ứng dụng nổi bật Open CV như: Nhận dạng ảnh, xử lý hình ảnh, phục hồi hình ảnh/video, thực tế ảo, ứng dụng trong học sâu,…

Các tính năng của thư viện Open CV:

- Đối với hình ảnh, chúng ta có thể đọc và lưu hay ghi chúng

- Xử lý hình ảnh có thể lọc nhiễu cho ảnh, hay chuyển đổi ảnh

- Thực hiện nhận dạng đặc điểm của hình dạng trong ảnh

- Phát hiện các đối tượng xác định được xác định trước như khuôn mặt, mắt, xe trong video hoặc hình ảnh.

HỆ THỐNG THÔNG TIN VÀ HƯỚNG DẪN ĐẬU XE PGI

Hệ thống thông tin và hướng dẫn đậu xe PGI là mô hình cung cấp thông tin và chỉ dẫn về khoảng trống đỗ xe nhằm giảm thiểu ùn tắc trong bãi giữ xe Khi người điều khiển phương tiện tới điểm kiểm soát, họ sẽ quan sát bảng điện tử tại chốt để nắm tình trạng vị trí đỗ và nhận diện chỗ trống được hiển thị; dựa vào bản đồ hiển thị này, nhân viên điều hành có thể tư vấn và hướng dẫn người lái đưa xe vào chỗ đỗ thuận lợi nhất PGI tích hợp nhiều phương pháp cho hệ thống, từ cảm biến và đèn báo hiệu đến mạng nơ-ron tích chập, nhằm nhận diện và cập nhật trạng thái của bãi đỗ theo thời gian thực để tối ưu hóa luồng xe.

Một trong những hệ thống phổ biến hiện nay là hệ thống đỗ xe tự động trong tầng hầm của các tòa nhà, cho phép xe ô tô được dẫn đường và tự động dừng đỗ mà người lái chỉ cần quan sát Hệ thống này hoạt động dựa trên công nghệ cảm biến siêu âm nhằm nhận diện khoảng cách và chướng ngại vật, từ đó điều khiển hệ truyền động và phanh để xe vào vị trí đỗ mong muốn Việc triển khai đỗ xe tự động tại tầng hầm giúp tăng an toàn, giảm va chạm và tối ưu hóa không gian đỗ xe, đồng thời cải thiện trải nghiệm người dùng và hiệu quả quản lý bãi đỗ của tòa nhà Các thành phần chính gồm cảm biến siêu âm, bộ điều khiển trung tâm và cơ cấu truyền động được tích hợp với hệ thống quản lý bãi đỗ xe của tòa nhà.

Ở mỗi vị trí đỗ xe được gắn cảm biến siêu âm để phát hiện sự có mặt của xe, tín hiệu từ các cảm biến được gửi về bộ điều khiển trung tâm và tập hợp dữ liệu từ các khu vực khác nhau Hệ thống sẽ cập nhật và hiển thị trên bảng đèn LED tại từng khu vực và trên các lối rẽ bằng màu xanh hoặc đỏ, tương ứng với trạng thái còn trống hay đã có xe đỗ tại vị trí đó Thông qua việc thống kê số lượng xe và xác định vị trí xe trong tầng hầm, hệ thống sẽ cho thấy tổng số chỗ trống còn lại trong bãi đỗ xe.

Hình 2.17: Hệ thống PGI trong tầng hầm dùng cảm biến

Hiện nay, việc ứng dụng mạng nơron tích chập (CNN) thông qua xử lý ảnh ngày càng được hướng tới trong hệ thống PGI Qua quá trình đào tạo với tập dữ liệu ParkingLot, phương pháp này kết hợp mạng CNN sâu với bộ nhị phân SVM và đã đạt độ chính xác lên tới 99,7% trong các điều kiện thời tiết được khảo sát, cho thấy hiệu quả rõ rệt của phương pháp này.

Chi phí hợp lý và khả năng ứng dụng cho cả môi trường trong nhà lẫn ngoài trời là yếu tố thuận lợi cho sự phát triển của hệ thống PGI sử dụng mạng nơ-ron tích chập Với tính linh hoạt và tiềm năng mở rộng, công nghệ này có thể triển khai hiệu quả ở cả không gian nội thất và ngoại thất, đáp ứng nhiều yêu cầu thực tế.

Hình 2.18: Cấu trúc và bố cục đơn giản của hệ thống PGI dùng CNN

Hình 2.19: Kết quả nhận diện chỗ trống [13]

TẬP DỮ LIỆU BÃI ĐẬU XE

Một thách thức lớn trong nghiên cứu phân loại chỗ đậu xe là thiếu dữ liệu nhất quán và đáng tin cậy Để khắc phục, tập dữ liệu PKLot – Parking Lot đã ra đời như một nguồn dữ liệu hình ảnh mạnh cho các bãi đậu xe, là phiên bản mở rộng của tập dữ liệu được Almeida giới thiệu vào năm 2013, với quy mô tăng từ 105.837 lên 695.899 hình ảnh Trong phiên bản mới, các vị trí đỗ được lấy từ nhiều bãi xe ở các điều kiện thời tiết khác nhau Mỗi ảnh chỗ đậu xe được kiểm tra thủ công và phân loại dựa trên tình trạng (trống hay có xe), đồng thời ghi nhận điều kiện thời tiết quan sát được trong quá trình thu thập hình ảnh (nắng, u ám hoặc mưa).

PKLot là một tập dữ liệu gồm 12.417 hình ảnh về bãi đỗ xe và 695.899 hình ảnh được phân đoạn từ chúng, tất cả đều được kiểm tra và dán nhãn thủ công Các hình ảnh được thu thập tại các bãi đỗ xe của Đại học Liên bang Paraná (UFPR) và Đại học Công giáo Pontifical Paraná (PUCPR), cả hai đều ở Curitiba, Brazil Giao thức xây dựng PKLot gồm ba bước: thu thập hình ảnh, ghi nhãn và phân đoạn.

Một số hình ảnh được lấy từ tập dữ liệu:

Hình 2.20: Những ô không có xe

TRÌNH SOẠN THẢO SUBLIME TEXT

Sublime Text Editor là một trình soạn thảo văn bản mạnh mẽ với đầy đủ tính năng cho phép chỉnh sửa trực tiếp các tệp cục bộ hoặc mã nguồn nền Trình soạn thảo này cung cấp nhiều tính năng chỉnh sửa code nền khác nhau, giúp các nhà phát triển theo dõi và quản lý các thay đổi một cách hiệu quả, từ đó tăng nhanh tiến độ công việc và tối ưu quy trình phát triển.

Sublime Text is an Integrated Development Editor (IDE)-style editor for software development, offering features similar to IDEs like Visual Studio and NetBeans The current version, Sublime Text 3.0, runs on Windows, Linux, and macOS.

2.13.2 Các tính năng chính Đa nền tảng: Trình soạn thảo mã Sublime text được cài sẵn trên các nền tảng Mac, Windows và Linux Vì thế, người dùng dễ dàng sử dụng trên mọi máy tính Nó có sử dụng bộ công cụ UI tùy chỉnh nên giao diện được tối ưu hóa rất tốt cả về mặt tốc độ lẫn thẩm mỹ Không những thế, nó còn tận dụng mọi chức năng gốc trên mỗi nền tảng

Hiệu suất làm việc là ưu tiên hàng đầu của Sublime Text, được thể hiện qua UI đa nền tảng mạnh mẽ, dễ tùy chỉnh và các công cụ độc quyền hiếm có Nó được xây dựng từ các thành phần tùy chỉnh và có khả năng thích ứng rất tốt với nhiều môi trường làm việc, giúp tối ưu hóa quá trình làm việc và nâng cao hiệu quả cho người dùng.

Trong Sublime Text, chuyển đổi giữa các dự án diễn ra nhanh chóng và không làm mất nội dung của workspace Mỗi dự án lưu giữ toàn bộ không gian làm việc, bao gồm cả các tệp đang chỉnh sửa và tệp chưa được lưu, giúp người dùng tiếp tục đúng vị trí làm việc sau khi mở lại Việc chuyển đổi dự án có thể thực hiện ngay lập tức và tất cả thay đổi được khôi phục khi dự án được mở lần sau Nhờ tính năng này, người phát triển có thể làm việc trên nhiều dự án một cách hiệu quả mà không tốn thời gian khôi phục thủ công.

Chỉnh sửa tách là một tính năng dựa trên độ rộng màn hình bạn đang sử dụng, cho phép tinh chỉnh bố cục một cách linh hoạt Bạn có thể chỉnh sửa nhiều hàng và nhiều cột theo ý muốn, ghép các tệp cạnh nhau hoặc di chuyển giữa hai vị trí trong cùng một tệp để tối ưu hóa quy trình làm việc Tính năng này giúp kiểm soát bố cục nhanh chóng và hiệu quả, phù hợp với mọi kích thước màn hình và nhu cầu sắp xếp tài liệu.

Tuỳ chỉnh mọi thứ trong Sublime Text bằng các tệp JSON dễ dàng Với trình soạn thảo này, người dùng có thể linh hoạt thiết lập và áp dụng các cấu hình riêng cho từng loại tệp hoặc từng dự án, giúp cá nhân hoá môi trường làm việc và tối ưu hoá quy trình phát triển.

Hệ sinh thái gói và API mạnh mẽ của Sublime Text là điểm nổi bật và thu hút người dùng, nhờ API Python cho phép tích hợp và mở rộng các plugin một cách linh hoạt Người dùng có thể tùy biến môi trường làm việc và tăng cường chức năng editor thông qua các plugin được viết bằng Python Bên cạnh đó, Sublime Text cho phép truy cập vào hàng ngàn gói được xây dựng bởi cộng đồng một cách dễ dàng, giúp nâng cao hiệu suất viết mã và tối ưu quy trình làm việc.

Bảng lệnh cho phép người dùng tìm kiếm nhanh những gì mình muốn chỉ với vài nhấn phím, không cần phải điều hướng qua các hướng dẫn hay ghi nhớ các phím tắt phức tạp Nhờ bảng lệnh, mọi tính năng có thể được truy cập ngay lập tức bằng từ khóa hoặc cú pháp đơn giản, giúp tăng tốc công việc và mang lại trải nghiệm người dùng mượt mà hơn.

Sublime Text mang tới nhiều sự lựa chọn cho người dùng bằng tính năng cho phép chọn nhiều dòng cùng lúc, đổi tên dễ dàng và thao tác với tệp nhanh chóng hơn bao giờ hết Với định nghĩa cú pháp, Sublime Text tự động tạo ra một mục toàn dự án liệt kê mọi hàm, phương thức và lớp, giúp nắm bắt cấu trúc mã nguồn một cách trực quan Ngoài ra, tính năng điều hướng nhanh cho phép di chuyển dễ dàng đến các tệp, biểu tượng, dòng và từ trong dự án, tối ưu hóa quy trình làm việc và cải thiện hiệu suất lập trình.

2.13.3 Sử dụng trình soạn thảo Sublime Text Đầu tiên chúng ta cần tạo một tệp dưới dạng py để viết code python

Hình 2.22: Giao diện làm việc chính và cách tạo file python

Sau đó, chúng ta cần chọn loại ngôn ngữ python 3

Hình 2.23: Giao diện xây dựng hệ thống

Sau khi viết chương trình xong chúng ta có thể dùng tổ hợp phím Ctrl + B để chạy chương trình [11]

COMMAND PROMPT

Command Prompt là chương trình giao diện dòng lệnh dùng để thực thi các lệnh trong hệ điều hành Windows Hầu hết các lệnh được dùng để tự động hóa các tác vụ thông qua tập lệnh, khắc phục sự cố hoặc giải quyết một số vấn đề nhất định trên Windows Chính thức được gọi là Windows Command Processor, Command Prompt còn được biết đến với các tên như command shell hoặc cmd prompt, hoặc thậm chí theo tên tệp của nó là cmd.exe.

Truy cập vào Command Prompt: Có một số cách khác nhau để mở Command

Prompt tùy thuộc vào phiên bản Windows Trong đó, cách dễ nhất là thông qua phím tắt Command Prompt nằm trong menu start Trên Windows 10, thực hiện:

Bước 1: Nhấn phím window hoặc click vào biểu tượng cửa sổ ở góc trái thanh taskbar

Bước 2: Gõ cmd hoặc command prompt vào ô tìm kiếm, mở kết quả tìm được

Hình 2.24: Tìm Command Prompt và chạy quyền quản trị

Kết quả là chương trình Command Prompt sẽ được hiển thị:

Hình 2.25: Giao diện của Command Prompt

Dùng Command Prompt để cài các thư viện hỗ trợ cho python như thư viện Open

CV, thư viện Keras, thư viện Tensorflow,…

THIẾT KẾ MÔ HÌNH HỆ THỐNG

YÊU CẦU VÀ SƠ ĐỒ KHỐI CỦA HỆ THỐNG

3.1.1 Yêu cầu của hệ thống

Hệ thống có các chức năng sau:

- Có thể xác định số chỗ trống trong bãi xe theo hàng thông qua camera

- Thông báo cho tài xế biết chỗ trống thông qua màn hình hiển thị và các biển báo chỉ dẫn trong nhà xe

- Xử lý dữ liệu camera truyền về và hiển thị lên màn hình một cách nhanh chóng

- Xác định vị trí trống gần với đường lưu thông chính (đường nối từ lối vào đến lối ra) trong bãi xe

3.1.2 Sơ đồ khối và chức năng

Hình 3.1: Sơ đồ khối của hệ thống

- Khối nguồn: Cung cấp nguồn điện để khối xử lý trung tâm, khối Webcam, khối hiển thị hoạt động

Khối xử lý trung tâm sử dụng mạng CNN để nhận diện và dự đoán trạng thái của từng vị trí là trống hay chiếm chỗ dựa trên các đặc trưng được trích xuất từ tập hợp đầu vào Sau khi kết thúc quá trình huấn luyện, hệ thống sẽ có khả năng đưa ra dự đoán chính xác khi nhận dữ liệu từ khối Webcam Kết quả dự đoán sau đó được hiển thị lên khối hiển thị để người dùng dễ dàng quan sát.

- Khối Webcam: Có chức năng thu thập tín hiệu trực tiếp từ bãi xe và gửi về khối xử lý trung tâm Ở đây nhóm sử dụng Webcam Logitech HD C270

- Khối hiển thị: Hiển thị kết quả thu được từ khối xử lý trung tâm lên màn hình laptop

KHỐI XỬ LÝ TRUNG TÂM

3.1.3 Hoạt động của hệ thống

Khi tài xế lái xe vào bãi đỗ xe, họ có thể theo dõi màn hình hiển thị được lắp đặt tại lối vào và các biển báo hướng dẫn trong bãi để nhanh chóng tìm được chỗ đỗ trống phù hợp Màn hình hiển thị tại lối vào cung cấp thông tin vị trí các chỗ đỗ trống và tình trạng giao thông trong bãi, giúp tiết kiệm thời gian tìm chỗ đỗ Các biển báo trong bãi đỗ xe hướng dẫn đường di chuyển và chỉ dẫn đến khu vực còn chỗ trống, tăng tính thuận tiện cho người dùng Việc tích hợp màn hình hiển thị và biển báo sẽ tối ưu hóa trải nghiệm tìm chỗ đỗ và nâng cao hiệu quả vận hành của bãi đỗ xe.

Màn hình sẽ hiển thị số chỗ trống theo hàng và chỗ đang trống gần với đường lưu thông chính trong bãi nhất.

THIẾT KẾ HỆ THỐNG PHẦN CỨNG

Với nhu cầu của mô hình ở mức vừa phải, việc quan sát rõ ràng được thực hiện ở khoảng cách từ 0,5 m đến 2 m Vì vậy nhóm quyết định sử dụng Webcam Logitech HD C270 có sẵn trên thị trường, nhờ tính linh hoạt khi kết nối với laptop qua USB hub Đế đi kèm cho phép đặt và cố định camera lên mô hình một cách dễ dàng Việc kết nối được thực hiện bằng cách cắm đầu USB của camera vào một trong các hub USB của laptop.

Thông số kỹ thuật của Camera C270 HD có phạm vi quan sát là 60 độ, tiêu cự là

Bảng 3.1: Thông số kỹ thuật Webcam Logitech HD C270

Công nghệ Công nghệ Tinh thể lỏng Logitech Fluid Crystal™ Ảnh Lên tới 3.0 megapixel

Giao tiếp USB 2.0 tốc độ cao được chứng nhận

Phần mềm Các nút điều khiển quét ngang, nghiêng và thu phóng, quay video và chụp ảnh, nhận diện khuôn mặt, phát hiện chuyển động

Vị trí lắp đặt camera cho bãi xe nên ở những nơi thông thoáng, không bị che khuất tầm nhìn để thu được tín hiệu hình ảnh với góc nhìn rộng Cần xác định khoảng cách từ vị trí lắp đặt camera đến khu vực cần quan sát nhằm chọn tiêu cự phù hợp, tối ưu hóa chất lượng hình ảnh và khả năng nhận diện.

Hình 3.2: Tiêu cự phù hợp với các khoảng cách

Trong mô hình thi công, khoảng cách từ vị trí cần quan sát đến camera là 245mm, khoảng cách từ mặt đất lên camera là 600mm

Từ hai khoảng cách trên tính được góc đặt camera để quan sát toàn cảnh bãi xe là:

Do dùng camera có phạm vi quan sát là 60° nên góc đặt camera lớn nhất là 50° để có thể quan sát được vị trí xe trong bãi

3.2.2 Khối xử lý trung tâm

Quá trình huấn luyện mạng ResNet50 tiêu tốn RAM lớn khiến các vi xử lý khác không đáp ứng được và tốc độ xử lý bị hạn chế Vì vậy nhóm đã quyết định tận dụng một chiếc laptop làm khối xử lý trung tâm để tối ưu nguồn lực và cải thiện thời gian huấn luyện Thông số kỹ thuật của laptop được trình bày chi tiết trong bảng 3.2, nhằm cung cấp cái nhìn tổng quan về khả năng xử lý và dung lượng RAM phù hợp cho mạng học sâu như ResNet50.

Bảng 3.2: Thông số kỹ thuật của laptop G3

RAM DDR4 8GB (1 x 8GB) 2666MHz; 2 slots, up to 32GB

Màn hình 15.6" FHD (1920×1080), IPS Ổ cứng SSD SSD M.2 128GB Ổ cứng HDD 1TB HDD 5400 rpm

Các cổng kết nối 2x SuperSpeed USB 3.1 Gen 1 Type-A 1x Power/DC-in

Jack 1x HDMI 2.0 1x Gigabit Ethernet RJ-45

Hình 3.3: Thông số của mạng Resnet 50 3.2.3 Khối nguồn

Nhóm chỉ sử dụng laptop làm bộ xử lý chính và khối webcam dùng bộ xử lý làm nguồn; vì vậy nhóm chỉ dùng nguồn Adapter chính hãng của Dell Thiết kế này đảm bảo nguồn cấp ổn định cho hệ thống và tối ưu hóa hiệu suất nhờ sự đồng bộ giữa các thành phần, đồng thời tăng độ tin cậy với nguồn Dell chính hãng.

Adapter Dell chính hãng có nguồn đầu ra 19.5V – 6.7A, được thiết kế để cấp nguồn cho laptop Bạn chỉ cần cắm phích cắm của Adapter vào nguồn điện 220V bất kỳ và kết nối đầu ra của Adapter với cổng nguồn trên laptop để máy hoạt động Dưới đây là sơ đồ kết nối giữa Adapter và Laptop.

Hình 3.4: Sơ đồ kết nối giữa Laptop và nguồn thông qua Adapter

Dùng màn hình laptop để hiển thị các kết quả của hệ thống sau khi hoạt động.

THIẾT KẾ PHẦN MỀM

- Xử lý hình ảnh thu được từ webcam, báo về các vị trí đã có xe hay chưa có xe thông qua mô hình Resnet50 đã huấn luyện

- Hiển thị lên màn hình chỗ trống là màu xanh và chỗ có xe là màu đỏ

- Hiện thị lên màn hình số thứ tự của từng chỗ theo hàng

- Hiển thị lên màn hình số chỗ trống và chỗ trống gần với đường chính nhất theo hàng

3.3.2.1 Lưu đồ giải thuật của hệ thống

Chương trình được phân thành các chương trình con nhằm quản lý bãi đỗ xe hiệu quả Chương trình con xác định tọa độ chỗ đỗ xe trong bãi, xử lý các chỗ đỗ xe được phát hiện, đưa ra kết luận và tính tổng số chỗ còn trống; đồng thời xác định vị trí chỗ trống gần nhất và gửi kết quả lên màn hình thông báo theo thứ tự hàng Lưu đồ cho quy trình này được thể hiện ở hình 3.4.

Trong phần mềm quản lý bãi đỗ xe, sau khi khởi động, camera webcam sẽ cung cấp hình ảnh cho các module con Module nhận diện chỗ đỗ xe xác định toạ độ các vị trí đỗ xe trong bãi và lưu giữ chúng để phục vụ quá trình xử lý nhận dạng Khi kết quả của module nhận diện cho biết một chỗ đỗ có xe hay không, thông tin này được tổng hợp và đưa sang khối xử lý tiếp theo để tính tổng số chỗ trống theo hàng và xác định chỗ trống gần đường chính nhất Kết quả kết luận và vị trí các chỗ đỗ được hiển thị trên màn hình, sau đó hệ thống lặp lại vòng quét để cập nhật liên tục tình trạng xe trong bãi.

Hình 3.5: Lưu đồ giải thuật tổng quát

3.3.2.2 Lưu đồ giải thuật chương trình con xác định tọa độ chỗ đỗ xe trong bãi xe

Hình 3.6: Lưu đồ giải thuật chương trình xác định tọa độ chỗ đỗ xe

Ban đầu chương trình khởi tạo tệp YAML và mảng vị trí đỗ xe, đồng thời nhận ảnh toàn bãi xe chụp từ webcam Sau đó hệ thống thiết lập một sự kiện nhấp chuột trái hai lần vào ảnh để thu được tọa độ (x, y) tại điểm nhấp, và nếu tọa độ này trùng với một vị trí đỗ đã lưu trong danh sách, nó sẽ được xử lý để đánh dấu hoặc cập nhật trạng thái của vị trí đó.

Quá trình xác định vị trí đỗ xe được ghi nhận vào một mảng gồm 4 điểm tọa độ; nếu thao tác sai sẽ yêu cầu người dùng thực hiện lại Khi đủ 4 điểm, dữ liệu sẽ được lưu vào tệp YAML chứa tọa độ của 4 điểm kèm số thứ tự, còn nếu chưa đủ 4 điểm thì người dùng sẽ nhấn chuột để xác định lại cho đến khi thu đủ 4 điểm Cuối cùng, chương trình sẽ yêu cầu thoát; nếu chọn đúng, chương trình kết thúc, còn nếu chọn sai sẽ xóa mảng vị trí đỗ xe cũ và thực hiện lại thao tác nhấn chuột để xác định tọa độ.

3.3.2.3 Lưu đồ chương trình xử lý và nhận dạng các chỗ đỗ xe trong bãi

Hình 3.7: Lưu đồ giải thuật chương trình xử lý và nhận dạng các chỗ đỗ xe

Chương trình xử lý và nhận dạng chỗ trống nhận dữ liệu đầu vào gồm tín hiệu video từ webcam, tọa độ 4 điểm và số thứ tự của từng vị trí đỗ xe trong bãi; từ các dữ liệu này hệ thống xác định các vị trí đỗ xe trong bãi và áp dụng bộ trọng số được huấn luyện của mạng ResNet để nhận diện chính xác chỗ đỗ trống, giúp tối ưu hóa quản lý bãi đỗ và cải thiện hiệu suất phân tích vị trí đỗ.

50 Do chương trình xử lý dựa trên ảnh tĩnh nên chương trình sẽ cần chuyển tín hiệu video về thành từng khung hình, sau đó đưa các khung hình vào xử lý Sau khi có tọa độ 4 điểm của từng vị trí đỗ xe thì chương trình sẽ tự động tạo một hình chữ nhật xung quanh 4 điểm lên khung hình đang xử lý Hình chữ nhật có 4 trọng số là tâm hình chữ nhật (x,y) và chiều dài, ngang (w,h) Tiếp theo chương trình sẽ cắt khung hình toàn cảnh bãi xe thành nhiều phần nhỏ theo 4 trọng số của hình chữ nhật bên trên để được khung hình nhỏ chứa từng vị trí đỗ xe rồi đưa qua khối tiền xử lý

Khối tiền xử lý ở đây có chức năng chuyển đổi khung hình được cắt nhỏ về cùng kích thước với ảnh đầu vào, chuẩn bị dữ liệu cho mô hình ResNet-50 Do OpenCV lưu ảnh ở định dạng BGR trong khi mô hình ResNet-50 xử lý ảnh ở định dạng RGB, nên cần chuyển đổi ảnh từ BGR sang RGB trước khi đưa vào mô hình để đảm bảo hiệu suất và độ chính xác.

Khung hình sau khi qua khối tiền xử lý được đưa vào xử lý song song để tính giá trị đặc trưng cho từng khung và cho ra kết quả nhận diện; do tỉ lệ chính xác 99% trên tập ảnh mẫu khi huấn luyện, ngưỡng 0.99 được dùng để so sánh Khi giá trị nhận được vượt ngưỡng, hệ thống báo có xe và vẽ lên khung hình từ webcam một hình chữ nhật màu đỏ tại các vị trí có xe, còn những vị trí không có xe sẽ hiển thị màu xanh; các khung hình đã được vẽ hình chữ nhật sẽ được lưu lại để xuất ra màn hình.

3.3.2.4 Lưu đồ giải thuật xác định vị trí đang trống gần đường chính và xác định tổng số chỗ trống

Kết quả thu được từ chương trình con xử lý và nhận dạng chỗ đỗ xe trong bãi được đưa vào chương trình xác định tổng số chỗ trống và vị trí đỗ gần đường chính theo từng hàng Ở hàng 1, chương trình kiểm tra vị trí 1 xem có xe hay không: nếu chưa có xe thì cập nhật vị trí 1 trống lên khối hiển thị; nếu có xe, tiếp tục kiểm tra vị trí 2, rồi 3, 4 theo cùng nguyên tắc Riêng vị trí 5 nếu có xe sẽ báo về khối hiển thị là hàng đã hết chỗ và in đỏ Đối với hàng 2 và hàng 3, quá trình kiểm tra được thực hiện tương tự như hàng 1 Chương trình thực hiện đồng thời kiểm tra cả 3 hàng và hiển thị kết quả sau khi xác định được vị trí trống gần đường chính và tổng số chỗ trống theo từng hàng lên màn hình thông báo Quá trình hoạt động được minh họa bởi lưu đồ hình 3.7.

Hình 3.8: Lưu đồ của xác định vị trí đang trống và số chỗ trống ở hàng 1

KẾT QUẢ THỰC HIỆN

KẾT QUẢ PHẦN CỨNG

Sau quá trình nghiên cứu, mô hình hệ thống bãi đỗ xe tự phát hiện chỗ trống được xây dựng như hình 4.1 Mô hình được thực hiện trên các tấm formec có chiều dài là 600mm và chiều ngang là 600mm, chiều cao của giá đỡ camera là 600mm, mỗi vị trí trong bãi có diện tích là 80x110 (mm)

Hình 4.1: Mô hình hệ thống

Mô hình thực hiện đáp ứng các nhu cầu đặt ra: Bãi xe khoảng 15 vị trí, camera đặt ở vị trí cao có thể quan sát được tất cả vị trí xe trong bãi

Để tối ưu kết quả nhận diện xe đỗ trong bãi, hệ thống cần hoạt động với điều kiện ánh sáng đầy đủ tại từng vị trí đỗ Những vị trí ánh sáng tối có thể khiến hệ thống nhận diện sai Mô hình hiện tại phù hợp với xe 7 chỗ trở xuống; những xe quá to có thể che khuất vị trí bên cạnh, làm giảm độ chính xác nhận diện Camera (webcam) nên được đặt ở vị trí có tầm nhìn không bị che khuất bởi các vật cản quanh khu vực bãi đỗ, để đảm bảo ghi nhận đầy đủ mọi vị trí đỗ.

KẾT QUẢ PHẦN MỀM

Chương trình sau khi chạy thì đáp ứng được các nhu cầu của hệ thống:

Hệ thống nhận diện chỗ trống trong bãi đỗ xe và hiển thị trên màn hình với các ô màu xanh cho vị trí còn trống và ô màu đỏ cho vị trí đã có xe, giúp người lái dễ nhận biết và tìm chỗ đỗ nhanh chóng, đồng thời tối ưu hóa luồng giao thông trong bãi.

- Hiển thị được tổng số chỗ trống và vị trí trống gần đường chính nhất theo hàng để tài xế có thể lựa chọn chỗ trống phù hợp

Hình 4.2: Kết quả hiển thị lên màn hình máy tính

Chương trình sau khi hoạt động thì màn hình sẽ hiển thị bao gồm 2 phần chính như hình 4.2

Hình 4.2a cho thấy video được thu từ webcam của bãi đỗ xe sau khi đã được xử lý, trong đó các vị trí trống được hiển thị bằng ô màu xanh và các vị trí có xe được hiển thị bằng ô màu đỏ; màn hình còn hiển thị số thứ tự của từng vị trí theo hàng đã được bảng hướng dẫn cố định trong nhà xe quy định, giúp tài xế dễ quan sát và xác định tình trạng đỗ xe trên màn hình.

Hình 4.2b hiển thị vị trí các chỗ đỗ trống gần đường chính nhất theo từng hàng và số chỗ trống còn lại theo từng hàng để tài xế có thể quan sát dễ dàng Điều này cho phép người lái xe nắm bắt nhanh tình trạng đỗ xe ở khu vực và lên kế hoạch di chuyển hiệu quả Sau đây là một số kết quả từ nhiều trường hợp thực tế cho thấy cách bố trí chỗ đỗ và số lượng chỗ trống theo từng hàng ảnh hưởng đến thời gian tìm chỗ và lưu lượng xe.

Trường hợp 1 mô tả cách thay đổi góc đặt webcam theo 3 góc quan sát khác nhau như hình 4.3: góc quan sát 1 đặt webcam sao cho hướng nhìn chéo so với các xe, góc quan sát 2 đặt webcam sao cho hướng nhìn ngang với các xe, và góc quan sát 3 đặt webcam sao cho hướng nhìn dọc theo các xe Dưới đây là một số hình mô tả ba trường hợp đặt góc ở trên, giúp người dùng hình dung cách điều chỉnh vị trí và hướng webcam để tối ưu hóa quan sát và ghi hình các phương tiện trên tuyến đường.

Hình 4.3: Các góc quan sát khác nhau để đặt webcam

Hình 4.4: Ảnh bãi xe thu được khi đặt webcam ở góc quan sát 1

Hình 4.5: Ảnh bãi xe thu được khi đặt webcam ở góc quan sát 2

Hình 4.6: Ảnh bãi xe thu được khi đặt webcam ở góc quan sát 3

Đặt webcam ở góc quan sát 1 có thể thu được hình ảnh bãi đỗ xe như hình 4.4 Tuy nhiên, khi sử dụng góc quan sát này, kết quả nhận dạng của hệ thống có thể bị ảnh hưởng bởi sự khác biệt về chiều cao giữa các xe, như các hình minh họa ở bên dưới Điều này có thể được cải thiện bằng cách lắp đặt camera ở vị trí phù hợp, tiến về phía giữa bãi để tránh các điểm khuất và tăng độ chính xác nhận diện xe.

Hình 4.7: Trường hợp nhận dạng sai ở góc quan sát 1 của hàng 2 và 3

Trong hình 4.7, hàng 3 ở vị trí 3 có xe được hệ thống nhận dạng đúng, nhưng ô bên cạnh tại vị trí 4 lại không có xe nhưng bị nhận diện là có xe Tương tự, hàng 2 ở vị trí 2 có xe nhưng vị trí kế bên là ô thứ 3 lại không có xe và bị nhận dạng sai thành có xe Một số trường hợp sai được quan sát ở các hàng và vị trí khác, được thể hiện ở hình 4.8 và hình 4.9.

Hình 4.8: Trường hợp nhận dạng sai ở góc quan sát 1 của hàng 2

Hình 4.9: Trường hợp nhận dạng sai ở góc quan sát 1 của hàng 3

Bảng 4.1: Kết quả hàng 1 sau khi đặt webcam ở góc quan sát 1

Trong bảng 4.4, hàng thứ hai cho thấy khi vị trí có xe là 2 và hệ thống nhận diện ở vị trí thứ 2 nhận diện đúng có xe, kết quả được ký hiệu bằng dấu ✓ Điều này cho thấy điều kiện nhận diện chính xác tại vị trí thứ hai và cách thể hiện kết quả trong bảng, từ đó có thể đánh giá độ tin cậy của hệ thống ở các vị trí khác dựa trên ký hiệu tương ứng.

Ở vị trí thứ 3 không có xe nhưng do bị ảnh hưởng bởi xe ở vị trí thứ 2 nên hệ thống nhận dạng trả về kết quả có xe tại vị trí 3 là sai và được ký hiệu  Khi vị trí có xe là 2, các vị trí nhận dạng còn lại như 1, 4 và 5 không bị ảnh hưởng bởi xe ở vị trí thứ 2, nên kết quả trả về chỗ trống là đúng và được ký hiệu .

Bảng 4.2: Kết quả hàng 2 sau khi đặt webcam ở góc quan sát 1

Bảng 4.3: Kết quả hàng 3 sau khi đặt webcam ở góc quan sát 1

Những dữ liệu từ bảng 4.1, 4.2 và 4.3 cho thấy tỉ lệ nhận dạng chính xác cho các vị trí nằm bên cạnh các xe không cao; khi các hàng càng ở xa so với vị trí đặt webcam thì tỉ lệ sai sót nhận dạng càng lớn Do đó, nếu muốn lắp đặt camera ở vị trí góc chéo mà vẫn đạt tỉ lệ nhận dạng cao, nên di chuyển góc đặt webcam lại gần hơn so với điểm giữa.

Đặt webcam ở góc quan sát với hai hướng nhìn ngang về phía vị trí đỗ xe cho phép thu được hình ảnh bãi xe như hình 4.5 và ở vị trí này tỉ lệ nhận dạng chính xác tương đối cao Tuy nhiên vẫn có trường hợp xuất hiện như hình 4.10 do xe bên cạnh ảnh hưởng tới tầm nhìn của webcam Để cải thiện hiệu quả nhận dạng và hạn chế tác động của tầm nhìn bị che khuất, nên tăng chiều cao vị trí đặt camera hoặc di chuyển camera về điểm giữa để quan sát đều hơn và giảm ảnh hưởng từ các xe xung quanh.

Hình 4.10: Trường hợp nhận dạng sai khi đặt webcam ở góc quan sát 2

Hình 4.11: Các vị trí nhận dạng đúng khi đặt webcam ở góc quan sát 2

Hình 4.12: Các vị trí nhận dạng đúng khi thay đổi vị trí các xe

Bảng 4.4: Kết quả hàng 1 sau khi đặt webcam ở góc quan sát 2

Bảng 4.5: Kết quả hàng 2 sau khi đặt webcam ở góc quan sát 2

Bảng 4.6: Kết quả hàng 3 sau khi đặt webcam ở góc quan sát 2

Sau khi phân tích các bảng 4.5, 4.6 và 4.7, ở góc quan sát 2 tỉ lệ nhận dạng chính xác tương đối cao và ít bị ảnh hưởng bởi các xe bên cạnh; tuy nhiên, các xe cao hơn có thể làm nhận dạng sai, như trường hợp được minh họa ở hình 4.10.

Đặt webcam ở góc quan sát 3 sao cho góc nhìn giống hình 4.6, hệ thống hoạt động với tỉ lệ nhận dạng chính xác cao Do các vị trí đỗ xe không bị che khuất lẫn nhau khi có xe, việc nhận diện vị trí đỗ xe diễn ra ổn định Một số trường hợp nhận dạng vị trí đỗ xe được mô tả ở hình 4.13 và hình 4.14.

Hình 4.13: Các trường nhận dạng đúng các chỗ đỗ xe ở góc quan sát 3

Hình 4.14: Một số trường hợp khác

Bảng 4.7: Kết quả hàng 1 sau khi đặt webcam ở góc quan sát 3

Bảng 4.8: Kết quả hàng 2 sau khi đặt webcam ở góc quan sát 3

Bảng 4.9: Kết quả hàng 3 sau khi đặt webcam ở góc quan sát 3

Từ các bảng 4.7, 4.8, 4.9 có thể thấy được rằng khi đặt webcam ở góc quan sát 3 thì hệ thống cho tỉ lệ nhận dạng chính xác cao

Sau khi tổng kết trường hợp 1 về các góc nhìn, để hệ thống có thể nhận dạng với độ chính xác cao và ít sai sót hơn, nên lựa chọn vị trí đặt camera tại các góc quan sát tối ưu nhằm tăng chất lượng dữ liệu hình ảnh và nâng cao hiệu suất nhận diện.

3 Để thấy rõ hơn có thể quan sát hình 4.15 ở vị trí thứ 4 của hàng 2 thì khi đó đối với góc quan sát 1 và 2 cho về kết quả nhận dạng sai trong khi đó kết quả nhận dạng của góc quan sát 3 là đúng Do đó quyết định làm mô hình đặt webcam ở góc quan sát 3

Hình 4.15: So sánh kết quả nhận dạng của 3 góc quan sát

Trường hợp 2 mô tả bãi đỗ xe hoạt động trong điều kiện ánh sáng tốt, khi ánh sáng ban ngày hoặc hệ thống chiếu sáng cung cấp đủ ánh sáng cho mọi vị trí đỗ và các xe đậu trong bãi có tối đa 7 chỗ Hình 4.16 minh họa bãi đỗ xe có điều kiện ánh sáng thuận lợi, từ đó nhận dạng vị trí đỗ xe đạt độ chính xác cao.

Hình 4.16: Những trường hợp cường độ ánh sáng tốt

Ngày đăng: 01/11/2022, 12:56

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Đông, “Bãi đỗ xe 6 tầng đầu tiên ở Đà Nẵng”, Available: (12/10/2019) https://vnexpress.net/ Sách, tạp chí
Tiêu đề: Bãi đỗ xe 6 tầng đầu tiên ở Đà Nẵng
[2] Nguyễn Quang Hoan (2006), “ Xử lý ảnh”, Học viện công nghệ bưu chính viễn thông Sách, tạp chí
Tiêu đề: Xử lý ảnh
Tác giả: Nguyễn Quang Hoan
Năm: 2006
[3] Nguyễn Thanh Hải (2014) , “Giáo Trình Xử lý ảnh”, NXB ĐHQG TP.HCM Sách, tạp chí
Tiêu đề: Giáo Trình Xử lý ảnh
Nhà XB: NXB ĐHQG TP.HCM
[4] Huỳnh Việt,“Tìm hiểu về mạng nơron tích chập”, Available: http://thanhvie.com/ (4/8/2020) Sách, tạp chí
Tiêu đề: Tìm hiểu về mạng nơron tích chập
[5] Báo cáo tiểu luận môn học, “Khai phá dữ liệu”, Đại học Quốc gia Hà Nội Sách, tạp chí
Tiêu đề: Khai phá dữ liệu
[6] Hữu Tiệp, “Gradient Descent”, Available: https://machinelearningcoban.com/ (16/01/2017) Sách, tạp chí
Tiêu đề: Gradient Descent
[7] Phạm Minh Tuấn, “YAML cơ bản”, Available: http://tuanpm.tech/ (29/05/2017) Sách, tạp chí
Tiêu đề: YAML cơ bản
[8] Thor Pham Blog, “Tìm hiểu về thư viện keras trong deep learning”, Available: https://thorpham.github.io/ (25/05/2018) Sách, tạp chí
Tiêu đề: Tìm hiểu về thư viện keras trong deep learning
[9] Dương Nguyễn, “Python là gì? Tại sao nên chọn Python?”, Available: https://quantrimang.com/ (14/09/2020) Sách, tạp chí
Tiêu đề: Python là gì? Tại sao nên chọn Python
[10] Nguyễn Phương Loan, “Tìm hiểu về OpenCV”, Available: https://viblo.asia/ (3/7/2017) Sách, tạp chí
Tiêu đề: Tìm hiểu về OpenCV
[11] Chaupm, “Sublime text là gì? Hướng dẫn cài đặt trên các hệ điều hành”, Available: https://bizflycloud.vn/ (14/12/2018) Sách, tạp chí
Tiêu đề: Sublime text là gì? Hướng dẫn cài đặt trên các hệ điều hành
[12] Ifu Aniemeka , “A Friendly Introduction to Convolutional Neural Networks”, Available: https://hashrocket.com/ (22/08/2017) Sách, tạp chí
Tiêu đề: A Friendly Introduction to Convolutional Neural Networks
[13] Debaditya Acharya, Weilin Yan and Kourosh Khoshelham, “ Real-time image based parking occupancy detection using deep learning ”, in Proc. of the 5th Annual Conference of Research Sách, tạp chí
Tiêu đề: Real-time image based parking occupancy detection using deep learning
[14] Paulo Almeida, Luiz S. Oliveira, Alceu S. Britto Jr, Eunelson J. Silva Jr, Koerich “ PKLot - A Robust Dataset for Parking Lot Classification ”, Available: (02/2015) https://researchgate.net/ Sách, tạp chí
Tiêu đề: PKLot - A Robust Dataset for Parking Lot Classification

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w