Ý tưởng thực hiện tracking với Kalman filter
Kalman có 2 trường hợp, không ước lượng được trạng thái trong nhiều frame liên tục (fail nhiều), không ước lượng được trạng thái liên tục nhưng trong ít frame (fail ít). Số lượng frame bị fail nhiều hay ít do chúng ta quy ước.
- Nếu fail nhiều thì sẽ thuật là đường không có lane, bộ dự đoán của Kalman sẽ chờ đến khi nào bắt được lane sẽ cập nhật vào bộ dự đoán của Kalman.
- Nếu fail ít thì sẽ xảy ra 2 trường hợp:
+ Nếu điểm mới cho sai số nhỏ thì sẽ cập nhật điểm mới đó vào bộ dự đoán của Kalman.
+ Nếu điểm mới cho sai số lớn thì sẽ giữ nguyên bộ dự đoán của Kalman.
- Để biết được fram sau sai số ít hay nhiều ta dự vào khoảng cách (bằng cách lấy vị trí điểm đó của fram thứ n+1 trừ cho vị trí điểm đó của fram thư n).
Tiến trình thực hiện
Đầu tiên ta cần xác định được 2 lane chính là lane trái và lane phải. Đặc điểm của 2 lane này là nằm gần nhất với đường thẳng đứng chia đôi khung hình (y=256).
63
Hình 4.23 Ảnh thể hiện 2 lane chính màu xanh
Sau khi xác định được 2 lane chính chọn điểm VashingPoint (Trung bình cộng của 2 điểm cuối cùng nằm trên 2 lane chính).
64
Hình 4.24 Chấm anh dương đậm được gọi là VashingPoint
Tiếp theo ta tính sai số dựa vào thay đổi khoảng cách của điểm VashingPoint phía trên và độ thay đổi diện tích tạo thành giữa những điểm mới và điểm dự đoán của bộ Kalman. Nếu những sai số trên nằm trong vùng cho phép bộ dự đoán Kalman sẽ cập nhật những điểm mới đó, còn nằm ngoài vùng cho phép thì bộ dự đoán của Kalman sẽ giữ nguyên.
65
66
Chương 5. THỰC NGHIỆM VÀ KẾT QUẢ THỰC NGHIỆM 5.1. Chuẩn bị
Gắn camera GoPro Hero 5 Black vào xe như hình 5.1 để ghi video hành trình xe chạy.
Video được ghi lại từ camera GoPro Hero 5 Black sẽ được đem về máy chủ đặt tại Phòng thí nghiệm điều khiển tự động trên ô tô và tiến hành xử lý.
Hình 5.1 Cài đặt camera GoPro Hero 5 Black trên xe
5.2. Địa điểm thực nghiệm
Các đoạn đường xung quanh khu quân sự làng Đại học quốc gia thành phố Hồ Chí Minh.
67
Hình 5.2 Địa điểm thực nghiệm
5.3. Kết quả thực nghiệm
Kết quả thực nghiệm được lưu trên trang web:
https://drive.google.com/open?id=1N8cMYqmhlxAGES2g_H3vbRnSUNPRy_76 Các ảnh kết quả thực nghiệm được chụp lại từ video được lưu trong bộ hình 5.3
68
70
Hình 5.3 Kết quả thực nghiệm
Nhận xét:
- Thuật toán bắt tốt ở một số làn đường thẳng và đường cong.
- Quá trình theo dõi làn đường thực hiện ở đường thẳng thì rất tốt nhưng đường cong còn rất nhiều hạn chế.
72
Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1. Kết luận
Các hệ thống sử dụng giải thuật học sâu mặc dù đạt hiệu suất cao nhưng đòi hỏi dữ liệu huấn luyện khá lớn, bên cạnh đó các hệ thống này chỉ thường hoạt động tốt trên các bối cảnh và môi trường đã được huấn luyện. Do đó khi chuyển sang một môi trường mới, các hệ thống này thường phải được huấn luyện lại hoặc tinh chỉnh (fine-tuning) dựa trên dữ liệu thu thập ở môi trường mới. Tuy nhiên với giới hạn về thời gian thực hiện đề tài và phần cứng hiện có, việc thu thập dữ liệu mới và huấn luyện lại hệ thống là điều bất khả thi. Do đó trong đề tài này, chúng em đề xuất một giải pháp mới kết hợp tính ưu việt của giải thuật học sâu và tính tuỳ biến của các phương pháp xử lý ảnh và xử lý tín hiệu truyền thống cho việc phát triển hệ thống nhận diện lane đường ở Việt Nam. Tuy kết quả đạt được vẫn còn bị nhiễu ở một số trường hợp, nhưng về cơ bản hệ thống đã đạt được mục tiêu đề ra. Bên cạnh đó, vì áp dụng học sâu nhưng phần cứng bị hạn chế nên tốc độ xử lý chưa cao. Ban đầu thời gian để xử lý 1 khung hình lên đến 0.25s, nhưng sau quá trình cải tiến, tốc độ xử lý đã được tăng lên còn 0.16s/khung hình, tuy đã cãi thiện được tốc độ xử lý nhưng hệ thống vẫn chưa đủ đáp ứng xử lý theo thời gian thực. Để tăng tốc độ xử lý (lên đến 50fps), tác giả trong bài viết [3] khuyến nghị nên sử dụng card đồ họa GTX-1070.
Sau khi hoàn thành đồ án này, chúng em đã tích góp được rất nhiều kiến thức bổ ích về học sâu, xử lý ảnh kết hợp ngôn ngữ lập trình python trên nền tảng hệ điều hành ubuntu. Chúng em tin chắc rằng, những kiến thức tích lũy được qua đồ án này sẽ là những kiến thức quý báu làm hành trang hỗ trợ chúng em trên con đường phát triển sự nghiệp sau này.
6.2. Hướng phát triển
Để tăng hiệu suất của hệ thống nhận diện lane làm cho nó phù hợp với môi trường Việt Nam, việc phát triển các giải thuật học chuyển đổi (transfer learning) là điều cần thiết. Các giải thuật này sẽ giúp cho các hệ thống học sâu thích nghi tốt hơn khi được áp dụng ở môi trường mới, và cải thiện hiệu suất nhận diện. Sau khi cải tiến việc nhận diện lane, chúng ta có thể phát triển hệ thống này lên thành cảnh báo cho tài xế khi lệch lane,
73 có thể ứng dụng cho hệ thống lane keeping trên xe tự lái. Bên cạnh đó, chúng ta còn có thể phát triển thêm cho AI biết cách nhận biết vật thể (Object detection) để từ đó xe của chúng ta có thể nhận diện vật cản, các vật trong vùng nguy hiểm để cảnh báo cho tài xế hoặc tác động trực tiếp vào xe để giúp xe chủ động tránh các trường hợp nguy hiểm, nó còn có thể được áp dụng cho hệ thống cảnh báo điểm mù, hệ thống Adaptive Cruise Control,… và với việc ứng dụng AI, sau khi được train nhiều lần thì việc sử dụng cho tình trạng giao thông phức tạp như ở Việt Nam chúng ta chắc chắn sẽ không còn là một vấn đề nan giải.
74
DANH MỤC TÀI LIỆU THAM KHẢO
[1] https://github.com/amusi/awesome-lane-detection [2] https://github.com/georgesung/advanced_lane_detection [3] https://github.com/MaybeShewill-CV/lanenet-lane-detection [4] https://github.com/XingangPan/SCNN [5] https://github.com/davidawad/Lane-Detection [6] https://github.com/yang1688899/CarND-Advanced-Lane-Lines [7] https://github.com/SeokjuLee/VPGNet
[8] https://github.com/mvirgo/MLND-Capstone:Lane Detection with Deep Learning
[9] https://machinelearningcoban.com/2016/12/28/linearregression/
[10] https://github.com/galenballew/SDC-Lane-and-Vehicle-Detection-Tracking
[11] https://github.com/shawshany/Advance_LaneFinding
[12] https://opencv-python-tutroals.readthedocs.io
[13] PGS.TS Nguyễn Quang Hoan, Giáo trình xử lý ảnh, Học viện bưu chính viễn thông
[14] https://vnexpress.net/so-hoa/nhung-ung-dung-cua-ai-trong-cuoc-song-3772257.html [15] https://tech.vccloud.vn/ubuntu-la-gi-co-nen-su-dung-ubuntu-khong- 20180908094633985.htm [16] https://o7planning.org/vi/11385/gioi-thieu-ve-python [17] https://nttuan8.com/huong-dan-cai-dat-anaconda/ [18] https://vi.wikipedia.org/wiki/CUDA [19] https://developer.nvidia.com/cudnn [20] https://drive.google.com/open?id=1N8cMYqmhlxAGES2g_H3vbRnSUNPRy_76
75
PHỤ LỤC
Cài đặt hệ điều hành Ubuntu 16.04
Chuẩn bị:
- SB dùng để boot tốt nhất là trên 4gb
- Phần mềm tạo usb boot ( SB installer, netbootin,…). Ở đây nhóm chúng em sẽ hướng dẫn sử dụng phần mềm USB installer
- File ISO Ubuntu 16.04: http://releases.Ubuntu.com/16.04/
Yêu cầu cấu hình tối thiểu:
- 2 GHz dual core processor - 2 GiB RAM
- 25 GB không gian ổ đĩa cứng
- VGA có khả năng phân giải màn hình 1024×768 - Cổng USB, máy tính hỗ trợ boot từ USB
Tiến hành cài đặt:
77
Bước 2: Khởi động máy tính từ USB boot
Hầu hết các máy tính sẽ tự khởi động từ USB. Chỉ cần kết nối USB và bật nguồn máy tính hoặc khởi động lại. Bạn sẽ thấy cùng một cửa sổ chào mừng, nhắc bạn chọn ngôn ngữ của bạn và cài đặt hoặc dùng thử Ubuntu Desktop.
Nếu máy tính của bạn không tự động khởi động từ USB, hãy thử giữ F12 hoặc phím ESC, F2, F10 khi máy tính của bạn khởi động lần đầu tiên. Với hầu hết các máy, điều này sẽ cho phép bạn chọn thiết bị USB từ menu khởi động hệ thống. Nếu không bạn có thể tham khảo phím tắt Boot option của một số dòng máy tại đây: https://blogtinhoc.vn/tong-hop-phim-tat-vao-boot-option-va-bios-cua-may-tinh.html
Bước 3: Sau khi chọn khởi động máy tình bằng SB boot, chương trình sẽ hiển
thị bảng menu các option sử dụng, ta sẽ chọn “Install buntu” để tiến hành cài đặt hoặc chọn “Try buntu without installing” để trải nghiệm buntu trước khi quyết định cài đặt hay không.
78
Bước 4: Tới phần “Select a language” Bạn chọn ngôn ngữ mà bạn muốn
Bước 5: Sau khi chọn ngôn ngữ, bạn sẽ được hỏi về các bản cập nhật và phần
79 Chúng tôi khuyên bạn nên bật cả Download updates và Install third-party software.
Luôn kết nối với internet để bạn có thể nhận được các bản cập nhật mới nhất trong khi cài đặt Ubuntu.
Nếu bạn không kết nối với internet, bạn sẽ được yêu cầu chọn một mạng không dây, nếu có. Chúng tôi khuyên bạn nên kết nối trong khi cài đặt để chúng tôi có thể đảm bảo máy của bạn được cập nhật.
Bước 6: Sử dụng các hộp kiểm để chọn xem bạn có muốn xóa hệ điều hành hiện
tại và thay thế bằng Ubuntu hoặc cài đặt Ubuntu cùng với hệ điều hành khác hoặc nếu bạn là người dùng nâng cao hãy chọn tùy chọn “Something else”.
Ở đây, chúng tôi chọn xóa hệ điều hành hiện tại và thay thế bằng Ubuntu
Sau khi định cấu hình bộ nhớ, hãy nhấp vào nút “Cài đặt ngay”. Một khung nhỏ sẽ xuất hiện với tổng quan về các tùy chọn lưu trữ bạn đã chọn, với cơ hội quay lại nếu chi tiết không chính xác.
80
81
Bước 8: Chọn kiểu bàn phím
Bước 9: Thiết lập thông tin đăng nhập
Nhập tên của bạn và trình cài đặt sẽ tự động đề xuất tên máy tính và tên người dùng. Nó có thể dễ dàng được thay đổi nếu bạn thích. Tên máy tính là cách máy tính của bạn sẽ xuất hiện trên mạng, trong khi tên người dùng của bạn sẽ là tên đăng nhập và tài khoản của bạn.
Tiếp theo, nhập mật khẩu mạnh. Trình cài đặt sẽ cho bạn biết nếu nó quá yếu. Bạn cũng có thể chọn bật tự động đăng nhập và mã hóa thư mục gốc. Nếu bạn có nhiều dữ liệu quan trọng, bạn nên tắt tính năng đăng nhập tự động và bật mã hóa. Điều này sẽ ngăn mọi người truy cập các tệp cá nhân của bạn nếu máy bị mất hoặc bị đánh cắp.
Chú ý: Nếu bạn bật mã hóa thư mục chính và bạn quên mật khẩu, bạn sẽ không thể truy xuất bất kỳ dữ liệu cá nhân nào được lưu trữ trong thư mục chính của mình.
82
Bước 10: Tiến hành cài đặt
Trình cài đặt sẽ hoàn thành ở chế độ nền trong khi cửa sổ cài đặt hướng dẫn bạn một chút về mức độ tuyệt vời của Ubuntu. Tùy thuộc vào tốc độ của máy và kết nối mạng của bạn, quá trình cài đặt sẽ chỉ mất vài phút.
83
Bước 11: Hoàn thành quá trình cài đặt
Sau khi mọi thứ đã được cài đặt và cấu hình, một cửa sổ nhỏ sẽ xuất hiện yêu cầu bạn khởi động lại máy tính của bạn. Nhấp vào “Khởi động lại” và rút SB khỏi máy tính khi được nhắc.
84
Bước 12: Đặng nhập và sử dụng
Cài đặt Anaconda
Bước 1: Truy xuất phiên bản mới nhất của Anaconda
Từ trình duyệt web, hãy chuyển đến trang tải xuống Anaconda thông qua đường dẫn sau: https://www.anaconda.com/distribution/
Tìm phiên bản Linux mới nhất và sao chép tập lệnh bash của trình cài đặt.
Bước 2: Tải xuống tập lệnh Anaconda Bash
Đăng nhập vào máy chủ buntu 16.04 của bạn với tư cách người dùng không phải root, chuyển vào /tmp thư mục và sử dụng curl để tải xuống liên kết bạn đã sao chép từ trang web Anaconda:
cd /tmp
Sử dụng curl để tải xuống liên kết mà bạn đã sao chép từ trang web Anaconda:
85
Bước 3: Xác minh tính toàn vẹn dữ liệu của trình cài đặt
Đảm bảo tính toàn vẹn của trình cài đặt với xác minh băm mật mã thông qua tổng kiểm tra SHA-256:
sha256sum Anaconda3-5.2.0-Linux-x86_64.sh Output:
09f53738b0cd3bb96f5b1bac488e5528df9906be2480fe61df40e0e0d19e3d48 Anaconda3-5.2.0-Linux-x86_64.sh
Bước 4: Chạy tập lệnh Anaconda
bash Anaconda3-5.2.0-Linux-x86_64.sh
Bạn sẽ nhận được kết quả sau để xem lại thỏa thuận cấp phép bằng cách nhấn ENTER cho đến khi bạn đạt đến kết thúc.
Output:
Welcome to Anaconda3 5.2.0
In order to continue the installation process, please review the license agreement.
Please, press ENTER to continue
>>> ...
Do you approve the license terms? [yes|no]
Khi bạn đến cuối giấy phép, hãy nhập yes miễn là bạn đồng ý với giấy phép để hoàn tất cài đặt.
Bước 5: Hoàn tất quá trình cài đặt
Khi bạn đồng ý với giấy phép, bạn sẽ được nhắc chọn vị trí cài đặt. Bạn có thể nhấn ENTER để chấp nhận vị trí mặc định hoặc chỉ định một vị trí khác.
86 Output:
Anaconda3 will now be installed into this location: /home/sammy/anaconda3 - Press ENTER to confirm the location
- Press CTRL-C to abort the installation - Or specify a different location below [/home/sammy/anaconda3] >>>
Tại thời điểm này, tiến trình cài đặt sẽ tiến hành. Lưu ý rằng quá trình cài đặt mất một thời gian.
Bước 6: Chọn tùy chọn
Sau khi cài đặt hoàn tất, bạn sẽ nhận được kết quả sau:
Output:
Installation finished.
Do you wish the installer to prepend the Anaconda3 install location to PATH in your /home/sammy/.bashrc ? [yes|no]
[no] >>>
Bạn nên nhập yes sử dụng conda chỉ huy.
Tiếp theo, bạn sẽ được nhắc tải xuống Visual Studio Code, bạn có thể tìm hiểu thêm về từ trang web chính thức của VSCode.
Kiểu yes để cài đặt và no để từ chối.
Bước 7: Kích hoạt cài đặt
Bây giờ bạn có thể kích hoạt cài đặt bằng lệnh sau:
source ~/.bashrc
Bước 8: Thử nghiệm cài đặt:
87
conda list
Bạn sẽ nhận được đầu ra của tất cả các gói bạn có sẵn thông qua cài đặt Anaconda:
Bây giờ Anaconda được cài đặt, chúng ta có thể tiếp tục thiết lập môi trường Anaconda.
Bước 9: Thiết lập môi trường Anaconda
Bạn có thể tạo các môi trường Anaconda với conda create chỉ huy. Ví dụ, một môi trường Python 3 có tên my_env có thể được tạo bằng lệnh sau:
conda create --name my_env python=3
Kích hoạt môi trường mới như sau:
source activate my_env
Tiền tố nhắc lệnh của bạn sẽ thay đổi để phản ánh rằng bạn đang ở trong một môi trường Anaconda hoạt động, và bây giờ bạn đã sẵn sàng để bắt đầu làm việc trên một dự án.
Tạo môi trường với conda
Bước 1: Tạo thư mục dự án, ví dụ ~/projects/python_env_example trên máy tính
của bạn, sau đó chuyển vào thư mục vừa tạo:
$ mkdir ~/projects/python_env_example $ cd ~/projects/python_env_example
88
Bước 2: Tạo môi trường Conda với tên my_env và cài sử dụng python 3.5 với
lệnh:
$ conda create --name my_env python=3.5
Bước 3: Sử dụng môi trường my_env để làm việc bằng lệnh:
$ source activate my_env
Khi đó, tiền tố (base) sẽ được chuyển thành tên môi trường hiện tại của bạn ví dụ: (my_env)
Bạn có thể kiểm tra các môi trường đang có bằng lệnh:
$ conda info --envs
Kiểm tra các gói và thư viện hiện có trong môi trường bằng lệnh: $ conda list
Bước 4: Thoát khỏi môi trường
Nếu bạn không muốn làm việc trong môi trường đó nữa, bạn có thể dùng lệnh:
$ conda deactivate để thoát khỏi môi trường hiện tại
Cài đặt Cuda 9.0 và CuDNN 7.0
Bước 1: Cài đặt driver card đồ họa NVIDIA với apt-get