Ứng dụng cnn là loại ứng dụng gì
Bài trước đã giới thiệu về thư viện keras và dùng keras để xây dựng mô hình convolutional neural network (CNN) cho bài toán phân loại ảnh. Bài này sẽ dùng mô hình CNN để dự đoán các giá trị thực và áp dụng cho bài toán ô tô tự lái. Show Nội dung Giới thiệu mô phỏng ô tô tự láiỨng dụng mô phỏng ô tô tự lái là phần mềm mã nguồn mở được phát triển bởi Udacity, được viết bằng Unity ( công cụ dùng để phát triển game). Mọi người tải phần mềm ở đây. Kéo xuống dưới và chọn hệ điều hành tương ứng. Sau khi tải về, giải nén thì bạn có thể chạy được luôn như trên window thì bạn sẽ thấy file .exe Chọn kích thước, cấu hình (máy khỏe thì để nét hơn không thì cứ để Fastest)Sau đó bạn chọn Play! Bạn sẽ thấy có 2 chế độ: training mode (sẽ cho dữ liệu về ô tô tự lái để train mô hình) và autonomous mode (sau khi học được mô hình rồi thì đây là phần ô tô tự lái). Ở ô tô có gắn 3 cameras (trái, giữa, phải) Ô tô có thể di chuyển sang bên trái (←), sang bên phải ( →), tăng tốc (↑), giảm tốc (↓) Trong phần training mode, ở mỗi vị trí ô tô di chuyển thì sẽ cho ta các dữ liệu: ảnh ở 3 camera, góc lái của bô lăng, tốc độ xe, độ giảm tốc (throttle) và phanh (brake) Bài toán ô tô tự láiXây dựng bài toánBạn muốn dự đoán góc lái của bô lăng bằng ảnh ở camera trên ô tô. Vì input là ảnh nên nghĩ ngay đến việc dùng CNN. Dữ liệu training set sẽ được lấy từ traning mode của phần mềm mô phỏng. Chuẩn bị dữ liệuSau khi bạn chọn traning mode thì hãy làm quen với việc di chuyển của ô tô bằng các phím mũi tên. Đến khi bạn lái mượt rồi thì chọn nút record. Chọn folder bạn muốn lưu dữ liệu và chọn select. Bạn lái xe khoảng 10 phút sẽ ra khoảng 18000 ảnh (6000 ảnh từ mỗi camera). Bạn cũng thấy file driving_log.csv để mô tả dữ liệu đường dẫn ảnh camera giữađường dẫn ảnh camera tráiđường dẫn ảnh camera phảigóc láiđộ giảm tốcphanhtốc độTiền xử lý dữ liệu (Preprocessing)Ảnh màu từ camera ở ô tô có kích thước 320*160 Để tăng lượng ảnh cho việc training, với các ảnh ở camera giữa ta dùng góc lái như trong file csv. Tuy nhiên với ảnh camera trái ta tăng góc lái lên 0.2 và ảnh camera phải ta giảm góc lái đi 0.2. Thêm vào đó ta có thể lật ngược ảnh lại và đổi dấu góc lái của bô lăng. Tiếp, ta có thể dịch chuyển ảnh hoặc thêm độ sáng tối cho ảnh và giữ nguyên góc lái
Quá trình thêm ảnh như trên gọi là data augmentation để tránh overfitting, hiểu đơn giản là khi luyện thi thay vì chỉ luyện kĩ 10 đề thì lên mạng tải thêm 100 đề nữa để làm và chữa chi tiết như vậy khi thi đại học thật điểm có thể sẽ tốt hơn vì làm nhiều đề và gặp nhiều dạng bài hơn. Phần mũi xe ô tô và bầu trời thì không liên quan đến việc dự đoán góc lái bô lăng nên ta sẽ cắt bỏ đi. Do dùng CNN, các ảnh input cần cùng kích thước nên sẽ reshape ảnh thành 66*200. Xây dựng modelNguồn:https://images.nvidia.com/content/tegra/automotive/images/2016/solutions/pdf/end-to-end-dl-using-px.pdf Input layer: Ảnh màu kích thước 66*200 Output layer: 1 node dự đoán góc lái của bô lăng Loss functionVì giá trị dự đoán là giá trị thực nên ta sẽ dùng mean square error giống như trong khi dự đoán giá nhà. Train modelView the code on Gist. Áp dụng model cho ô tô tự láiKhi ta bật chế độ autonomous mode trong phần mềm mô phỏng, ta sẽ dùng socket để lấy được dữ liệu từ camera giữa của ô tô sau đó dùng model để dự đoán góc lại. Cuối cùng ta sẽ chuyển lại dữ liệu về góc lái, tốc độ lại cho phần mềm để ô tô di chuyển. Code cụ thể trong file drive.py trong github nhưng đây là những phần quan trọng nhất
Đầu tiên các bạn mở phần mềm chọn autonomous mode, ô tô sẽ đứng yên. Sau đó mở command line chạy python drive.py model.h5 và ô tô sẽ bắt đầu tự lái. model.h5 là tên model mà bạn đã lưu ở bước trên. |