Chào xuân mới các mem, hôm nay chúng ta sẽ cùng nhau nghiên cứu cách làm bài toán phát hiện làn đường trong bài toán xe tự lái nhé.
Trong năm qua có 1 bạn đã yêu cầu mình viết về vấn đề này nhưng cũng rất xin lỗi bạn vì công việc cuối năm bận quá nên bây giờ mới viết được.
Bài toán hôm nay của chúng ta là chúng ta sẽ đọc một video quay hành trình của một chiếc xe oto và hiển thị phần làn đường xe đang đi. Các bạn có thể phát triển tiếp như: cảnh báo sai làn đường, cảnh báo tài xế lệch làn có khả năng va chạm…
Tham khảo 1 bài khác về xe tự lái trên Mì AI: Tại đây
Bắt đầu luôn cho nóng nào!
Phần 1 – Chuẩn bị nguyên vật liệu
Các bạn tạo môi trường, tạo thư mục MiAI_LDetect sau đó chuyển vào trong thư mục đó, chạy lệnh git để lấy project của mình về:
git clone https://github.com/thangnch/MiAI_Lane_Detect .
Sau khi tải xong rồi, các bạn chạy tiếp lệnh sau để cài đặt các thư viện cần thiết:
pip install -r setup.txt
Xong xuôi, không báo lỗi là các bạn có thể chuyển sang phần 2 được rồi!
Phần 2 – Tìm hiểu thuật toán phát hiện làn đường
Với bài toàn phát hiện làn đường này thì có nhiều cách làm khác nhau. Cách của mình cũng không chắc đã phải là tối ưu, các bạn tham khảo và tự cải tiến nếu thấy cần thiết nhé.
Mình xin tóm tắt thuật toán qua các bước sau:
- Bước 1: Chúng ta đọc ảnh đầu vào từ video và crop phần đằng trước xe. Các phần khác như bầu trời, phần táp lô xe oto thì bỏ qua cho nhẹ bước xử lý.
- Bước 2: Sau đóthực hiện vẽ một vùng ROI (tưởng tượng là có vẽ nhé) hình thang đằng trước kinh lái. Thực tế là chúng ta tạo một mặt nạ Mask để chỉ giữ lại những chi tiết bên trong vùng ROI đó và bỏ hết các phần khác (bôi đen)
- Bước 3: Từ giờ chỉ xử lý trong vùng ROI. Chúng ta tìm các lines có thể trong vùng đó.
- Bước 4: Tính toán để tìm ra line trái và line phải của lane, sau đó vẽ lines, vẽ lane trên ảnh đầu vào. Phần này nhiều toán nên mình sẽ ko đi sâu, các bạn đọc source hoặc trao đổi thêm trên group nhé.
- Bước 5: Hiển thị ra màn hình.
Phần 3 – Tiến hành chạy chương trình
Bây giờ các bạn hãy mở source và chạy file run.py nhé. Ý nghĩa của từng lệnh mình đã comment trong source rồi, còn gì chưa hiểu các bạn cứ post lên group Mì AI nhé (Group trao đổi, chia sẻ: https://facebook.com/groups/miaigroup )
Chú ý trong thư mục đó mình cũng đã để sẵn file xe10s.mp4. Đây là file mình trích xuất từ video “Trải nghiệm đường Cao tốc TPHCM – Long Thành – Dầu Giây” của Tinhte.vn
Nếu mọi thứ cài đặt okie, các bạn sẽ thấy video sau xuất ra màn hình:
Như vậy mình đã hướng dẫn các bạn làm xong bài toán phát hiện làn đường bằng OpenCV. Còn nhiều thứ cần cải tiến và cũng có nhiều cái có thể thêm vào như: cảnh báo lấn làn, cảnh báo va chạm, cảnh báo lệch làn….
Chúc các bạn thành công!
Hãy join cùng cộng đồng Mì AI nhé!
Fanpage: http://facebook.com/miaiblog
Group trao đổi, chia sẻ: https://www.facebook.com/groups/miaigroup
Website: https://miai.vn
Youtube: http://bit.ly/miaiyoutube
Cảm ơn project rất hay tại đây.