Sau đó, các kỹ thuật xử lý ảnh và xử lý tín hiệu truyền thống như Hough Transform, means và Kalman filter được áp dụng trên các phán đoán đầu tiên này để tăng hiệu quả nhận dạng phù hợp
TỔNG QUAN
Lý do chọn đề tài
Trong thời đại cách mạng công nghiệp 4.0 hiện nay, nền công nghiệp ô tô không còn mang khuynh hướng thuần cơ khí như trước đây nữa, mà nó đang chuyển hóa dần và có xu thế kết hợp với các lĩnh vực khác như điện, điện tử và khoa học máy tính Trong đó, thuật ngữ “AI” hay “trí tuệ nhân tạo” không còn quá xa lạ đối với chúng ta nữa, thậm chí, chúng ta vẫn luôn tiếp xúc với chúng hàng ngày, hàng giờ, chẳng hạn như các trợ lý ảo Siri hay Google Assistant trên các điện thoại thông minh Ngoài ra, nó còn được ứng dụng trong các mô hình nhà thông minh, trong các trò chơi điện tử, trong y tế hay trong quân sự,… mà đặc biệt, đối với những sinh viên “Ô tô” như chúng ta, không thể không nhắc đến cụm từ “xe tự lái”
Nhắc đến “xe tự lái”, chắc hẳn nhiều người cũng biết năm 2016, công ty Otto sở hữu bởi ber đã thành công trong việc vận chuyển 50.000 lon bia Budweisers bằng xe vận tải tự lái [14] Về lợi ích kinh tế, ứng dụng trí tuệ nhân tạo cho vận tải đường dài có thể giảm chi phí, ngoài ra còn giúp hạn chế tối đa những tai nạn chết người Công ty nghiên cứu và tư vấn công nghệ thông tin hàng đầu thế giới Gartner dự đoán, đến 2020, trên toàn cầu sẽ có 250 triệu chiếc xe kết nối với nhau thông qua hệ thống Wi-Fi [14], chúng sẽ tự "giao tiếp" để cho ra lộ trình tốt nhất
Hiện nay, việc ứng dụng công nghệ AI trong ngành học của chúng ta nói chung và trong công nghệ xe tự lái nói riêng vẫn đang được diễn ra trên khắp thế giới Nó mở ra một cơ hội đầy tiềm năng và thách thức đối với sinh viên “Ô tô” chúng ta Với mong muốn tham gia, tìm hiểu về lĩnh vực này nên nhóm quyết định chọn đề tài “Ứng dụng trí tuệ nhân tạo để phát triển hệ thống nhận diện và theo dõi làn đường cho xe tự lái” Thông qua đề tài, nhóm hi vọng sẽ đưa ra một cái nhìn khái quát về việc ứng dụng công nghệ AI trong ngành học của chúng ta và cũng góp phần tích lũy một lượng nhỏ kiến thức để làm hành trang hội nhập với nền công nghiệp ô tô thế giới cho sinh viên “Ô tô” chúng ta sau này.
Mục tiêu nghiên cứu
- Ứng dụng trí tuệ nhân tạo trong việc nhận diện làn đường
- Nâng cao độ chính xác và hiển thị trong việc phát hiện làn đường
- Theo dõi làn đường khắc phục những tình trạng mất làn tạm thời do ngoại cảnh khi chạy trên đường.
Nội dung nghiên cứu
- Nghiên cứu các kiến thức liên quan đến xử lý ảnh và các phần mềm hỗ trợ xử lý ảnh: Ubuntu, Python, OpenCV, Numpy,…
- Nghiên cứu về nền tảng, phương thức hoạt động của các hệ thống sử dụng trí tuệ nhân tạo
- Nghiên cứu về phương pháp nhận diện làn đường sử dụng mạng học sâu (deep learning framework) Cụ thể là mạng nơ-ron tích chập (Convolutional Neural Network (CNN))
- Sử dụng mạng đã được đào tạo sẵn để nhận diện làn đường
- Sử dụng các thuật toán để nâng cao nhận diện làn đường làn bằng các thuật toán như Hough Transform, K-means, Kalman filter,…
- Sử dụng Kalman filter để theo dõi làn đường
- Hiển thị nội dung nhận diện lên màn hình bằng hình ảnh lấy trực tiếp từ webcam.
Giới hạn đề tài
- Ở đề tài này nhóm sử dụng mạng học sâu đã được huấn luyện sẵn như là một bộ nhận diện thô sau đó đề xuất các phương pháp xử lý hậu kì để nâng cao hiệu quả của việc bắt và theo dõi làn đường ở nhiều thời gian và không gian khác nhau Nhóm không huấn luyện lại mạng vì hạn chế về dữ liệu và phần cứng
- Hệ thống vẫn chưa thể vận hành real-time được do bộ xử lý trung tâm chưa đủ mạnh để đáp ứng các bước xử lý hình ảnh và mạng học sâu.
Phạm vi ứng dụng
Đồ án này cho ta thấy một cái nhìn tổng quan trong việc ứng dụng công nghệ AI trong ngành công nghệ kỹ thuật ô tô ở phạm vi nhận biết lane đường, từ đó có thể cải tiến lên để cảnh báo người lái khi lệch khỏi lane đường hay cho xe tự hành không người lái chạy trên lane đường của mình
CƠ SỞ LÝ THUYẾT
Cơ sở lý thuyết về ảnh và xử lý ảnh
2.1.1 Cơ sở lý thuyết về ảnh
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính (số), ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng (mức xám) Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL: Picture Element) hay gọi tắt là Pixel và được thể hiện qua hình 2.1 Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y) Định nghĩa: Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh
2.1.1.2 Độ phân giải của ảnh Định nghĩa: Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị
Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân bố theo trục x và y trong không gian hai chiều
Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là một lưới điểm theo chiều ngang màn hình: 320 điểm chiều dọc * 200 điểm ảnh (320*200) Rõ ràng, cùng màn hình CGA 12” ta nhận thấy mịn hơn màn hình CGA 17” độ phân giải 320*200 Lý do: cùng một mật độ (độ phân giải) nhưng diện tích màn hình rộng hơn thì độ mịn (liên tục của các điểm) kém hơn Các độ phân giải thường dùng được thể hiện qua hình 2.2
Hình 2.2 Các độ phân giải của ảnh
Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và độ xám của nó Dưới đây chúng ta xem xét một số khái niệm và thuật ngữ thường dùng trong xử lý ảnh
2.1.1.3.1 Định nghĩa: Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số tại điểm đó
2.1.1.3.2 Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 là mức phổ dụng Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám: Mức xám dùng 1 byte biểu diễn: 28%6 mức, tức là từ 0 đến 255)
2.1.1.3.3 Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám ở các điểm ảnh có thể khác nhau
2.1.1.3.4 Ảnh nhị phân: ảnh chỉ có 2 mức đen trắng phân biệt tức dùng 1 bit mô tả 21 mức khác nhau Nói cách khác: mỗi điểm ảnh của ảnh nhị phân chỉ có thể là 0 hoặc 1
2.1.1.3.5 Ảnh màu: trong khuôn khổ lý thuyết ba màu (Red, Blue, Green) để tạo nên thế giới màu, người ta thường dùng 3 byte để mô tả mức màu, khi đó các giá trị màu: 28*3"4≈ 16,7 triệu màu
Tổ chức quốc tế về chuẩn hóa màu CIE (Commission Internationale d’Eclairage) đưa ra một số chuẩn để biểu diễn màu Các hệ này có các chuẩn riêng Hệ chuẩn màu CIE-RGB dùng 3 màu cơ bản R, G, B và ký hiệu RGBCIE để phân biệt với các chuẩn khác Như đã nêu trên, một màu là tổ hợp của các màu cơ bản theo một tỷ lệ nào đó Như vậy, mỗi pixel ảnh màu ký hiệu Px, được viết: (T: trong công thức dướ đây là ký hiệu chuyển vị)
P x = [red,green,blue] T [2.1] Người ta dùng hệ tọa độ ba màu R-G-B (tương ứng với hệ tọa độ x-y-z) để biểu diễn màu như sau:
Hình 2.3 Hệ tọa độ RGB
Trong cách biểu diễn này ta có công thức: đỏ + lục + lơ = 1 [2.2]
Công thức này gọi là công thức Maxwell Trong hình trên, tam giác tạo bởi ba đường đứt đoạn gọi là tam giác Maxwell Màu trắng trong hệ tọa độ này được tính bởi: trắng CIE = (đỏ CIE + lục CIE + lơ CIE ) = 1 [2.3]
Không gian màu HSV như hình 2.4 là không gian màu được dùng nhiều trong việc chỉnh sữa ảnh, phân tích ảnh và một phần của lĩnh vực thị giác máy tính Hệ không gian này dựa vào ba thông số sau để mô tả màu sắc:
- H viết tắt của từ H E có nghĩa là vùng màu
- S Viết tắt của từ SATURATION có nghĩa là độ bảo hòa màu
- V viết tắt của chữ VAL E có nghĩ là giá trị hay độ sáng của màu sắc
Hình 2.4 Không gian màu HSV và vòng tròn biểu diễn màu sắc (HUE)
Theo đó, đi theo vòng tròn từ 0 -360 độ là trường biểu diễn màu sắc (Hue) Trường này bắt đầu từ màu đỏ đầu tiên (red primary) tới màu xanh lục đầu tiên (green primary) nằm trong khoảng 0-120 độ, từ 120 - 240 độ là màu xanh lục tới xanh lơ (green primary - blue primary) Từ 240 - 360 là từ màu đen tới lại màu đỏ
Theo như cách biểu diễn không gian màu theo hình trụ như trên, đi từ giá trị độ sáng (V) được biểu diễn bằng cách đi từ dưới đáy hình trụ lên và nằm trong khoảng từ 0 -1 Ở đáy hình trụ V có giá trị là 0, là tối nhất và trên đỉnh hình trụ là độ sáng lớn nhất (V
= 1) Đi từ tâm hình trụ ra mặt trụ là giá trị bão hòa của màu sắc (S) S có giá trị từ 0 - 1
0 ứng với tâm hình trụ là chỗ mà màu sắc là nhạt nhất S = 1 ở ngoài mặt trụ, là nơi mà giá trị màu sắc là đậm đặc nhất
Như vậy với mỗi giá trị (H, S, V) sẽ cho ta một màu sắc mà ở đó mô tả đầy đủ thông tin về máu sắc, độ đậm đặc và độ sáng của màu đó
CMYK là không gian màu được sử dụng phổ biến trong ngành công nghiệp in ấn.Ý tưởng cơ bản của hệ không gian này là dùng 4 màu sắc cơ bản để phục vụ cho việc pha trộn mực in Trên thực tế, người ta dùng 3 màu là C (Cyan): xanh lơ, M (Magenta): hồng xẫm, và Y (Yellow): vàng để biểu diễn các màu sắc khác nhau Nếu lấy màu hồng xẫm cộng với vàng sẽ ra màu đỏ, màu xẫm kết hợp với xanh lơ sẽ cho xanh lam Sự kết hợp của 3 màu trên sẽ cho ra màu đen, tuy nhiên màu đen ở đây khôn phải là đen tuyệt đối và thường có độ tương phản lớn, nên trong ngành in, để tiết kiệm mực in người ta
8 thêm vào màu đen để in những chi tiết có màu đen thay vì phải kết hợp 3 màu sắc trên
Và như vậy ta có hệ màu CMYK như hình 2.5, chữ K ở đây là để kí hiệu màu đen (Black)
Hình 2.5 Không gian màu CMYK
Nguyên lý làm việc của hệ màu này như sau : Trên một nền giấy trắng, khi mỗi màu này được in lên sẽ loại bỏ dần đi thành phần màu trắng 3 màu C, M, Y khác nhau in theo những tỉ lệ khác nhau sẽ loại bỏ đi thành phần đó một cách khác nhau và cuối cùng cho ta màu sắc cần in Khi cần in màu đen, thay vì phải in cả 3 màu người ta dùng màu đen để in lên Nguyên lý này khác với nguyên lý làm việc của hệ RGB ở chỗ hệ RGB là sự kết hợp của các thành phần màu, còn hệ CMYK là sự loại bỏ lẫn nhau của các thành phần màu
2.1.1.5 Định nghĩa ảnh số Ảnh số là tập hợp các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật
Mạng nơron tích chập – Convolutional Neural Network (CNN)
2.2.1 Thị giác máy tính (Computer vision)
Nhìn vào một bức ảnh, một người với thị giác bình thường có thể dễ dàng mô tả nội dung, nhận biết và phát hiện các đối tượng được thể hiện trong bức ảnh cũng như vị trí chính xác của chúng Tuy nhiên, việc này (đọc và hiểu một bức ảnh) khó khăn hơn nhiều đối với máy tính khi “nó” “nhìn” mỗi bức ảnh chỉ đơn thuần là một ma trận số (tập hợp các điểm ảnh - pixel biểu diễn dưới dạng số theo một hệ cụ thể thường là RGB (Red
- Green - Blue) Mục tiêu chính của thị giác máy tính – một nhánh của trí tuệ nhân tạo (Artificial Intelligence) là tìm ra đầu nối giữ ma trận số này và thông tin ngữ nghĩa chứa trong ảnh Thị giác máy tính tập trung giải quyết những bài toán như:
- Phân loại ảnh, miêu tả ảnh,
- Phát hiện vật thể trong ảnh: Xe, con người, đèn giao thông, lan đường,…
- Tạo ảnh với những phong cách khác nhau: Hiển thị nội dung ngữ nghĩa của ảnh gốc theo những phong cách khác nhau
Mạng Nơ-ron truyền thống (Neural Network) hoạt động không thực sự hiệu quả với dữ liệu đầu vào là hình ảnh Nếu coi mỗi điểm ảnh là một thuộc tính (feature), một ảnh RBG kích thước (64×64) có 12288(d×64×3) thuộc tính Nếu kích thước ảnh tăng lên 1000×10000, chúng ta có 3 triệu thuộc tính cho mỗi ảnh đầu vào Nếu sử dụng mạng liên kết đầy đủ (fully connected NN) và giả sử lớp thứ 2 thành phần (units/ neurons), ma trận trọng số sẽ có kích thước 1000×3M tương đương với 3 tỉ trọng số cần huấn luyện Điều này yêu cầu khối lượng tính toán cực lớn và thường dẫn đến không nhận diện được (overfitting) do không đủ dữ liệu huấn luyện
2.2.2 Mạng nơ ron tích chập (CNN hay ConvNet)
CNN là mạng nơ-ron phổ biến nhất được dùng cho dữ liệu ảnh, bên cạnh các lớp liên kết đầy đủ (FC layers), CNN còn đi cùng một số lớp ẩn đặc biệt giúp phát hiện và trích xuất những đặc trưng – chi tiết (patterns) xuất hiện trong ảnh gọi là lớp tích chập (Convolutional Layers) Chính những lớp tích chập này làm CNN trở nên khác biệt so với những lớp truyền thống và hoạt động cực kỳ hiệu quả trong bài toán phân tích ảnh
2.2.2.1 Lớp tích chập (Convolutional layer)
Lớp tích chập dùng để phát hiện và trích xuất những đặc trưng chi tiết ảnh
Giống như các lớp ẩn khác, lớp tích chập lấy dữ liệu đầu vào, thực hiện các phép chuyển đổi để tạo ra dữ liệu đầu vào cho lớp kế tiếp (đầu ra của lớp này là đầu vào của lớp sau) Phép biến đổi được sử dụng là phép tính tích chập Mỗi lớp tích chập chứa một hoặc nhiều bộ lọc - bộ phát hiện đặc trưng (filter - feature detector) cho phép phát hiện và trích xuất những đặc trưng khác nhau của ảnh
Bộ lọc ở lớp tích chập càng sâu thì cảng phát hiện các đặc trưng càng phức tạp Độ phức tạp của đặc trưng được phát hiện bởi bộ lọc tỉ lệ thuận với độ sâu của lớp tích chập mà nó thuộc về Trong mạng CNN, những lớp tích chập đầu tiên sử dụng bộ lọc hình học (geometric filters) để phát hiện những đặc trưng đơn giản như cạnh ngang, dọc, chéo của bức ảnh Những lớp tích chập sau đó được dùng để phát hiện đối tượng nhỏ, bán hoàn chỉnh như mắt, mũi, tóc, v.v Những lớp tích chập sâu nhất dùng để phát hiện đối tượng hoàn hỉnh như: chó, mèo, chim, ô tô, đèn giao thông, làn đường v.v Để hiểu cách thức hoạt động của lớp tích chập cũng như phép tính tích chập, hãy cùng xem ví dụ về bộ lọc phát hiện cạnh (edge filters/ detectors) dưới đây Đầu vào là những bức ảnh trắng đen (Gray Scale) và được biểu diễn bởi một ma trận các điểm ảnh với kích thước cố định h×w Giả sử lớp tích chập đầu tiên của CNN sử dụng 4 bộ lọc kích thước 3×3: F1, F2, F3, F4 với giá trị tương ứng như trong hình dưới Các giá trị tại mỗi ô của các bộ lọc có thể được biểu diễn bởi màu sắc tương ứng với Đen (−1), Xám (0), Trắng (1) như trong hình dưới đây
Hình 2.11 Bộ lọc được sử dụng trong lớp tích chập đ u tiên là các ma trận ích thước
Hình 2.12 Nhân bộ lọc k với ma trận đ u vào I
I là mà trận đầu vào có kích thước 7x7, bộ lọc k (kernel) có kích thước 3x3 Đầu ra sẽ là một ma trận có kích thước 5x5 sinh ra từ việc nhân ma trận I với K
Lấy ví dụ với ma trận đầu vào kích thước 6×6 Nếu ta nhân chập với bộ lọc kích thước 3×3, kết quả thu được là một ma trận đầu ra kích thước 4×4 vì chỉ có 4×4 vị trí trên
20 ma trận đầu vào để đặt ma trận lọc Tổng quát hoá, nếu ta nhân chập ma trận đầu vào kích thước n×n với bộ lọc kích thước f×f, ta thu được kết quả là một ma trận kích thước (n−f+1)×(n−f+1) Mỗi một lần áp dụng phép nhân chập, kích thước của ảnh bị giảm xuống, và vì thế chúng ta chỉ có thể thực hiện nó một vài lần trước khi ảnh trở nên quá nhỏ Điểm ảnh ở khoảng trung tâm của ma trận đầu vào được bao phủ bởi rất nhiều vùng 3×3 nghĩa là được sử dụng để tính nhiều giá trị đầu ra, trong khi những điểm ảnh ở góc hoặc cạnh chỉ được sử dụng 1 hoặc 2 lần vì chỉ bị bao phủ bởi 1 hoặc 2 vùng 3×3 Vì thế chúng ta đánh mất rất nhiều thông tin (có thể quan trọng) tại các vùng gần cạnh của ảnh
Hình 2.13 Ma trận đ u à được bao quanh bởi đường viền phụ ích thước p (giá trị 0) Để khắc phục hai nhược điểm trên, một đường viền phụ (padding) được thêm vào xung quanh ma trận đầu Việc thêm đường viền phụ làm tăng kích thước của ma trận đầu vào, dẫn tới tăng kích thước ma trận đầu ra Từ đó độ chênh lệch giữa ma trận đầu ra với ma trận đầu vào gốc giảm Những ô nằm trên cạnh góc của ma trận đầu vào gốc cũng lùi sâu vào bên trong hơn, dẫn tới được sử dụng nhiều hơn trong việc tính toán ma trận đầu ra, tránh được việc mất mát thông tin
Trong hình trên, ma trận đầu vào kích thước 6×6 được thêm vào đường viền phụ kích thước 1 (p=1), trở thành ma trận 8×8 Khi nhân chập ma trận này với bộ lọc 3×3, chúng ta thu được ma trận đầu ra 6×66 Kích thước của ma trận đầu vào (gốc) được duy trì Những điểm ảnh nằm ở cạnh của ma trận đầu vào gốc được sử dụng nhiều lần hơn (4 lần với những điểm ảnh ở góc)
Theo quy ước, các ô trên đường viền phụ có giá trị bằng không, p là kích thước của đường viền phụ Trong hầu hết các trường hợp, đường viền phụ đổi xứng trái-phải, trên-dưới so với ma trận gốc, vì thế kích thước của ma trận đầu vào được tăng lên 2p mỗi chiều Ma trận đầu ra do đó có kích thước (n+2p−f+1)×(n+2p−f+1)
Tuỳ theo giá trị của p, chúng ta có hai trường hợp chính:
- Nhân chập không dùng đường viền phụ (valid convolution) - NO padding: (n×n)∗(f×f)=>(n−f+1)×(n−f+1)
- Nhân chập không làm thay đổi kích thước đầu vào (same convolution): Kích thước đường viền phụ được tính theo công thức: n+2p−f+1=n=>p=(f−1)/2
Theo quy ước, kích thước bộ lọc f là số lẽ vì 2 lý do chính sau:
- Nếu f là số chẵn, chúng ta phải thêm vào bên trái của ma trận đầu vào nhiều hơn bên phải (hoặc ngược lại), việc này dẫn tới hệ đầu vào không đối xứng (asymetric)
- Nếu f là số lẻ, ma trận đầu vào có một điểm ảnh ở trung tâm Trong lĩnh vực thị giác máy tính, việc có một nhân tố khác biệt (distinguisher) - một điểm đại diện cho vị trí của bộ lọc thường mang lại hiệu năng cao cho bài toán
2.2.2.3 Nhân chập sải (strided convolutions)
Trong phép nhân chập ở trên, bộ lọc trượt trên ma trận đầu vào 1 hàng/ cột trong mỗi bước di chuyển Tuy nhiên, giá trị này có thể bằng 2, 3 hoặc lớn hơn Số hàng/ cột mà bộ lọc trượt qua trong một bước di chuyển ký hiện là s Kích thước ma trận đầu ra lúc này được tính bởi:
( +1, +1) Nếu không chia hết cho s, chúng ta lấy chặn dưới như trong hình minh hoạ dưới đây
Hình 2.14 Nhân chập với bước sải s=2
2.2.3.1 Phép chập khối với một bộ lọc
SƠ LƯỢC PHẦN CỨNG VÀ PHẦN MỀM
Sơ lược về phần cứng
3.1.1 Xây dựng cấu hình máy tính phục vụ đồ án
Hình 3.1 Cấu hình máy tính
Cấu hình máy tính được sử dụng trong đề tài được thể hiện trong hình 3.1 Điểm mạnh của cấu hình này chính là CP i7- 4790 gồm 8 nhân với xung nhịp 4.0 GHz và Card đồ họa Nvidia GTX 970 với 1664 nhân Cuda điều rất cần thiết đối với việc nhận diện lane theo thời gian thực Tuy nhiên, cộng đồng DeepLearning không ưa chuộng loại card đồ họa này vì sự tương thích về trình điều khiển của card đồ họa đối với các nền tảng DeepLearning hiện hành Do đó, chúng em gặp không ít khó khăn trong việc thiết lập môi trường lập trình cho đồ án này
Camera sử dụng trong đồ án này là GoPro Hero 5 Black như hình 3.2
Camera với các tính năng nổi trội như:
- Người dùng có thể lựa chọn độ phân giải mong muốn để phù hợp với mục đích của mình
- Chống thâm nước với độ sâu lên đến 10m
- Giám sát và có thể điều khiển từ xa thông qua kết nối wifi
- Có chế độ WDR Mode: Với chế độ này sẽ giúp thu hẹp khoảng cách chất lượng giữa hình ảnh JPEG và RAW Nếu cảnh có bóng tối hoặc ánh sáng nổi bật, thì với chế độ WDR giúp giữ lại hình ảnh sắc nét và chi tiết.
Sơ lược về phần mềm
Ubuntu là hệ điều hành máy tính dựa trên Debian GNU/Linux, một bản phân phối Linux thông dụng Mục đích của Ubuntu là cung cấp một hệ điều hành ổn định, cập nhật cho người dùng thường, tập trung vào sự tiện dụng và dễ dàng cài đặt buntu được đánh xếp hạng là bản phân phối Linux thông dụng nhất cho máy tính để bàn, chiếm khoảng 30% số bản Linux được cài đặt trên máy tính để bàn năm 2007
Ubuntu là phần mềm mã nguồn mở tự do, người dùng được tự do chạy, sao chép,
31 phân phối, nghiên cứu, thay đổi và cải tiến phần mềm theo điều khoản của giấy phép
GN GPL buntu được cung cấp hoàn toàn miễn phí và được tài trợ bởi Canonical Ltd (chủ sở hữu là một người Nam Phi Mark Shuttleworth) [15]
Hình 3.3 Biểu tượng và giao diện hệ điều hành Ubuntu
Python là ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object – oriented) và là một ngôn ngữ bậc cao (high – level) ngữ nghĩa động (dynamic semantics) Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã Trình thông dịch python và thư viện chuẩn mở rộng dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do
Python dễ dàng kết nối với các thành phần khác: Python có thể kết nối với các đối tượng COM, NET (Ironpython, Python for net), và CORBA, Java,… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác Có thể viết thư viện trên C/C++ để nhúng vào python và ngược lại
Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng Python có cho mọi hệ điều hành: Windown, Linux/Unix, OS/2, Mac, Amiga và nhiều hệ điều hành khác Thậm chí có cho những phiên bản chạy trên NET, máy ảo Java và điện thoại di động (Nokia Series 60) Với cùng một mã nguồn sẽ chạy giống nhau trên một nền tảng
Python có cộng đồng lập trình rất lớn, hệ thống thư viện chuẩn và cả các thư viện mã nguồn mở được chia sẽ trên mạng Python là ngôn ngữ mã nguồn mở: Cài đặ python
32 dùng giấy phép nguồn mở nên được sử dụng và phân phối tự do, ngay cả trong việc thương mại Giấy phép python được quản lý bởi Python Software Foundation
Python được cài đặt sẵn trên abuntu 16.04 [16]
Anaconda là nền tảng mã nguồn mở về Khoa học dữ liệu trên Python thông dụng nhất hiện nay Anaconda Với hơn 11 triệu người dùng, Anaconda là cách nhanh nhất và dễ nhất để học Khoa học dữ liệu, quản lý hói nguồn mở, quản lý môi trường và phân phối các ngôn ngữ lập trình với Python và R trên Windows, Linux và Mac OS X Lợi ích của Anaconda:
- Dễ dàng tải 1500+ packages về Python/R cho data science
- Quản lý thư viện, môi trường và dependency giữa các thư viện dễ dàng
- Dễ dàng phát triển mô hình machine learning và deep learning với scikit-learn, tensorflow, keras
- Xử lý dữ liệu tốc độ cao với numpy, pandas
- Hiển thị kết quả với Matplotlib, Bokeh [17]
CUDA (Compute Unified Device Architecture - Kiến trúc thiết bị tính toán hợp nhất) là một kiến trúc tính toán song song do NVIDIA phát triển Nói một cách ngắn gọn,
C DA là động cơ tính toán trong các GP (Graphics Processing nit - Đơn vị xử lý đồ họa) của NVIDIA, nhưng lập trình viên có thể sử dụng nó thông qua các ngôn ngữ lập trình phổ biến Lập trình viên dùng ngôn ngữ C for C DA, dùng trình biên dịch PathScale Open64 C, để cài đặt các thuật toán chạy trên GP Kiến trúc C DA hỗ trợ mọi chức năng tính toán thông qua ngôn ngữ C Các bên thứ ba cũng đã phát triển để hỗ trợ C DA trong Python, Fortran, Java và MATLAB
C DA cho phép các nhà phát triển truy nhập vào tập các chỉ lệnh ảo và bộ nhớ của các phần tử tính toán song song trong đơn vị xử lý đồ họa của C DA (C DA GP )
Sử dụng C DA, các GP mới nhất do NVIDIA sản xuất có thể dễ dàng thực hiện các tính toán như những CPU Tuy nhiên, không giống như các CP , các GP có kiến trúc song song trên toàn bộ giúp cho sự tập trung vào khả năng thực thi một cách chậm rãi nhiều luồng dữ liệu một lúc, hơn là thực thi rất nhanh một luồng dữ liệu Cách tiếp cận giải quyết các vấn đề có mục đích tổng quát này trên các GP được gọi là GPGPU
Việc tạo môi trường Cuda là để kích hoạt xử lý ảnh bằng card đồ họa, điều này giúp cho việc xử lý ảnh diễn ra nhanh hơn rất nhiều so với xử lý bằng CP [18]
CuDNN (the NVIDIA CUDA® Deep Neural Network library) là thư viện nguyên thủy được sử dụng để tăng tốc độ GP cho các deep neural networks CuDNN cung cấp các điều chỉnh cao cho những thói quen tiêu chuẩn như tính chập tiến và lùi, gộp chung, chuẩn hóa và kích hoạt các lớp trên neural networks
Các nhà nghiên cứu về deep learning và các nhà phát triển framework trên thế giới thường dựa vào cuDNN để tăng tốc độ GP đạt hiệu suất cao Nó cho phép họ tập trung vào việc đào tạo các mạng thần kinh (neural networks) và phát triển các ứng dụng phần mềm thay vì dành thời gian cho việc điều chỉnh hiệu suất GP cấp thấp cuDNN tăng tốc các deep learning frameworks được sử dụng rộng rãi, bao gồm Caffe, Caffe2, Chainer, Keras, MATLAB, MxNet, TensorFlow và PyTorch Để truy cập vào các deep learning frameworks được tối ưu hóa của NVIDIA cần phải tích hợp cuDNN vào các frameworks
TensorFlow còn được gọi là Google TensorFlow, là một thư viện phần mềm miễn phí tập trung vào học máy do Google tạo ra Ban đầu được phát hành như một phần của giấy phép nguồn mở Apache 2.0, TensorFlow ban đầu được phát triển bởi các kỹ sư và nhà nghiên cứu của Google Brain Team, chủ yếu để sử dụng nội bộ TensorFlow được coi là sự kế thừa của ứng dụng nguồn đóng DistBelief và hiện được Google sử dụng cho mục đích nghiên cứu và sản xuất TensorFlow là dự án được triển khai nghiêm túc đầu tiên tập trung vào học tập sâu (deep learning)