TỔNG QUAN
Giới thiệu
Cuộc cách mạng 4.0 đang diễn ra mạnh mẽ với sự phát triển vượt bậc của khoa học công nghệ, trong đó tự động hóa hệ thống là lĩnh vực then chốt Mục tiêu của các hệ thống này là giảm thiểu công việc cho con người, giúp họ trở nên nhàn rỗi hơn Ngành công nghiệp ô tô không đứng ngoài xu thế này, đang đẩy mạnh nghiên cứu và phát triển xe tự hành cùng các hệ thống thông minh nhằm nâng cao sự an toàn và tiện lợi cho người lái Các hãng ô tô lớn trên thế giới đang tập trung vào việc tích hợp những công nghệ tiên tiến này vào sản phẩm của mình.
Hệ thống Cảnh báo chệch làn đường (Lane Departure Warning - LDW) sử dụng camera tích hợp trên xe để theo dõi các vạch kẻ làn đường khi xe di chuyển với tốc độ nhất định Khi xe rời khỏi làn mà không bật tín hiệu xi-nhan, hệ thống sẽ kích hoạt cảnh báo âm thanh, hình ảnh hoặc rung để cảnh báo người lái.
Hình 1.1: Hệ thống cảnh báo chệch làn đường LDW
Hệ thống kiểm soát hành trình chủ động (Adaptive Cruise Control - ACC) là công nghệ tiên tiến sử dụng radar hoặc camera để theo dõi và phát hiện các phương tiện phía trước Hệ thống này tự động điều chỉnh tốc độ xe nhằm đảm bảo khoảng cách an toàn, giúp người lái giảm bớt căng thẳng khi di chuyển trên đường.
Hệ thống kiểm soát hành trình thích ứng (ACC) cho phép người lái thiết lập tốc độ tối đa, và xe sẽ tự động duy trì tốc độ đó Tuy nhiên, ACC còn có khả năng giảm tốc độ tự động khi phát hiện phương tiện phía trước, mang lại sự an toàn và tiện lợi hơn so với hệ thống kiểm soát hành trình thông thường.
Hình 1.2: Hệ thống kiểm soát hành trình chủ động ACC
Cảnh báo va chạm trước (FCW) là tính năng hỗ trợ người lái cơ bản trên ôtô, giúp nhận diện và cảnh báo khi có nguy cơ va chạm xảy ra Hệ thống này chỉ cung cấp cảnh báo mà không can thiệp để giảm thiểu va chạm Phương thức cảnh báo khác nhau giữa các mẫu xe và hãng xe, nhưng thường sử dụng âm thanh, tín hiệu ánh sáng trên cụm đồng hồ, hiển thị qua màn hình HUD, hoặc thông qua rung ghế và vô-lăng.
Hình 1.3: Hệ thống cảnh báo va chạm trước FCW
Bắt kịp với xu thế, tháng 4 năm 2017, tại hội thảo “Tương lai công nghệ ô tô và robot trong cuộc cách mạng công nghiệp 4.0” ở nước ta, FPT Software cũng giới
3 thiệu mô hình thử nghiệm xe tự lái do công ty tự nghiên cứu phát triển từ tháng 8 năm
Vào năm 2016, các chuyên gia đã giới thiệu giải pháp công nghệ hỗ trợ lái xe nâng cao (ADAS - Advanced Driver Assistance Systems) bao gồm các tính năng như nhận diện làn đường, camera cảm biến 360 độ, phát hiện vật cản, tín hiệu đèn giao thông, biển báo giao thông và bảng giám sát điều khiển thân vỏ ô tô Đến tháng 10 năm 2017, chiếc ô tô tự lái đầu tiên do FPT phát triển đã được thử nghiệm với tốc độ vượt quá 20 km/h, có khả năng tự điều khiển, tránh xe ngược chiều, chướng ngại vật và thực hiện các cú đánh lái khi vào khúc cua.
Các thiết bị thông minh hiện nay chủ yếu được trang bị trên các phương tiện hạng sang, và nếu có thương mại thì giá thành rất cao Do đó, chúng tôi đã phát triển một mô hình hỗ trợ cảnh báo tai nạn cho ô tô, nhằm giúp người điều khiển giảm thiểu rủi ro khi tham gia giao thông Mô hình này sẽ giám sát làn đường và cảnh báo về vật cản phía trước thông qua một camera Tín hiệu cảnh báo có thể là thông báo âm thanh, đèn báo hiệu hoặc bộ báo rung Để đạt được điều này, việc xử lý hình ảnh từ camera để phát hiện làn đường và nhận diện chính xác đối tượng phía trước trong thời gian thực là rất cần thiết.
Các nghiên cứu gần đây cho thấy việc nhận dạng đối tượng chủ yếu tập trung vào độ chính xác và tốc độ xử lý nhanh thông qua việc áp dụng Deep Learning kết hợp với các thuật toán Một trong những phương pháp hiệu quả là rút trích đặc trưng Haar-like kết hợp với thuật toán AdaBoost của Viola-Jones, mang lại kết quả xuất sắc về nhận dạng và tốc độ xử lý Do đó, học viên đã chọn phương pháp này để nhận dạng xe ô tô trong mô hình, đồng thời kết hợp với việc phát hiện làn đường và dự báo khoảng cách từ hình ảnh camera đơn tới đối tượng.
4 dạng Các vấn đề này chính là một trong các bài toán của thiết bị thông minh cho xe ô tô hay xa hơn nữa là xe tự hành.
Mục tiêu của đề tài
Mô hình cảnh báo tai nạn ô tô được thiết kế nhằm phát hiện làn đường và giám sát các đối tượng cản trở, như ô tô có thể gây nguy hiểm trong quá trình tham gia giao thông Hệ thống sẽ cung cấp tín hiệu cảnh báo cho người điều khiển phương tiện thông qua các phương tiện như màn hình hiển thị, đèn báo, âm thanh hoặc rung.
Sau khi hoàn thành đề tài sẽ xây dựng được mô hình cảnh báo tai nạn cho ô tô và có thể áp dụng để thử nghiệm trên thực tế.
Phương pháp của đề tài
- Lập trình bằng Python kết hợp OpenCV trên Raspberry Pi + 01 Camera
Sử dụng thuật toán nhận dạng và xử lý ảnh, hệ thống có khả năng phát hiện xe ô tô tham gia giao thông và xác định làn đường Từ đó, nó sẽ cảnh báo người điều khiển phương tiện về thông tin liên quan đến làn đường và vị trí của xe phía trước, giúp nâng cao an toàn khi tham gia giao thông.
Phạm vi của đề tài
Đề tài thử nghiệm được thực hiện trên cao tốc chỉ phát hiện ôtô, chưa áp dụng cho đường quốc lộ, tỉnh lộ và các phương tiện giao thông khác như xe máy, người đi bộ Hạn chế về cơ sở dữ liệu và số lượng dữ liệu huấn luyện đã ảnh hưởng đến độ chính xác của hệ thống Việc sử dụng camera đơn để ước lượng khoảng cách đến đối tượng chỉ mang tính chất ước lượng, trong khi chất lượng camera chưa đạt yêu cầu dẫn đến sai sót trong nhận dạng.
Bố cục của đề tài
Đề tài có bố cục cụ thể như sau:
Chương 2: Lý thuyết để xây dựng mô hình cảnh báo tai nạn cho ôtô
Chương 3: Thực hiện và kết quả đạt được
Chương 4: Kết luận và hướng phát triển
LÝ THUYẾT XÂY DỰNG MÔ HÌNH HỆ THỐNG CẢNH BÁO TAI NẠN CHO ÔTÔ
Lý thuyết nhận dạng đối tượng
2.1.1 Phương pháp dựa trên màu sắc
Phương pháp xác định biển báo giao thông dựa vào việc nhận diện màu sắc đặc trưng, với năm màu chính là xanh, đỏ, vàng, trắng và đen Kỹ thuật này sử dụng các phương pháp phân ngưỡng đơn giản hoặc phân ngưỡng ảnh cao cấp để tìm kiếm vùng ảnh chứa màu sắc của biển báo.
Phương pháp này gặp khuyết điểm lớn do màu sắc thường không đáng tin cậy, phụ thuộc vào thời điểm trong ngày, điều kiện thời tiết và bóng râm Không gian màu RGB (Đỏ – Xanh lá – Xanh dương) rất nhạy cảm với ánh sáng, vì vậy nhiều nhà nghiên cứu đã chuyển sang sử dụng các không gian màu khác như HSV (Sắc thái – Độ bão hòa – Giá trị) và Lab (Độ sáng – kênh a chứa giá trị từ Xanh lá tới Đỏ – kênh b chứa giá trị từ Xanh dương tới Vàng) để phân ngưỡng màu sắc.
In the study "Color-Based Road Detection in Urban Traffic Scenes" by Y He, H Wang, and B Zhang, a color vision system is proposed for lane detection in traffic scenarios Additionally, Hsu-Yung Cheng's research titled "Lane Detection with Moving Vehicle in Traffic Scenes" employs color features to identify lane markings while utilizing size, shape, and motion to eliminate erroneous road areas.
2.1.2 Phương pháp dựa trên hình dạng
Nhiều nghiên cứu đã chỉ ra rằng việc phát hiện biển báo giao thông dựa trên hình dạng mang lại kết quả khả quan Phương pháp phổ biến nhất trong lĩnh vực này là phép biến đổi Hough, một kỹ thuật hiệu quả để xác định các hình dạng ngẫu nhiên.
Kỹ thuật sử dụng cạnh của ảnh để xác định tâm của đối tượng đã được phát triển trong lịch sử thị giác máy tính Mỗi điểm ảnh trên biên có khả năng trở thành tâm của đối tượng, và phương pháp này đã được mở rộng với nhiều biến thể khác nhau.
Nghiên cứu của Loy và Barnes được công nhận là một phương pháp hiệu quả trong việc nhận diện biển báo giao thông Họ đã đề xuất một bộ phát hiện đa giác đều tổng quát, chuyên dụng cho việc phát hiện biển báo giao thông, dựa trên phép biến đổi đối xứng xuyên tâm nhanh, tương tự như biến đổi Hough Tuy nhiên, nhược điểm lớn nhất của phương pháp này là cần biết trước bán kính của đa giác, điều này không dễ thực hiện Mặc dù có thể khắc phục bằng cách thử nghiệm với nhiều bán kính khác nhau, nhưng điều này sẽ tiêu tốn nhiều thời gian xử lý.
Nghiên cứu của Paulo và Correia [8] tập trung vào việc xác định hình dạng đặc trưng thông qua bộ phát hiện góc, giả định vị trí của đa giác đều dựa vào mối liên hệ giữa các góc Họ đã xác định biển báo tam giác và tứ giác bằng cách sử dụng bộ phát hiện góc Haaris để nhận diện vùng đặc trưng, sau đó tìm kiếm các góc còn lại trong sáu khu vực kiểm soát đã được định nghĩa trước Hình dạng được xác định dựa trên hình ảnh của vùng kiểm soát nơi các góc được phát hiện.
Gavrila [9] áp dụng biến đổi khoảng cách dựa trên mẫu phù hợp để xác định hình dạng Ý tưởng chính là tìm kiếm hình dạng đặc trưng bằng cách so sánh với một mẫu phù hợp, chẳng hạn như tam giác đều, thông qua ảnh DTs (Distance Transforms) Để xác định mẫu phù hợp tối ưu, các phép biến đổi cơ bản như xoay, tỉ lệ và dời được sử dụng.
2.1.3 Thuật toán Support Vector Machine (SVM)
Thuật toán Support Vector Machine (SVM) là một phương pháp phân lớp dựa trên lý thuyết thống kê do Vapnik và Alexei Chervonenkis phát triển vào năm 1960 SVM được ứng dụng rộng rãi trong các lĩnh vực như nhận dạng chữ viết tay, nhận dạng khuôn mặt và phân loại tài liệu.
Thuật toán SVM (Support Vector Machine) nổi bật trong việc phân loại dữ liệu sinh học, với khả năng phân loại tương đương hoặc tốt hơn so với các phương pháp khác Ý tưởng chính của SVM là xây dựng một mô hình để xác định xem một đối tượng thuộc về nhóm nào trong hai nhóm cần phân loại SVM biểu diễn các điểm dữ liệu trong không gian và tìm ra ranh giới giữa hai nhóm sao cho khoảng cách từ các điểm dữ liệu đến ranh giới là lớn nhất Bằng cách xem xét một bài toán đơn giản với hai lớp dữ liệu mẫu đã được huấn luyện, phương pháp này có thể mở rộng cho nhiều trường hợp phức tạp hơn, ngay cả khi dữ liệu không thể phân tách rõ ràng Với tập hợp các vector đặc trưng của bộ huấn luyện, SVM nhằm xây dựng mặt siêu phẳng để phân loại chính xác các mẫu dữ liệu theo phương trình đã được thiết lập.
Trong đó w là vector trọng số, w0 là độ dịch
Phương trình (2.1) cho phép xác định mặt siêu phẳng, như mô tả trong hình 2.1 Trong trường hợp này, mặt siêu phẳng được thể hiện bằng đường thẳng đậm đen liền nét, phân chia hai phân lớp tuyến tính Mặt siêu phẳng đóng vai trò quan trọng trong việc tách biệt hai phân lớp một cách hiệu quả.
Trong thực tế, có thể tồn tại nhiều mặt siêu phẳng, trong đó hai mặt siêu phẳng được xác định là h1 và h2 Vấn đề đặt ra là lựa chọn mặt siêu phẳng nào sẽ được sử dụng làm ranh giới để phân tách hai lớp dữ liệu.
Trong hình 2.1, thuật toán SVM xác định mặt siêu phẳng để tách phân lớp dựa trên khoảng cách cực đại giữa hai mẫu dữ liệu đã được huấn luyện Mặt siêu phẳng này được chọn làm ranh giới phân tách hai bộ phân lớp, và khoảng cách cực đại này được gọi là lề, hay còn gọi là mặt siêu phẳng lề tối đa.
Hình 2.1: Tách hai phân lớp tuyến tính với một mặt siêu phẳng Độ lớn của lề (margin) được cho như sau:
Từ phương trình (2.2) khi thay đổi w và w 0 hướng và khoảng cách từ gốc tọa độ tới mặt siêu phẳng Bộ phân loại SVM được định nghĩa như sau:
Nếu f x 1 thì x thuộc về phân lớp đang cần quan tâm, và ngược lại nếu
1 f x thì x thuộc về lớp khác
Phương pháp máy học SVM sử dụng các mặt siêu phẳng dựa trên các tham số w và w0, với mục tiêu là ước lượng hai giá trị này để tối đa hóa lề Lề lớn hơn sẽ dẫn đến mặt siêu phẳng phân lớp hiệu quả hơn Hình 2.2 chỉ ra rằng khi lề nhỏ, khả năng xảy ra lỗi trong kết quả phân loại sẽ tăng lên.
Hình 2.2: Tách hai phân lớp tuyến tính với hai mặt siêu phẳng
Nếu tập dữ liệu huấn luyện là khả tách tuyến tính thì ta có các ràng buộc sau:
Mặt siêu phẳng hỗ trợ có phương trình w x T i + w 0 = 1, trong đó w và w 0 là các tham số cần tìm để xây dựng mặt siêu phẳng lề tối ưu Để xác định giá trị của w và w 0, cần giải bài toán tối ưu toàn phương, như được minh họa trong hình 2.3.
Hình 2.3: Ví dụ minh họa về độ lớn của lề
Với các ràng buộc sau: i 0
Trong đó các hệ số Lagrange i ,i1, 2, ,N là các biến số cần phải tối ưu hóa Vector w sẽ được tính từ các nghiệm của bài toán toàn phương như sau:
N i i i w i y x (2.9) Để xác định được độ dịch w 0 ta chọn x i sao cho i 0, sau đó sử dụng điều kiện Karush-Kuhn-Tucker như sau:
Với i 0là những mẫu nằm gần mặt siêu phẳng nhất và được gọi là các vector hỗ trợ
Lý thuyết phát hiện làn đường
Phát hiện làn đường là một thành phần quan trọng trong hệ thống hỗ trợ lái xe, thường được tích hợp vào các hệ thống điều khiển thông minh Công nghệ này giúp cảnh báo người lái khi có nguy cơ chuyển làn không an toàn và đóng vai trò quan trọng trong việc mô hình hóa hệ thống giao thông.
Có 3 kỹ thuật hay được sử dụng bên trong việc xử lý này là:
- Kĩ thuật phát hiện cạnh đặc trưng
- Kĩ thuật chuyển đổi khoảng cách
Các bước trong phát hiện làn đường bao gồm:
- Xử lý hình ảnh ở cấp độ thấp: Xử lý hình ảnh đầu vào, chuyển đổi thành hình ảnh đã xử lý để phát hiện hệ thống
- Phát hiện biên của làn đường
- Hậu xử lý cho hệ thống dựa trên làn đường sau khi phát hiện
Trong báo cáo này, người thực hiện sử dụng phương pháp kỹ thuật mắt chim để phát hiện làn đường
2.2.2 Kỹ thuật phân ngưỡng ảnh
Khi xử lý ảnh từ không gian màu như RGB, CMYK, HSL/HSV hoặc ảnh xám, việc tiếp nhận một lượng lớn thông tin có thể gây khó khăn cho việc xây dựng thuật toán và làm giảm tốc độ xử lý Để khắc phục vấn đề này, thuật toán phân ngưỡng được sử dụng để chuyển đổi ảnh đầu vào thành không gian ảnh nhị phân với chỉ hai màu đen và trắng, giúp đơn giản hóa quá trình xử lý.
- Phân ngưỡng ảnh đơn giản
- Phân ngưỡng ảnh tối ưu
Báo cáo này trình bày việc áp dụng phương pháp phân ngưỡng ảnh đơn giản để chuyển đổi hình ảnh màu sang ảnh nhị phân, qua đó nâng cao hiệu suất xử lý.
* Phương pháp Phân ngưỡng ảnh đơn giản
Giả sử ta có một ảnh xám đầu vào input_image với kích thước m x n và đầu ra là ảnh nhị phân output_image
Thuật toán được biểu diễn bởi công thức sau:
- Ưu điểm của thuật toán này là đơn giản dễ lập trình
- Nhược điểm là khó chọn ngưỡng thích nghi với nhiều loại ảnh trong các điều kiện ánh sáng khác nhau
2.2.3 Kỹ thuật ảnh mắt chim
Kỹ thuật này đặc trưng bởi khả năng chuyển đổi hình ảnh từ tầm nhìn xa thành hình ảnh nhìn từ trên xuống Có hai phương pháp chính để tạo dựng hình ảnh trong kỹ thuật này.
- Uốn cong tầm nhìn của ảnh (Warp perspective mapping –WPM)
- Đảo tầm nhìn của hình ảnh (Inverse perspective mapping – IPM)
2.2.3.1 Uốn cong tầm nhìn của ảnh (WPM)
Bốn điểm ảnh từ hình ảnh đầu vào được sử dụng để tiền xử lý cho ảnh đầu ra mong muốn Khi xem xét ma trận uốn cong hình ảnh, các điểm ảnh đầu vào PI sẽ được chuyển đổi thành PW thông qua phép nhân với hệ số ma trận uốn cong A.
Hình (a) là hình ảnh đầu vào, trong khi (b) và (c) là hình ảnh mắt chim sử dụng WPM dựa trên các khoảng cách khác nhau Bốn điểm màu vàng được thiết lập qua hiệu chuẩn, với hướng lái xe được chỉ định bởi mũi tên Kỹ thuật này cho phép chọn bốn điểm ảnh khác nhau để điều chỉnh độ cong của hình ảnh sau khi xử lý, đồng thời không phụ thuộc nhiều vào các thông số của camera, giúp phát hiện dễ dàng các làn đường không liên tục hoặc hỗ trợ hệ thống điều hướng Tuy nhiên, nhược điểm của kỹ thuật này là vị trí của làn đường sau khi xử lý không rõ ràng, và để khắc phục, có thể áp dụng kỹ thuật đảo hình ảnh.
2.2.3.2 Đảo tầm nhìn của hình ảnh (IPM)
Kỹ thuật này được áp dụng dựa trên cách nhìn nhận hình ảnh theo các trục trong không gian thực tế, cụ thể là trên các mặt phẳng xz và yn Hình 2.12 minh họa rõ ràng điều này, với mặt phẳng xz ở bên trái và mặt phẳng yn ở bên phải trong không gian W.
Kỹ thuật này yêu cầu kiểm tra nghiêm ngặt các thông số của camera đầu vào, nhằm đảm bảo rằng quá trình chuyển đổi hình ảnh đạt chất lượng cao hơn so với kỹ thuật uốn cong.
Viewpoint: vị trí camera trong hệ tọa độ thế giới C = (l, h, d)
- Viewing direction: trục quang được xác định bởi hai góc:
* γ0: góc được hình thành bởi phép chiếu của trục quang trên mặt phẳng xz (như trong hình 2.13 bên trái)
* θ0: góc được hình thành bởi trục η và trục y [như trong hình 2.13 bên phải]
- Aperture (Khẩu độ): khẩu độ góc máy ảnh là 2αu theo hàng và 2αv theo cột Tọa độ (u0, v0) là tâm điểm của máy ảnh,
- n x m là độ phân giải của máy ảnh
Theo phương pháp toán học, IPM có thể được mô hình hóa như một phép chiếu từ một không gian 3D Euclide W, chứa các phần tử x y z , , 3 thành một không
28 gian con phẳng 2D của , được biểu hiễn bởi I, với các thành phần u, v 2 Ánh xạ từ I sang W được tính như sau:
Còn ánh xạ từ W sáng I thì có thể được tính như sau:
Với (a) là hình ảnh đầu vào gốc, (b) là hình ảnh thu được sau khi thực hiện
WPM và (c) là hình ảnh thu được sau khi thực hiện IPM Nhìn chung, hình ảnh do
WPM tạo ra dường như bị mờ hơn và IPM thì hình ảnh làn đường rõ ràng hơn (hình
Hình 2.14: Hình ảnh từ kỹ thuật mắt chim sử dụng WPM và IPM
THỰC HIỆN VÀ KẾT QUẢ ĐẠT ĐƯỢC
Các công cụ hỗ trợ
3.1.1.1 Sự ra đời của Raspberry
Vào năm 2006, Eben Upton và các đồng nghiệp tại phòng thí nghiệm máy tính đại học Cambridge nhận thấy sự giảm sút về trình độ đầu vào của các tân sinh viên Trong những năm 90, sinh viên ngành khoa học máy tính thường có kinh nghiệm lập trình đáng kể, nhưng đến những năm 2000, ngay cả những sinh viên xuất sắc nhất cũng chỉ nắm vững kiến thức cơ bản về lập trình web.
Trẻ em ngày nay tương tác với máy tính theo cách khác biệt so với thế hệ trước, một phần do yêu cầu học các chứng chỉ như Word và Excel Sự suy giảm của kỷ nguyên dot-com cùng với sự bùng nổ của video game và game PC đã thay thế những công cụ lập trình như Amigas, BBC Micros 63 và Spectrum ZX mà thế hệ trước sử dụng Điều này dẫn đến việc nhiều bậc phụ huynh cấm con cái tiếp cận máy tính, mặc dù trẻ em có thể tham gia vào các hoạt động hữu ích hơn như học lập trình.
Eben Upton và các đồng nghiệp đã quyết định tạo ra những chiếc máy tính mini, giá rẻ và lập trình được để khuyến khích trẻ em học lập trình Họ dự kiến sẽ phát tặng những thiết bị này cho học sinh đam mê khoa học máy tính vào ngày khai giảng của Đại học Cambridge, sau đó sẽ theo dõi sự tiến bộ của các em Ý tưởng này đã dẫn đến sự ra đời của Raspberry Pi vào năm 2006 Năm 2008, Eben Upton gia nhập Broadcom với vai trò thiết kế chip, điều này đã tạo điều kiện thuận lợi cho việc phát triển Raspberry Pi nhờ vào việc sử dụng các linh kiện và chip điện tử hiệu suất cao với chi phí thấp.
Eben Upton cùng các cộng sự đã quyết định chọn hệ điều hành Linux cho Raspberry Pi nhờ vào yêu cầu cấu hình thấp, tính "nguồn mở" và khả năng lập trình cao hơn so với Windows Nhờ những nỗ lực không ngừng, Raspberry Pi Model B, phiên bản hoàn thiện, đã chính thức ra mắt thị trường vào năm 2011.
Nguồn gốc tên gọi Raspberry Pi xuất phát từ truyền thống của phòng thí nghiệm máy tính tại đại học Cambridge, nơi thường đặt tên cho các sản phẩm của mình bằng tên các loại trái cây.
“Raspberry” nghĩa là “quả dâu” còn “Pi” là ám chỉ “python” ngôn ngữ lập trình chính thức của Raspberry Pi
Bảng 3.1: Bảng thông số cấu hình của Raspberry Pi B+
SoC Broadcom BCM2835 (CPU, GPU, DSP, SDRAM, and single
USB port) CPU 700 MHz ARM1176JZF-S core (ARM11 family)
GPU Broadcom VideoCore IV, OpenGL ES 2.0, MPEG-2 and VC-1
(with license), 1080p30 h.264/MPEG-4 AVC high-profile decoder and encoder
Memory 512 MB (shared with GPU) as of 15 October 2012
USB 2.0 ports 4 (via integrated USB hub)
Video outputs Composite RCA (PAL and NTSC), HDMI (rev 1.3 & 1.4), raw
LCD Panels via DSI14 HDMI resolutions from 640×350 to 1920×1200 plus various PAL and NTSC standards
Audio outputs 3.5 mm jack, HDMI
Onboard storage SD / MMC / SDIO card slot
10/100 Ethernet (RJ45) via USB hub
8 × GPIO, UART, I²C bus, SPI bus with two chip selects, +3.3
Power source 5 volt via MicroUSB or GPIO header
Size 85.60 mm × 53.98 mm (3.370 in × 2.125 in)
Debian GNU/Linux, Raspbian OS, Fedora, Arch Linux ARM, RISC OS, FreeBSD, Plan 9
OpenCV viết tắt của từ Open Source Computer Vision Library:
- OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay phát triển về thị giác máy tính
- OpenCV tối ưu hóa và xử lý ứng dụng trong thời gian thực
- OpenCV giúp cho việc xây dựng các ứng dụng xử lý ảnh, thị giác máy tính… một cách nhanh hơn
- OpenCV có hơn 500 hàm khác nhau, được chia làm nhiều phần phục vụ các công việc như: xử lý ảnh, an ninh, camera quan sát, nhận diện, robot…
Thư viện OpenCV, được phát triển bằng ngôn ngữ C và C++, có khả năng chạy trên các hệ điều hành như Linux, Windows và MacOSX OpenCV được tối ưu hóa để cải thiện hiệu suất tính toán và hỗ trợ các ứng dụng thời gian thực Hệ thống của OpenCV rất đơn giản và dễ sử dụng, giúp người dùng nhanh chóng phát triển các ứng dụng trong lĩnh vực thị giác máy, bao gồm các hệ thống kiểm tra trong nhà máy, y học, bảo mật và robot học Thư viện này cung cấp các hàm xử lý ảnh cơ bản cũng như các chức năng nâng cao như dò tìm, theo dõi và nhận dạng khuôn mặt.
OpenCV, được giới thiệu vào tháng 1/1999, đã trở thành một công cụ quan trọng trong nhiều ứng dụng và nghiên cứu, bao gồm hàng không, y học với chức năng giảm nhiễu, phân tích đối tượng, an ninh, hệ thống dò tìm, theo dõi tự động và bảo mật Ngoài ra, OpenCV còn được áp dụng trong nhận dạng âm thanh và đóng vai trò then chốt trong các robot sử dụng thị giác như Stanford và Asimo.
Cấu trúc của OpenCV được chia làm 5 phần chính, 4 trong số đó được chia ra như trong hình 3.1
Hình 3.1: Cấu trúc của OpenCV
- CV (computer vision) là thành phần chứa những xử lý ảnh cơ sở và thuật toán thị giác máy tính mức cao
- MLL (machine learning library) là thư viện machine learning, cái này bao gồm rất nhiều lớp thống kê và gộp công cụ xử lý
- HighGUI chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh video
- CXCore chứa cấu trúc và nội dung dữ liệu cơ sở
Python là một ngôn ngữ lập trình phổ biến, được sử dụng để phát triển nhiều loại ứng dụng phần mềm như chương trình desktop, server và ứng dụng web Nó cũng là ngôn ngữ ưa chuộng trong lĩnh vực khoa học dữ liệu và trí tuệ nhân tạo, bao gồm machine learning Python được thiết kế với cấu trúc rõ ràng, dễ hiểu, phù hợp cho người mới bắt đầu học lập trình Được phát triển bởi Guido van Rossum và ra mắt lần đầu vào năm 1991, Python chịu ảnh hưởng từ các ngôn ngữ như ABC, Haskell, Java, Lisp, Icon và Perl Là một ngôn ngữ thông dịch, đa nền tảng, Python nổi bật với việc không sử dụng dấu chấm phẩy hay ngoặc để kết thúc câu lệnh, mà thay vào đó, nó sử dụng dấu lùi đầu dòng để xác định các lệnh.
Hiện tại Python có hai dòng phiên bản là dòng 2.x và 3.x Đặc điểm nổi bật của Python:
Python là một ngôn ngữ lập trình dễ học nhờ vào cú pháp đơn giản và rõ ràng, với số lượng từ khóa hạn chế Điều này khiến Python trở thành lựa chọn lý tưởng cho những người mới bắt đầu học lập trình.
- Python là ngôn ngữ dễ hiểu: Mã lệnh (source code hay đơn giản là code) viết bằng ngôn ngữ Python dễ đọc và dễ hiểu
- Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
Python có tính tương thích cao, cho phép các chương trình viết bằng ngôn ngữ này hoạt động trên nhiều hệ điều hành khác nhau, bao gồm Windows, Mac OSX và Linux.
Cascade training GUI là một ứng dụng được thiết kế nhằm đơn giản hóa và cải thiện trải nghiệm huấn luyện dữ liệu bằng phương pháp rút trích đặc trưng Haar-like theo mô hình cascade Chương trình này có giao diện người dùng trực quan và thân thiện, giúp người dùng dễ dàng thực hiện các thao tác cần thiết.
Để tiến hành huấn luyện trong chương trình Cascade Trainer GUI, người dùng cần chuẩn bị hai bộ ảnh dữ liệu, hay còn gọi là dataset, như minh họa trong hình 3.3.
- n (negatvie): tập dữ liệu ảnh không chứa hình ảnh đối tượng huấn luyện
- p (positive): tập dữ liệu ảnh có chứa hình ảnh đối tượng huấn luyện
Sau khi hoàn thành quá trình huấn luyện, chương trình sẽ tạo ra một tệp tin có tên cascade.xml cho mô hình Người dùng có thể kiểm tra kết quả huấn luyện của mô hình trực tiếp thông qua phần mềm.
Lưu đồ thực hiện
Hình 3.4: Lưu đồ thực hiện
Hình ảnh thiết bị được gắn lên xe hơi để kiểm tra thực tế
Sau khi hoàn tất lắp ráp, thiết bị được gắn lên xe và định vị để kiểm tra hoạt động thực tế, trong đó có việc làm chân đế để thuận tiện cho việc cân chỉnh.
Hình 3.5: Thiết bị được gắn thực tế
Các bước thực hiện theo lưu đồ hình 3.4 và kết quả của từng bước trong lưu đồ được thể hiện cụ thể như sau:
Bước 1: Tiền xử lý các frame ảnh đầu vào, resize về kích thước frame về 480x320
Hình 3.6: Hình ảnh đầu vào
Bước 2: Nhận dạng đối tượng (xe ô tô) và cảnh báo
Hình 3.7: Kết quả nhận dạng đối tượng(xe ôtô) và ước lượng khoảng cách
Hình 3.8: Thiết lập vùng cảnh báo
Hình 3.9: Kết quả nhận dạng đối tượng và đưa ra cảnh báo
Bước 3: Chuyển đổi hình ảnh thành hình ảnh mắt chim
- Xử lý hình ảnh và chuyển thành ảnh nhị phân
Hình 3.10: Hình ảnh gốc và hình ảnh nhị phân
- Xác định vùng ROI và tạo hình ảnh mắt chim
Hình 3.11: Hình mắt chim của vùng ROI Bước 4: Xác định làn đường
Hình 3.12: Dùng cửa sổ trượt để xác định làn đường
Bước 5: Vẽ vùng làn đường
Kết quả thực tế trên các loại đường
Hình 3.14: Kết quả thử nghiệm trên loại đường thứ nhất
Hình 3.15: Kết quả thử nghiệm trên cao tốc liên khương
Hình 3.16: Kết quả thử nghiệm trên đường trường
Hình 3.17: Kết quả thử nghiệm trên đường khác nhau
Hình 3.18: Một số hình ảnh phát hiện làn đường và nhận dạng chưa chính xác
Đánh giá kết quả thực hiện
Để đánh giá hiệu quả của việc phát hiện làn đường và nhận dạng xe ô tô, mô hình học viên đã so sánh số lượng xe được nhận dạng bằng mắt thường với số lượng xe được nhận dạng qua phần mềm Ba thông số đánh giá kết quả được tính toán dựa trên các biểu thức đã được đề cập.
- TP: là số lượng trích xuất thực
- FP là số lượng trích xuất bị sai
- FN là số lượng trích xuất bị bỏ qua
- Accuracy: là tỷ lệ nhân dạng đúng so với thực tế
- Completeness: là tỷ lệ được nhận dạng chính xác
- Quality: là độ chính xác tổng thể của mô hình Đường Accuracy Completenes Quality
Bảng 3.2: Bảng đánh giá kết quả nhận dạng đối tượng là xe ô tô Đường Accuracy Completenes Quality
Bảng 3.3: Bảng đánh giá kết quả phát hiện làn đường