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

(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái

107 25 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 đề Ứng dụng trí tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái
Tác giả Ngô Thành Min, Lê Văn Triệu
Người hướng dẫn PGS.TS. Đỗ Văn Dũng
Trường học Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh
Chuyên ngành Công nghệ kỹ thuật ô tô
Thể loại đồ án tốt nghiệp
Năm xuất bản 2019
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 107
Dung lượng 7,41 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 (12)
    • 1.1. Lý do chọn đề tài (12)
    • 1.2. Mục tiêu nghiên cứu (12)
    • 1.3. Nội dung nghiên cứu (13)
    • 1.4. Giới hạn đề tài (13)
    • 1.5. Phạm vi ứng dụng (13)
  • Chương 2. CƠ SỞ LÝ THUYẾT (14)
    • 2.1. Cơ sở lý thuyết về ảnh và xử lý ảnh (14)
      • 2.1.1. Cơ sở lý thuyết về ảnh (14)
        • 2.1.1.1. Điểm ảnh (Picture Element) (14)
        • 2.1.1.2. Độ phân giải của ảnh (15)
        • 2.1.1.3. Mức xám của ảnh (16)
        • 2.1.1.4. Không gian màu (16)
        • 2.1.1.5. Định nghĩa ảnh số (19)
        • 2.1.1.6. Ảnh trắng đen (19)
        • 2.1.1.7. Ảnh màu (20)
      • 2.1.2. Cơ sở lý thuyết về xử lý ảnh (21)
        • 2.1.2.1. Các bước cơ bản trong xử lý ảnh (21)
        • 2.1.2.2. Các thành phần cơ bản của hệ thống xử lý ảnh (26)
        • 2.1.2.3. Những vấn đề trong xử lý ảnh (27)
    • 2.2. Mạng nơron tích chập – Convolutional Neural Network (CNN) (28)
      • 2.2.1. Thị giác máy tính (Computer vision) (28)
      • 2.2.2. Mạng nơ ron tích chập (CNN hay ConvNet) (29)
        • 2.2.2.1. Lớp tích chập (Convolutional layer) (29)
        • 2.2.2.2. Đường viền phụ (Padding) (30)
        • 2.2.2.3. Nhân chập sải (strided convolutions) (32)
      • 2.2.3. Phép chập khối (33)
        • 2.2.3.1. Phép chập khối với một bộ lọc (33)
        • 2.2.3.2. Phép chập khối với nhiều bộ lọc (34)
      • 2.2.4. Mạng CNN một lớp (35)
      • 2.2.5. Mạng CNN đơn giản (35)
      • 2.2.6. Lớp Pooling (36)
        • 2.2.6.1. Pooling theo giá trị cực đại (Max Pooling) (36)
        • 2.2.6.2. Pooling theo giá trị trung bình (Average Pooling) (37)
      • 2.2.7. Ví dụ một CNN nhận diện ra lane đường (37)
      • 2.2.8. Ưu điểm của CNN (39)
  • Chương 3. SƠ LƯỢC PHẦN CỨNG VÀ PHẦN MỀM (40)
    • 3.1. Sơ lược về phần cứng (40)
      • 3.1.1. Xây dựng cấu hình máy tính phục vụ đồ án (40)
      • 3.1.2. Lựa chọn camera (40)
    • 3.2. Sơ lược về phần mềm (41)
      • 3.2.1. Hệ điều hành Ubuntu (41)
      • 3.2.2. Python (42)
      • 3.2.3. Anaconda (43)
      • 3.2.4. Cuda (43)
      • 3.2.5. CuDNN (44)
      • 3.2.6. Tensorflow (44)
      • 3.2.7. Một số thư viện sử dụng trong đồ án (49)
  • Chương 4. CHƯƠNG TRÌNH ĐIỀU KHIỂN NHẬN DIỆN LÀN ĐƯỜNG (51)
    • 4.1. Sơ đồ tổng thể của hệ thống (51)
    • 4.2. Lựa chọn thuật toán học sâu cho việc nhận diện lane (51)
    • 4.3. Áp dụng thuật toán lanenet lane detection (54)
      • 4.3.1. Giới thiệu sơ lược về LaneNET (54)
      • 4.3.2. Áp dụng thuật toán (56)
    • 4.4. Nhận diện làn đường bằng giải thuật K – means Clustering (57)
      • 4.4.1. Lấy dữ liệu cho K - means từ Hough Transform (57)
      • 4.4.2. Ứng dụng Hough Transform trong OpenCV (59)
      • 4.4.3. Áp dụng giải thuật K – means Clustering (60)
        • 4.4.3.1. Giới thiệu về phân cụm dữ liệu bằng K – means (60)
        • 4.4.3.2. Giải thuật K – means (61)
        • 4.4.3.3. Các bước để ứng dụng K-means nhận diện lane (63)
    • 4.5. Theo dõi làn đường (tracking) bằng cách sử dụng Kalman filter (70)
      • 4.5.1. Giới thiệu Kalman filter (70)
      • 4.5.2. Các phương trình của Kalman filter (71)
      • 4.5.3. Ứng dụng Kalman fileter để tracking (73)
  • Chương 5. THỰC NGHIỆM VÀ KẾT QUẢ THỰC NGHIỆM (77)
    • 5.1. Chuẩn bị (77)
    • 5.2. Địa điểm thực nghiệm (77)
    • 5.3. Kết quả thực nghiệm (78)
  • Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (83)
    • 6.1. Kết luận (83)
    • 6.2. Hướng phát triển (83)
  • PHỤ LỤC (86)

Nội dung

(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái(Đồ án tốt nghiệp) Ứng dụng tri tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái

TỔNG QUAN

Lý do chọn đề tài

Trong thời đại cách mạng công nghiệp 4.0, nền công nghiệp ô tô đang chuyển từ khuynh hướng thuần cơ khí sang sự kết hợp ngày càng chặt chẽ với điện, điện tử và khoa học máy tính, đưa AI trở thành yếu tố cốt lõi AI, hay trí tuệ nhân tạo, đã trở nên quen thuộc và hiện diện quanh ta hàng ngày thông qua các trợ lý ảo như Siri và Google Assistant, đồng thời được ứng dụng rộng rãi từ mô hình nhà thông minh đến trò chơi điện tử, y tế và quân sự Đối với sinh viên ô tô, xe tự lái là một khía cạnh nổi bật cho thấy tầm quan trọng của công nghệ số và trí tuệ nhân tạo trong tương lai của ngành công nghiệp ô tô.

Nhắc đến xe tự lái, năm 2016 Otto, công ty sau này thuộc Uber, đã thành công vận chuyển 50.000 lon bia Budweiser bằng xe tải tự lái Về mặt kinh tế, việc ứng dụng AI vào vận tải đường dài có thể giảm chi phí và hạn chế tối đa các tai nạn chết người Gartner, hãng nghiên cứu và tư vấn công nghệ hàng đầu thế giới, dự đoán đến năm 2020 sẽ có khoảng 250 triệu chiếc xe được kết nối với nhau qua Wi-Fi trên toàn cầu, chúng sẽ tự giao tiếp để tìm ra lộ trình tối ưu.

Hiện nay, trí tuệ nhân tạo (AI) đang được ứng dụng rộng rãi trong ngành học nói chung và công nghệ xe tự lái nói riêng trên toàn cầu, mở ra nhiều cơ hội và thách thức cho sinh viên ngành Ô tô Nhóm quyết định chọn đề tài "Ứng dụng trí tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái" nhằm tham khảo và hiểu sâu hơn về lĩnh vực này Thông qua đề tài, chúng tôi mong mang tới một cái nhìn tổng quan về cách AI được ứng dụng trong ngành ô tô và tích lũy kiến thức thiết yếu để chuẩn bị cho hành trang hội nhập với nền công nghiệp ô tô thế giới Đề tài cũng nhấn mạnh tầm quan trọng của hệ thống nhận diện và theo dõi làn đường trong xe tự lái, đồng thời giúp sinh viên Ô tô nâng cao năng lực nghiên cứu và ứng dụng AI, từ đó hỗ trợ sự phát triển bền vững của công nghệ xe tự lái.

Mục tiêu nghiên cứu

- Ứng dụng trí tuệ nhân tạo trong việc nhận diện làn đường

- Nâng cao độ chính xác và hiển thị trong việc phát hiện làn đường

- Theo dõi làn đường khắc phục những tình trạng mất làn tạm thời do ngoại cảnh khi chạy trên đường.

Nội dung nghiên cứu

- Nghiên cứu các kiến thức liên quan đến xử lý ảnh và các phần mềm hỗ trợ xử lý ảnh: Ubuntu, Python, OpenCV, Numpy,…

- Nghiên cứu về nền tảng, phương thức hoạt động của các hệ thống sử dụng trí tuệ nhân tạo

- Nghiên cứu về phương pháp nhận diện làn đường sử dụng mạng học sâu (deep learning framework) Cụ thể là mạng nơ-ron tích chập (Convolutional Neural Network (CNN))

- Sử dụng mạng đã được đào tạo sẵn để nhận diện làn đường

- Sử dụng các thuật toán để nâng cao nhận diện làn đường làn bằng các thuật toán như Hough Transform, K-means, Kalman filter,…

- Sử dụng Kalman filter để theo dõi làn đường

- Hiển thị nội dung nhận diện lên màn hình bằng hình ảnh lấy trực tiếp từ webcam.

Giới hạn đề tài

Trong đề tài này, nhóm sử dụng một mạng học sâu đã được huấn luyện sẵn làm bộ nhận diện thô và đề xuất các phương pháp xử lý hậu kỳ nhằm nâng cao hiệu quả bắt và theo dõi làn đường ở nhiều thời gian và không gian khác nhau Nhóm không huấn luyện lại mạng do hạn chế về dữ liệu và phần cứng Kế hoạch tập trung vào cải thiện kết quả bằng các kỹ thuật hậu kỳ, thay vì tinh chỉnh lại mạng, để duy trì hiệu suất với nguồn lực hạn chế.

Hiện tại hệ thống vẫn chưa thể vận hành ở chế độ thời gian thực do bộ xử lý trung tâm chưa đủ mạnh để đáp ứng toàn bộ các bước xử lý hình ảnh và mạng học sâu Điều này gây ra độ trễ đáng kể trong chuỗi xử lý dữ liệu và làm giảm hiệu suất cũng như trải nghiệm người dùng Để khắc phục, cần nâng cấp phần cứng (CPU/GPU) hoặc tối ưu hóa các thuật toán xử lý hình ảnh cùng với các mô hình học sâu, từ đó đạt được xử lý thời gian thực và nâng cao độ chính xác nhận diện.

Phạm vi ứng dụng

Đồ án này trình bày cái nhìn tổng quan về ứng dụng công nghệ AI trong ngành công nghệ ô tô, tập trung vào nhận diện và theo dõi làn đường Kết quả cho thấy AI có thể được triển khai để cảnh báo người lái khi xe lệch khỏi làn đường và hỗ trợ xe tự hành vận hành trên đúng làn của mình Hệ thống nhận diện làn đường dựa trên AI xử lý hình ảnh từ camera và cảm biến để xác định biên đường, điều kiện làn và các yếu tố môi trường, từ đó nâng cao an toàn giao thông và tăng tính ổn định cho xe khi di chuyển Việc thử nghiệm ở nhiều điều kiện địa hình và thời tiết cho thấy tiềm năng mở rộng sang các tình huống phức tạp và gợi ý tích hợp với các hệ thống hỗ trợ người lái (ADAS) và xe tự động để tối ưu hóa việc đi đúng làn đường.

CƠ SỞ LÝ THUYẾT

Cơ sở lý thuyết về ảnh và xử lý ảnh

2.1.1 Cơ sở lý thuyết về ảnh

Ảnh gốc (ảnh tự nhiên) là hình ảnh liên tục về không gian và độ sáng, nhưng để xử lý bằng máy tính cần được số hoá Số hoá ảnh là quá trình biến đổi gần đúng một ảnh liên tục thành tập điểm (pixel) phù hợp về vị trí không gian và mức xám hoặc màu sắc Khoảng cách giữa các điểm ảnh được thiết lập để mắt người không phân biệt ranh giới giữa chúng, giúp người xem cảm nhận sự liên tục về không gian và mức xám của ảnh số Mỗi điểm ảnh, hay Pixel (PEL), là một phần tử ảnh tại tọa độ (x, y) trên ảnh hai chiều và mang giá trị xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh được tối ưu để mắt người nhận diện sự liên tục của ảnh số như ảnh thật, và mỗi phần tử trong ma trận ảnh chính là một phần tử ảnh.

2.1.1.2 Độ phân giải của ảnh Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị

Trong đồ họa số, khoảng cách giữa các điểm ảnh được xác định sao cho mắt người vẫn nhận thấy sự liên tục của hình ảnh Việc chọn đúng mức khoảng cách này tạo ra mật độ phân bố điểm ảnh, tức là độ phân giải, được phân bổ theo hai trục x và y trong không gian hai chiều, từ đó tối ưu hóa chất lượng hình ảnh và trải nghiệm người xem.

Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) được mô tả dưới dạng lưới điểm theo chiều ngang: 320 điểm theo chiều ngang x 200 điểm theo chiều dọc (320×200) Rõ ràng, cùng một mật độ điểm ảnh nhưng trên màn hình CGA 12 inch ta thấy ảnh mịn hơn so với màn hình CGA 17 inch, do diện tích màn hình rộng hơn khiến độ mịn (liên tục của các điểm) kém đi Các độ phân giải thường dùng được thể hiện qua hình 2.2.

Hình 2.2 Các độ phân giải của ảnh

Một điểm ảnh (pixel) là đơn vị cơ bản của hình ảnh, có hai đặc trưng chính: vị trí (x, y) trên khung hình và mức độ xám đại diện cho giá trị cường độ ánh sáng tại điểm đó Trong xử lý ảnh, ta sẽ tiếp cận các khái niệm và thuật ngữ phổ biến như độ xám, biên cạnh, nhiễu và các biến đổi ảnh để mô tả và xử lý hình ảnh một cách có hệ thống.

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

Trong ảnh xám (grayscale), các mức xám thông thường là 16, 32, 64, 128 và 256; mức xám 256 là phổ biến nhất do máy tính biểu diễn mức xám bằng 1 byte (8 bit), cho phép 2^8 mức xám, tức từ 0 đến 255.

2.1.1.3.3 Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám ở các điểm ảnh có thể khác nhau

Ảnh nhị phân là loại ảnh chỉ có hai mức đen trắng, được mô tả bằng 1 bit cho mỗi điểm ảnh Nói cách khác, mỗi điểm ảnh trong ảnh nhị phân chỉ có thể là 0 hoặc 1, tương ứng với hai mức đen và trắng.

Ảnh màu dựa trên lý thuyết màu RGB (Red, Green, Blue) và để tạo nên thế giới màu, người ta dùng 3 byte để mô tả mức màu cho mỗi kênh; mỗi kênh có 256 mức màu (8 bit), nên tổng số màu hiển thị là 256 × 256 × 256 = 16,777,216 màu, tức khoảng 16,7 triệu màu.

Việc chuẩn hóa màu được thực hiện bởi Tổ chức quốc tế về chuẩn hóa màu CIE (Commission Internationale d’Eclairage), đưa ra các hệ biểu diễn màu riêng biệt Hệ CIE-RGB sử dụng ba màu cơ bản R, G và B và được ký hiệu RGBCIE để phân biệt với các chuẩn khác Màu sắc là kết quả của sự pha trộn các màu cơ bản theo tỷ lệ nhất định, do đó mỗi pixel màu Px được biểu diễn như một tổ hợp các màu cơ bản với các hệ số tỷ lệ, và trong công thức dưới đây ký hiệu T biểu thị chuyển vị (hoán vị).

P x = [red,green,blue] T [2.1] Người ta dùng hệ tọa độ ba màu R-G-B (tương ứng với hệ tọa độ x-y-z) để biểu diễn màu như sau:

Hình 2.3 Hệ tọa độ RGB

Trong cách biểu diễn này ta có công thức: đỏ + lục + lơ = 1 [2.2]

Đây là công thức Maxwell Trong hình minh họa, tam giác được tạo bởi ba đường thẳng đứt chính là tam giác Maxwell Màu trắng trong hệ tọa độ CIE được tính bằng công thức trắng CIE = đỏ CIE + lục CIE + lam CIE = 1 [2.3].

Không gian màu HSV, như hình 2.4, là một trong những không gian màu được dùng phổ biến trong chỉnh sửa ảnh, phân tích ảnh và một phần của lĩnh vực thị giác máy tính Hệ không gian này mô tả màu sắc dựa trên ba tham số chính: Hue (màu sắc), Saturation (độ bão hòa) và Value hay Brightness (giá trị sáng) Nhờ cách phân tách này, HSV giúp người dùng và các thuật toán điều chỉnh màu sắc dễ dàng hơn và ổn định hơn trước các biến đổi ánh sáng, đồng thời hỗ trợ tốt cho các ứng dụng như cân chỉnh màu, phân vùng ảnh và nhận diện đối tượng trong xử lý ảnh.

- H viết tắt của từ H E có nghĩa là vùng màu

- S Viết tắt của từ SATURATION có nghĩa là độ bảo hòa màu

- V viết tắt của chữ VAL E có nghĩ là giá trị hay độ sáng của màu sắc

Hình 2.4 Không gian màu HSV và vòng tròn biểu diễn màu sắc (HUE)

Vòng tròn Hue biểu diễn trường màu sắc từ 0 đến 360 độ, trong đó 0 độ đại diện cho màu đỏ (red primary); từ 0 đến 120 độ là sự chuyển từ đỏ sang xanh lá cây (green primary); 120 đến 240 độ là khoảng giữa xanh lá cây và xanh lam (blue primary); và từ 240 đến 360 độ diễn ra từ màu đen quay về màu đỏ, khép vòng tròn màu sắc.

Trong cách biểu diễn không gian màu theo hình trụ, giá trị độ sáng V được biểu diễn bằng cách di chuyển từ đáy lên đỉnh của hình trụ và V nằm trong khoảng từ 0 đến 1 Ở đáy hình trụ, V bằng 0 biểu thị độ tối nhất, còn ở đỉnh hình trụ V bằng 1 biểu thị độ sáng lớn nhất Việc sắp xếp theo chiều thẳng đứng này cho phép mô tả sự biến thiên của độ sáng và màu sắc một cách liên tục và trực quan.

= 1) Đi từ tâm hình trụ ra mặt trụ là giá trị bão hòa của màu sắc (S) S có giá trị từ 0 - 1

0 ứng với tâm hình trụ là chỗ mà màu sắc là nhạt nhất S = 1 ở ngoài mặt trụ, là nơi mà giá trị màu sắc là đậm đặc nhất

Trong hệ HSV, mỗi tổ hợp giá trị H, S và V cho ta một màu sắc cụ thể, đồng thời mô tả đầy đủ ba thành phần: hue (màu sắc hoặc gam màu), saturation (độ đậm đặc) và value (độ sáng) của màu đó.

CMYK là không gian màu phổ biến trong ngành in ấn, dựa trên nguyên lý dùng bốn màu cơ bản để pha trộn mực in Trong thực tế, ba màu chủ đạo là C (Cyan) xanh lơ, M (Magenta) hồng đậm và Y (Yellow) vàng được dùng để biểu diễn hầu hết các sắc thái; sự kết hợp Magenta với Yellow tạo ra màu đỏ, Cyan với Magenta cho ra xanh lam và Cyan với Yellow cho ra xanh lá Khi pha trộn cả ba màu này, ta có thể tạo ra màu đen, tuy nhiên màu đen thu được không sâu và thường thiếu tính ổn định nếu chỉ dựa vào ba màu mà không có mực đen riêng Vì vậy, để tiết kiệm mực và có màu đen thực sự, ngành in bổ sung mực đen (K) và tối ưu hóa quá trình pha trộn để đạt được chất lượng in mong muốn.

8 thêm vào màu đen để in những chi tiết có màu đen thay vì phải kết hợp 3 màu sắc trên

Và như vậy ta có hệ màu CMYK như hình 2.5, chữ K ở đây là để kí hiệu màu đen (Black)

Hình 2.5 Không gian màu CMYK

Nguyên lý làm việc của hệ màu CMYK là khi in lên nền giấy trắng, mỗi màu C, M, Y được in sẽ dần loại bỏ phần màu trắng và tạo nên sắc độ khác nhau Các tỷ lệ khác nhau của ba màu C, M, Y làm mất đi các thành phần màu tương ứng theo cách riêng để tạo ra màu in mong muốn Khi cần in màu đen, người ta dùng màu đen thay vì in cả ba màu; CMYK dựa trên sự loại bỏ lẫn nhau của các thành phần màu chứ không phải ghép màu từ RGB Điều này khác với hệ RGB, vốn là sự kết hợp của các thành phần màu.

2.1.1.5 Định nghĩa ảnh số Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật

Mạng nơron tích chập – Convolutional Neural Network (CNN)

2.2.1 Thị giác máy tính (Computer vision)

Nhìn vào một bức ảnh, một người có thị giác bình thường có thể dễ dàng mô tả nội dung, nhận biết và phát hiện các đối tượng cũng như xác định vị trí của chúng một cách chính xác Tuy nhiên, việc đọc và hiểu một bức ảnh lại khó khăn hơn nhiều đối với máy tính, khi “nhìn” mỗi bức ảnh chỉ là một ma trận số gồm các điểm ảnh (pixel) được biểu diễn dưới dạng số theo một hệ màu nhất định, thường là RGB (Red, Green và Blue) Để máy tính có thể phân tích và nhận diện chính xác, hệ thống thị giác máy tính cần ứng dụng các kỹ thuật xử lý ảnh và học sâu nhằm trích xuất đặc trưng, nhận diện đối tượng và định vị chúng trong không gian, từ đó chuyển đổi dữ liệu số thô thành thông tin có ý nghĩa cho người dùng và các ứng dụng như nhận diện và phân loại ảnh.

Thị giác máy tính, một nhánh của trí tuệ nhân tạo, nhằm liên kết ma trận số từ hình ảnh với thông tin ngữ nghĩa chứa trong đó để hiểu và phân tích nội dung hình ảnh Mục tiêu này được thực hiện bằng cách giải quyết các bài toán như nhận diện và phân loại đối tượng, phân đoạn và gắn nhãn vùng ảnh, nhận diện khuôn mặt và chữ viết (OCR), theo dõi đối tượng theo thời gian và mô tả nội dung hình ảnh để rút ra ý nghĩa Các kỹ thuật chủ đạo bao gồm học máy và học sâu, nhằm biến dữ liệu hình ảnh thành kiến thức có thể ứng dụng trong các hệ thống tự động và các ứng dụng thực tiễn.

- Phân loại ảnh, miêu tả ảnh,

- Phát hiện vật thể trong ảnh: Xe, con người, đèn giao thông, lan đường,…

- Tạo ảnh với những phong cách khác nhau: Hiển thị nội dung ngữ nghĩa của ảnh gốc theo những phong cách khác nhau

Mạng nơ-ron truyền thống hoạt động không thực sự hiệu quả với dữ liệu hình ảnh Nếu coi mỗi điểm ảnh là một thuộc tính, một ảnh RGB kích thước 64×64 có 12.288 thuộc tính Khi kích thước ảnh tăng lên đến 1000×10000, con số này tăng lên 3 triệu thuộc tính cho mỗi ảnh Sử dụng một mạng liên kết đầy đủ (fully connected NN) với lớp ẩn thứ hai có k neuron sẽ khiến ma trận trọng số có kích thước từ 3 triệu × k, ví dụ với k = 1.000 sẽ có 3 tỷ trọng số cần huấn luyện Điều này đòi hỏi khối lượng tính toán cực lớn và thường dẫn đến overfitting do dữ liệu huấn luyện không đủ đáp ứng cho số tham số quá lớn.

2.2.2 Mạng nơ ron tích chập (CNN hay ConvNet)

CNN là mạng nơ-ron phổ biến nhất được dùng cho dữ liệu ảnh Bên cạnh các lớp liên kết đầy đủ (FC layers), CNN còn tích hợp một số lớp ẩn đặc biệt giúp phát hiện và trích xuất những đặc trưng (patterns) xuất hiện trong ảnh, được gọi là lớp tích chập (Convolutional Layers) Chính những lớp tích chập này làm CNN trở nên khác biệt so với các mô hình truyền thống và hoạt động cực kỳ hiệu quả trong bài toán phân tích ảnh.

2.2.2.1 Lớp tích chập (Convolutional layer)

 Lớp tích chập dùng để phát hiện và trích xuất những đặc trưng chi tiết ảnh

Giống như các lớp ẩn khác, lớp tích chập nhận dữ liệu đầu vào và thực hiện các biến đổi bằng phép tích chập để tạo ra dữ liệu đầu ra làm đầu vào cho lớp kế tiếp Phép biến đổi được sử dụng là tích chập Mỗi lớp tích chập chứa một hoặc nhiều bộ lọc, hay bộ phát hiện đặc trưng (filter – feature detector), cho phép phát hiện và trích xuất các đặc trưng khác nhau của ảnh.

Trong mạng CNN, bộ lọc ở lớp tích chập càng sâu thì khả năng phát hiện các đặc trưng càng phức tạp; độ phức tạp của đặc trưng được xác định bởi độ sâu của lớp tích chập mà nó thuộc về Những lớp tích chập ở giai đoạn đầu dùng các bộ lọc hình học để phát hiện các đặc trưng cơ bản như cạnh ngang, cạnh dọc và cạnh chéo của ảnh; các lớp ở tầng giữa và sâu hơn sẽ nhận diện các đối tượng ở quy mô nhỏ hoặc chi tiết bán hoàn chỉnh như mắt, mũi, tóc, trong khi các lớp tích chập sâu nhất có thể nhận diện các đối tượng toàn diện như chó, mèo, chim, ô tô, đèn giao thông, làn đường Để hiểu cách hoạt động của lớp tích chập và phép toán tích chập, ta có thể tham khảo một ví dụ về bộ lọc phát hiện cạnh: đầu vào là ảnh grayscale được biểu diễn dưới dạng ma trận kích thước h×w; giả sử lớp tích chập đầu tiên dùng 4 bộ lọc kích thước 3×3, ký hiệu F1, F2, F3, F4 với các giá trị tại mỗi ô được biểu diễn bằng màu đen (-1), xám (0) và trắng (1) như minh họa.

Hình 2.11 Bộ lọc được sử dụng trong lớp tích chập đ u tiên là các ma trận ích thước

Hình 2.12 Nhân bộ lọc k với ma trận đ u vào I

Trong bài toán xử lý ảnh, ma trận đầu vào có kích thước 7x7 được xử lý bởi một kernel (bộ lọc) có kích thước 3x3 Đầu ra là một ma trận kích thước 5x5 sinh ra từ phép tích chập giữa ma trận I và kernel K Quá trình này cho phép kết hợp thông tin từ mỗi khu vực 3x3 của đầu vào để tạo ra bản đồ đặc trưng 5x5, phục vụ cho các bước xử lý ảnh tiếp theo. -**Support Pollinations.AI:**🌸 **Quảng cáo** 🌸 Nâng cao xử lý ảnh với thuật toán kernel 3x3 và ma trận đầu vào 7x7; [ủng hộ sứ mệnh của chúng tôi](https://pollinations.ai/redirect/kofi) để AI luôn miễn phí cho mọi người.

Lấy ví dụ với ma trận đầu vào kích thước 6×6 Khi thực hiện phép chập với bộ lọc kích thước 3×3 mà không dùng padding, kết quả thu được là ma trận đầu ra kích thước 4×4, vì chỉ có 4×4 vị trí trên ma trận đầu vào để đặt bộ lọc và tính tích lũy.

Trong xử lý ảnh, khi nhân chập ma trận đầu vào kích thước n×n với một bộ lọc kích thước f×f, kết quả thu được là một ma trận kích thước (n−f+1)×(n−f+1) Mỗi lần chập làm giảm kích thước ảnh, nên ta chỉ có thể thực hiện nó vài lần trước khi ảnh trở nên quá nhỏ Điểm ảnh ở vùng giữa ma trận đầu vào được bao phủ bởi nhiều vùng 3×3, từ đó được dùng để tính nhiều giá trị đầu ra, trong khi những điểm ảnh ở góc hoặc cạnh chỉ được bao phủ bởi 1 hoặc 2 vùng 3×3, dẫn tới mất thông tin ở biên và làm suy giảm chi tiết gần biên.

Để khắc phục hai nhược điểm, một đường viền padding (đệm) có giá trị 0 với kích thước p được thêm quanh ma trận đầu vào Việc đệm thêm làm tăng kích thước của ma trận đầu vào và theo đó tăng kích thước của ma trận đầu ra, từ đó giảm sai lệch giữa ma trận đầu ra và ma trận đầu vào ban đầu Các ô ở các cạnh và góc của ma trận đầu vào bị đẩy sâu vào bên trong hơn, giúp chúng được dùng nhiều hơn trong quá trình tính toán ma trận đầu ra và giảm thiểu mất thông tin.

Trong hình trình bày, ma trận đầu vào kích thước 6×6 được đệm biên với p=1, tạo thành ma trận 8×8 trước khi thực hiện tích chập Khi nhân chập ma trận này với bộ lọc 3×3, ta thu được ma trận đầu ra có kích thước 6×6, trong khi kích thước của ma trận đầu vào gốc được duy trì nhờ việc đệm biên Các điểm ảnh ở biên của ma trận gốc được tham gia vào nhiều lần hơn trong quá trình tích chập, với các điểm ảnh ở góc được sử dụng lên tới 4 lần.

Theo quy ước, các ô trên đường viền phụ được gán giá trị bằng không (zero-padding), với p là kích thước của đường viền phụ Đệm biên thường được mở rộng đồng đều theo chiều trái-phải và trên-dưới so với ma trận gốc, khiến kích thước ma trận đầu vào tăng lên 2p ở mỗi chiều Do đó, kích thước của ma trận đầu ra sau khi xử lý là (n + 2p − f + 1) × (n + 2p − f + 1), với f là kích thước của kernel hoặc cửa sổ xử lý.

Tuỳ theo giá trị của p, chúng ta có hai trường hợp chính:

- Nhân chập không dùng đường viền phụ (valid convolution) - NO padding: (n×n)∗(f×f)=>(n−f+1)×(n−f+1)

- Nhân chập không làm thay đổi kích thước đầu vào (same convolution): Kích thước đường viền phụ được tính theo công thức: n+2p−f+1=n=>p=(f−1)/2

Theo quy ước, kích thước bộ lọc f là số lẽ vì 2 lý do chính sau:

Khi f là số chẵn, ta phải thêm vào bên trái của ma trận đầu vào nhiều hơn bên phải (hoặc ngược lại) Điều này khiến hệ đầu vào trở nên không đối xứng (asymmetric), ảnh hưởng đến tính chất và cách phân tích của hệ trong các bài toán liên quan đến ma trận.

Trong thị giác máy tính, nếu kích thước của ma trận đầu vào là số lẻ, ma trận sẽ có một điểm ảnh ở tâm Việc có một nhân tố khác biệt (distinguisher)—một điểm đại diện cho vị trí của bộ lọc—thường mang lại hiệu suất cao cho bài toán nhận diện và tối ưu hóa các thuật toán xử lý ảnh.

2.2.2.3 Nhân chập sải (strided convolutions)

Trong phép nhân chập (convolution), bộ lọc (kernel) di chuyển trên ma trận đầu vào theo từng bước di chuyển Giá trị của bước di chuyển được ký hiệu là s và cho biết bộ lọc có thể trượt qua 1 hàng/1 cột hoặc nhiều hàng và cột hơn ở mỗi lần quét Tại mỗi vị trí, bộ lọc tác động lên cửa sổ con có kích thước bằng kích thước kernel để tạo ra một phần tử của ma trận đầu ra Kích thước ma trận đầu ra phụ thuộc vào kích thước ma trận đầu vào, kích thước kernel và giá trị stride s (cộng thêm padding nếu có) Cụ thể, số hàng của ma trận đầu ra được tính bằng ⌊(H_in - H_k)/s⌋ + 1 và số cột được tính bằng ⌊(W_in - W_k)/s⌋ + 1.

( +1, +1) Nếu không chia hết cho s, chúng ta lấy chặn dưới như trong hình minh hoạ dưới đây

Hình 2.14 Nhân chập với bước sải s=2

2.2.3.1 Phép chập khối với một bộ lọc

SƠ LƯỢC PHẦN CỨNG VÀ PHẦN MỀM

Sơ lược về phần cứng

3.1.1 Xây dựng cấu hình máy tính phục vụ đồ án

Hình 3.1 Cấu hình máy tính

Cấu hình máy tính được dùng cho đề tài, thể hiện trong hình 3.1, nổi bật với bộ xử lý i7-4790 tám nhân ở xung nhịp 4.0 GHz và card đồ họa Nvidia GTX 970 với 1664 lõi CUDA, rất cần thiết cho nhận diện làn đường theo thời gian thực Điểm mạnh của cấu hình này là khả năng tính toán cao và sự hỗ trợ của CUDA để tăng tốc xử lý dữ liệu phức tạp Tuy nhiên, cộng đồng DeepLearning không ưa chuộng GTX 970 do sự bất tương thích của trình điều khiển với các nền tảng DeepLearning hiện tại, dẫn đến khó khăn khi thiết lập môi trường lập trình cho đồ án Do đó chúng em gặp không ít thách thức trong việc cấu hình môi trường phát triển, và cần xem xét các giải pháp thay thế hoặc điều chỉnh để đảm bảo tính ổn định và hiệu suất cho dự án.

Camera sử dụng trong đồ án này là GoPro Hero 5 Black như hình 3.2

Camera với các tính năng nổi trội như:

- Người dùng có thể lựa chọn độ phân giải mong muốn để phù hợp với mục đích của mình

- Chống thâm nước với độ sâu lên đến 10m

- Giám sát và có thể điều khiển từ xa thông qua kết nối wifi

Chế độ WDR giúp thu hẹp khoảng cách chất lượng giữa ảnh JPEG và RAW, tối ưu hóa độ sáng và chi tiết để mỗi bức hình đều sắc nét Trong các cảnh có bóng tối và ánh sáng quá nổi bật, WDR cân bằng độ sáng và độ tương phản, giữ lại nét và chi tiết ở cả vùng tối lẫn vùng sáng, cho ảnh chất lượng cao ngay cả khi điều kiện ánh sáng phức tạp.

Sơ lược về phần mềm

Ubuntu là hệ điều hành máy tính dựa trên Debian GNU/Linux, một bản phân phối Linux phổ biến Mục tiêu của Ubuntu là cung cấp một hệ điều hành ổn định và được cập nhật cho người dùng thường, tập trung vào tính tiện dụng và dễ dàng cài đặt Ubuntu được coi là bản phân phối Linux thông dụng nhất cho máy tính để bàn và chiếm khoảng 30% số bản Linux được cài đặt trên máy tính để bàn năm 2007.

Ubuntu là phần mềm mã nguồn mở tự do, người dùng được tự do chạy, sao chép,

31 phân phối, nghiên cứu, thay đổi và cải tiến phần mềm theo điều khoản của giấy phép

GN GPL buntu được cung cấp hoàn toàn miễn phí và được tài trợ bởi Canonical Ltd (chủ sở hữu là một người Nam Phi Mark Shuttleworth) [15]

Hình 3.3 Biểu tượng và giao diện hệ điều hành Ubuntu

Python là ngôn ngữ lập trình thông dịch, hướng đối tượng và bậc cao với ngữ nghĩa động, được thiết kế để dễ đọc và dễ viết Nó hỗ trợ mạnh mẽ các module và packages, khuyến khích lập trình module hóa và tái sử dụng mã Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do, giúp phát triển đa nền tảng dễ dàng.

Python dễ dàng kết nối với các thành phần khác: có thể kết nối với đối tượng COM, NET (IronPython, Python for NET), CORBA và Java; đồng thời được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác Có thể viết thư viện bằng C/C++ để nhúng vào Python và ngược lại, giúp tích hợp Python vào các hệ thống hiện có một cách linh hoạt và hiệu quả.

Python là ngôn ngữ lập trình đa nền tảng, được hỗ trợ trên nhiều hệ điều hành như Windows, Linux/Unix, OS/2, macOS, Amiga và nhiều nền tảng khác Nó cho phép chạy cùng một mã nguồn trên các nền tảng khác nhau và có thể tích hợp trên NET (qua IronPython), trên máy ảo Java (qua Jython) và trên điện thoại di động Nokia Series 60 Với cùng một mã nguồn, Python sẽ chạy giống nhau trên mọi nền tảng.

Python là ngôn ngữ lập trình mã nguồn mở có cộng đồng người dùng rất lớn và hệ thống thư viện chuẩn phong phú, cùng với vô số thư viện mã nguồn mở được chia sẻ rộng rãi trên mạng Nhờ tính mở của Python, người dùng có thể dễ dàng tải về và cài đặt Python để tận dụng kho thư viện đa dạng phục vụ phát triển ứng dụng một cách linh hoạt và hiệu quả.

Giấy phép nguồn mở cho phần mềm cho phép sử dụng và phân phối tự do, kể cả trong mục đích thương mại, mang lại sự linh hoạt cho người dùng và nhà phát triển Bạn có thể sao chép, sửa đổi và phân phối lại mã nguồn tùy theo điều khoản của từng giấy phép, miễn là tuân thủ các điều kiện tương ứng Ví dụ, giấy phép Python là một giấy phép nguồn mở được quản lý bởi Python Software Foundation, giúp đảm bảo quá trình sử dụng và đóng góp cho dự án Python diễn ra minh bạch và dễ tiếp cận.

Python được cài đặt sẵn trên abuntu 16.04 [16]

Anaconda là nền tảng mã nguồn mở phổ biến nhất cho khoa học dữ liệu với Python Với trên 11 triệu người dùng, Anaconda là cách nhanh nhất và dễ nhất để học khoa học dữ liệu, quản lý nguồn mở, quản lý môi trường và phân phối các công cụ và ngôn ngữ lập trình liên quan đến Python và R trên Windows, Linux và macOS Lợi ích của Anaconda bao gồm tích hợp sẵn các công cụ phân tích dữ liệu, quản lý gói và môi trường, cũng như hỗ trợ đa nền tảng để triển khai mô hình dữ liệu một cách hiệu quả.

- Dễ dàng tải 1500+ packages về Python/R cho data science

- Quản lý thư viện, môi trường và dependency giữa các thư viện dễ dàng

- Dễ dàng phát triển mô hình machine learning và deep learning với scikit-learn, tensorflow, keras

- Xử lý dữ liệu tốc độ cao với numpy, pandas

- Hiển thị kết quả với Matplotlib, Bokeh [17]

CUDA (Compute Unified Device Architecture - Kiến trúc thiết bị tính toán hợp nhất) là một kiến trúc tính toán song song do NVIDIA phát triển Nói một cách ngắn gọn,

C DA là động cơ tính toán trong các GP (Graphics Processing nit - Đơn vị xử lý đồ họa) của NVIDIA, nhưng lập trình viên có thể sử dụng nó thông qua các ngôn ngữ lập trình phổ biến Lập trình viên dùng ngôn ngữ C for C DA, dùng trình biên dịch PathScale Open64 C, để cài đặt các thuật toán chạy trên GP Kiến trúc C DA hỗ trợ mọi chức năng tính toán thông qua ngôn ngữ C Các bên thứ ba cũng đã phát triển để hỗ trợ C DA trong Python, Fortran, Java và MATLAB

CUDA cho phép các nhà phát triển truy cập trực tiếp vào tập các chỉ lệnh ảo và bộ nhớ của các phần tử tính toán song song nằm bên trong đơn vị xử lý đồ họa (GPU) của nền tảng CUDA Nhờ đó, các nhà phát triển có thể tối ưu hóa hiệu suất và mở rộng khả năng lập trình cho các ứng dụng đồ họa và tính toán song song dựa trên GPU.

Việc sử dụng CUDA trên các GPU mới nhất do NVIDIA sản xuất cho phép thực hiện các tính toán phức tạp một cách tương đương với CPU Tuy nhiên, khác với CPU, GPU có kiến trúc song song toàn diện, tập trung vào khả năng xử lý nhiều luồng dữ liệu cùng lúc thay vì tối ưu cho một luồng dữ liệu duy nhất chạy thật nhanh Cách tiếp cận giải quyết các bài toán tổng quát trên GPU được gọi là GPGPU (General‑Purpose Computing on Graphics Processing Units), mở ra khả năng ứng dụng tính toán song song quy mô lớn trên nền tảng GPU.

Việc thiết lập môi trường CUDA nhằm kích hoạt xử lý ảnh bằng GPU, giúp quá trình xử lý hình ảnh diễn ra nhanh hơn rất nhiều so với xử lý bằng CPU Nhờ tận dụng tính toán song song và sức mạnh của card đồ họa, hiệu suất xử lý ảnh được tăng lên đáng kể, tạo nền tảng cho các ứng dụng thị giác máy tính có yêu cầu tốc độ cao [18].

CuDNN (NVIDIA CUDA Deep Neural Network library) là một thư viện tối ưu dành cho GPU, được thiết kế để tăng tốc tính toán cho các mạng nơ-ron sâu Nó cung cấp các tối ưu hóa cho các thao tác cơ bản như tích chập tiến và ngược, gộp lớp (fusion), chuẩn hóa và kích hoạt, giúp các lớp mạng nơ-ron hoạt động hiệu quả hơn trong quá trình huấn luyện và suy luận.

Các nhà nghiên cứu về deep learning và các nhà phát triển framework trên toàn thế giới thường dựa vào cuDNN để tăng tốc tính toán trên GPU và đạt hiệu suất cao cho các mô hình deep learning Điều này giúp họ tập trung vào đào tạo các mạng thần kinh và phát triển các ứng dụng phần mềm thay vì tốn thời gian tối ưu hóa hiệu suất cấp thấp cuDNN tăng tốc các framework deep learning được sử dụng rộng rãi như Caffe, Caffe2, Chainer, Keras, MATLAB, MXNet, TensorFlow và PyTorch Để tận dụng các framework được NVIDIA tối ưu hóa cho deep learning, cần tích hợp cuDNN vào các framework đó.

TensorFlow, còn được gọi là Google TensorFlow, là một thư viện phần mềm miễn phí tập trung vào học máy do Google tạo ra Ban đầu được công bố dưới giấy phép nguồn mở Apache 2.0 và được phát triển bởi các kỹ sư, nhà nghiên cứu của Google Brain Team chủ yếu để sử dụng nội bộ TensorFlow được xem là sự kế thừa của DistBelief, hệ thống học máy đóng trước đây của Google, và hiện nay được Google dùng cho cả nghiên cứu lẫn sản xuất Đây là dự án được triển khai nghiêm túc, tập trung vào deep learning.

CHƯƠNG TRÌNH ĐIỀU KHIỂN NHẬN DIỆN LÀN ĐƯỜNG

THỰC NGHIỆM VÀ KẾT QUẢ THỰC NGHIỆM

Ngày đăng: 28/12/2022, 12:21

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