Chương 1: Giới thiệu Chương này trình bày về giới thiệu đề tài, tình hình nghiên cứu, mục tiêu đề tài, giới hạn đề tài và bố cục đồ án. Chương 2: Cơ sở lý thuyết Chương này giới thiệu về các nền tảng vận hành, các khái niệm và phương pháp được sử dụng trong thuật toán từ các lĩnh vực như xử lý ảnh, máy học, học sâu. Bên cạnh đó là giải thuật để điều khiển mô hình ổn định. Chương 3: Giới thiệu phần cứng Chương này cung cấp cách nhìn tổng quan về phần cứng của mô hình bao gồm các linh kiện quan trọng, các cảm biến được trang bị và đặc biệt là bộ não xử lý.
Chương 4: Thiết kế phần mềm Chương này trình bày các bước đi tìm cách giải quyết vấn đề và mục tiêu đề ra. Phương pháp được mô tả từ tổng quan đến chi tiết các giải thuật bên trong. Chương 5: Kết quả thực hiện, so sánh và đánh giá Chương này trình bày về những thực nghiệm bao gồm môi trường, cách thu thập dữ liệu, các thông số được thiết lập ban đầu. Bên cạnh đó là những kết quả nhóm đạt được, từ đó so sánh và đánh giá phương pháp của nhóm.
Luan van Chương 6: Kết luận và hướng phát triển Chương này đưa ra kết luận đề tài và hướng phát triển tiếp theo. Tài liệu tham khảo Dẫn chứng nguồn tài liệu tham khảo trong đề tài. Luan van CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. THƯ VIỆN PYTORCH [15] PyTorch là một thư viện dựa trên ngôn ngữ lập trình python, nó hỗ trợ tạo ra các mô hình học sâu và sử dụng chúng cho các ứng dụng khác nhau.
PyTorch tương tự như Python, nó được thiết kế tập trung vào tính dễ sử dụng và thậm chí người dùng có kiến thức lập trình rất cơ bản cũng có thể sử dụng nó trong các dự án liên quan đến học sâu. Cấu trúc dữ liệu cốt lõi được sử dụng trong PyTorch là Tensor. Tương tự như numpy array, Tensor là một mảng một chiều với các phần tử có cùng kiểu dữ liệu. Hình dưới đây mô tả một quy trình cơ bản của: Hình 2.
1 Workflow của PyTorch [15] Trong đó có các mô-đun cơ bản thường gặp là torch.utils và torch. Bước đầu tiên của một dự án nào về học sâu đều phải qua việc tải và xử lý dữ liệu. Vì thế PyTorch đã hỗ trợ các tiện ích để thực hiện bước này với các mô-đun torch. Hai thư viện quan trọng trong mô-dun này là Dataset và DataLoader.
Dataset được xây dựng trên nền kiểu dữ liệu Tensor và được sử dụng chủ yếu cho các bộ dữ liệu tùy chỉnh, DataLoader được sử dụng khi bạn có một tập dữ liệu lớn và bạn Luan van muốn tải dữ liệu từ Dataset ở chế độ nền để nó sẵn sàng và chờ sử dụng cho quá trình training loop. Ngoài ra chúng ta cũng có thể dùng torch.DataParallel và torch.distribution trong trường hợp có thể sử dụng song song nhiều máy tính hoặc nhiều GPUs. Trong đó có mô-đun torch.nn được sử dụng để tạo ra mạng thần kinh (NN). Nó cung cấp tất các lớp NN phổ biến như các lớp “fully connected” (FN), “convolution”, các hàm kích hoạt và hàm mất mát, … Một khi kiến trúc mạng đã được tạo ra và dữ liệu đã sẵn sàng để được đưa vào mạng, chúng ta sẽ cần các kỹ thuật để cập nhật các trọng số (weights) và độ lệch (biases) để mạng tiến hành quá trình huấn luyện.
Các tiện ích còn được cung cấp trong mô-đun torch. Còn để tính gradient tự động, chúng ta sử dụng mô-đun torch. Sau khi mô hình đã được huấn luyện, nó có thể được sử dụng để dự đoán ngõ ra cho các bộ dữ liệu thử nghiệm hoặc thậm chí các bộ dữ liệu mới. Quá trình này được gọi là “model inference”.
PyTorch còn chung cấp TorchScript có thể được sử dụng để chạy các mô hình độc lập với “Python runtime”. Đây có thể được coi là một máy ảo được thiết kế chủ yếu dành riêng cho việc thao tác với Tensors. Chúng ta cũng có thể chuyển mô hình được huấn luyện bằng PyTorch sang các định dạng như ONNX, cho phép sử dụng các mô hình này trong các “Deep leaning framework” khác như MXNet, CNTK, Caffe2. Chúng ta cũng có thể chuyển đổi các mô hình ONNX sang Tensorflow.
Các khái niệm cơ bản trong xử lý ảnh [16] Ảnh số là một tập hợp của nhiều điểm ảnh, hay còn gọi là pixel. Mỗi điểm ảnh biểu diễn một màu sắc nhất định (hay độ sáng với ảnh đen trắng) tại một điểm duy nhất, có thể xem một điểm ảnh giống như một chấm nhỏ trong một tấm ảnh màu. Bằng phương pháp đo lường và thống kê một lượng lớn các điểm ảnh, chúng ta hoàn toàn có thể tái cấu trúc các điểm ảnh này thành một ảnh mới gần giống với ảnh gốc. Có thể nói pixel gần giống như các phần tử có cấu trúc hạt trên một ảnh thông thường nhưng được sắp xếp theo từng hàng và cột và chứa các thông tin khác nhau.
Ảnh được biểu diễn dưới dạng một ma trận hai chiều với các pixel được xác định bởi Luan van cặp tọa độ (x, y), trong đó, giá trị của pixel tại tọa độ nhất định biểu diễn độ sáng (ảnh đen trắng) hay màu nhất định (ảnh màu). Mỗi điểm ảnh tương ứng với một phần của một đối tượng vật lý trong thế giới ba chiều. Đối tượng này được mô tả bởi một vài nguồn sáng mà trong đó chúng được phản chiếu một phần và hấp thụ một phần bởi vật thể. Phần phản chiếu có thể thu được bằng các cảm biến để mô tả lại khung cảnh tương ứng và nó được ghi lại như là đặc trưng của điểm ảnh, hay nói cách khác, các giá trị này phụ thuộc vào từng loại cảm biến được dùng để phản ánh khung cảnh từ nguồn sáng phản chiếu.
Có 2 dạng quan trọng trong ảnh số được dùng với nhiều mục đích khác nhau là ảnh màu và ảnh đen trắng (hay còn gọi là ảnh xám). Trong đó, ảnh màu được cấu trúc từ các pixel màu trong khi ảnh đen trắng được xây dựng từ các pixel có giá trị mức xám khác nhau. Ảnh đen trắng: với một ảnh đen trắng được xây dựng từ nhiều pixel mà tại đó biểu diễn một giá trị nhất định tương ứng với một mức xám. Những mức xám này trải dài trong một khoảng từ đen sang trắng với bước nhảy rất mịn, thông thường là 256 mức xám khác nhau theo tiêu chuẩn.
Do mắt người chỉ có thể phân biệt một cách rõ ràng với khoảng 200 mức xám khác nhau nên vì thế hoàn toàn có thể nhận xét sự thay đổi liên tục các mức xám. Ảnh màu: một ảnh màu thường được tạo thành từ nhiều pixel mà trong đó mỗi pixel được biểu diễn bởi ba giá trị tương ứng với các mức trong các kênh màu đỏ (Red), xanh lá (Green) và xanh dương (Blue) tại một vị trí cụ thể. Các kênh màu Red, Green và Blue (trong không gian màu RGB) là những màu cơ bản mà từ đó có thể tạo ra các màu khác nhau bằng phương pháp pha trộn. Với việc chuẩn hóa 256 (28) mức cho từng kênh màu chính, từ đó có thể thấy một pixel màu có thể biểu diễn được một trong (28) 3 =16777216 màu khác nhau.
Từ đó có thể thấy rằng với 1-pixel thì chỉ cần 1-byte cho việc lưu trữ đối với ảnh đen trắng và 3 bytes đối với ảnh màu. Ảnh nhị phân: chỉ sử dụng duy nhất một bit để biểu diễn một pixel. Do một bit chỉ có thể xác lập hai trạng thái là đóng và mở hay 1 và 0 tương ứng với hai màu là đen và trắng. Do đặc trưng trên mà ảnh nhị phân ít khi được sử dụng trong thực tế.
Ảnh chỉ số: một vài ảnh màu (hay đen trắng) được tạo thành từ một bảng màu có sẵn bị giới hạn, điển hình thường dùng là tập 256 màu khác nhau. Những ảnh này được gọi là ảnh màu chỉ số hóa do dữ liệu dành cho mỗi pixel bao gồm chỉ số có sẵn chỉ rõ Luan van màu trong tập có sẵn ứng với pixel đang xem xét. Phát hiện cạnh Canny: là một trong những phương pháp phát hiện biên được sử dụng để tìm tất cả các điểm cạnh trong hình ảnh và đầu ra là một bản đồ nhị phân. Canny sử dụng một gradient trên hình ảnh để tìm những thay đổi mạnh về cường độ pixel.
Đây là những đường nét có khả năng là đường viền trong hình ảnh đầu vào. Đầu ra sẽ là một ảnh nhị phân cho thấy những đường nét của hình. Trong thuật toán Canny, các đạo hàm bậc một được tính theo x và y và sao đó kết hợp thành bốn đạo hàm hướng. Các điểm nơi những đạo hàm hướng này là cực trị địa phương sau đó là các ứng viên cho tập hợp thành các cạnh.
Trong đồ án này sử dụng Canny để phát hiện ranh giới làn đường trong khung hình. Việc phát hiện cạnh cơ bản sử dụng vector gradient của một hình ảnh cường độ để phát hiện ranh giới làn đường có độ tương phản cao trong ảnh. Đây là một trong những phương pháp tốt nhất và hiệu quả trong nhiều phương pháp phát hiện biên. 2 Hình tách biên sử dụng Canny Contour: có thể được giải thích đơn giản là một đường cong nối tất cả các điểm liên tục (dọc theo đường biên), có cùng màu hoặc cường độ.
Các contour là một công cụ hữu ích để phân tích hình dạng và phát hiện và nhận dạng đối tượng. Contour tracking là một trong nhiều kỹ thuật tiền xử lý được thực hiện trên hình ảnh kỹ thuật số để trích xuất thông tin về hình dạng chung của chúng. Khi contour của một mẫu nhất định được trích xuất, các đặc điểm khác nhau của nó sẽ được kiểm tra và sử dụng làm các tính năng mà sau này sẽ được sử dụng trong phân loại mẫu. Do đó, việc tính toán contour tracking sẽ tạo ra các tính năng chính xác hơn, điều này sẽ tăng cơ hội phân loại chính xác một mẫu nhất định.
Biến đổi Hough [17] Biến đổi Hough là một kỹ thuật trích xuất đặc trưng được sử dụng trong phân tích hình ảnh, thị giác máy tính và xử lý hình ảnh kỹ thuật số. Mục đích của kỹ thuật là tìm các trường hợp không hoàn hảo của các đối tượng trong một lớp hình dạng nhất định bằng một thủ tục chọn lọc. Quy trình chọn lọc này được thực hiện trong một không gian tham số, từ đó đối tượng cần được chọn lọc ra được lấy làm cực đại cục bộ trong một không gian được gọi là không gian tích lũy được thuật toán xây dựng rõ ràng để tính toán biến đổi Hough.