TỔNG QUAN
Lý do chọn đề tài
Trong thời đại công nghiệp 4.0, ngành công nghiệp ô tô đang chuyển mình từ cơ khí thuần túy sang sự kết hợp với điện, điện tử và khoa học máy tính Thuật ngữ “trí tuệ nhân tạo” (AI) đã trở nên quen thuộc trong cuộc sống hàng ngày, thể hiện qua các trợ lý ảo như Siri và Google Assistant AI cũng được ứng dụng trong nhiều lĩnh vực như nhà thông minh, trò chơi điện tử, y tế và quân sự Đặc biệt, đối với sinh viên ngành ô tô, khái niệm “xe tự lái” ngày càng trở nên quan trọng và thú vị.
Xe tự lái đã chứng minh tiềm năng của mình khi công ty Otto, thuộc sở hữu của Uber, vận chuyển thành công 50.000 lon bia Budweiser vào năm 2016 Việc ứng dụng trí tuệ nhân tạo trong vận tải đường dài không chỉ giúp giảm chi phí mà còn hạn chế tai nạn giao thông nghiêm trọng Theo dự đoán của Gartner, đến năm 2020, sẽ có 250 triệu xe kết nối toàn cầu thông qua hệ thống Wi-Fi, cho phép chúng tự giao tiếp để tối ưu hóa lộ trình di chuyển.
Hiện nay, công nghệ AI đang được ứng dụng rộng rãi trong ngành ô tô, đặc biệt là trong công nghệ xe tự lái, mở ra nhiều cơ hội và thách thức cho sinh viên Nhóm chúng tôi đã 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” nhằm tìm hiểu và tham gia vào lĩnh vực này Qua đề tài, nhóm hy vọng cung cấp cái nhìn tổng quan về ứng dụng công nghệ AI trong ngành ô tô, đồng thời tích lũy kiến thức cần thiết để chuẩn bị cho sự nghiệp trong ngành công nghiệp ô tô toàn cầu.
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
Nhóm nghiên cứu đã áp dụng mạng học sâu đã được huấn luyện sẵn như một bộ nhận diện thô, đồng thời đề xuất các phương pháp xử lý hậu kỳ nhằm nâng cao hiệu quả trong việc bắt và theo dõi làn đường ở nhiều thời gian và không gian khác nhau Việc không huấn luyện lại mạng được thực hiện do hạn chế về dữ liệu và phần cứng.
Hệ thống vẫn chưa hoạt động theo thời gian thực do bộ xử lý trung tâm chưa đủ mạnh để xử lý hình ảnh và mạng học sâu hiệu quả.
Phạm vi ứng dụng
Đồ án này cung cấp cái nhìn tổng quan về ứng dụng công nghệ AI trong ngành công nghệ kỹ thuật ô tô, đặc biệt là trong nhận diện lane đường Từ đó, công nghệ này có thể được cải tiến để cảnh báo người lái khi xe lệch khỏi lane hoặc hỗ trợ xe tự hành di chuyển an toàn trên làn đườ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
Ảnh tự nhiên là hình ảnh liên tục về không gian và độ sáng, nhưng để xử lý bằng máy tính, ảnh cần được số hoá Số hoá ảnh là quá trình chuyển đổi gần đúng từ ảnh liên tục thành tập hợp các điểm ảnh phù hợp với vị trí và độ sáng thực tế Khoảng cách giữa các điểm ảnh được thiết lập sao cho mắt người không thể phân biệt ranh giới giữa chúng Mỗi điểm ảnh, hay pixel (PEL: Picture Element), tương ứng với cặp tọa độ (x, y) trong ảnh hai chiều Điểm ảnh là phần tử của ảnh số tại tọa độ (x, y) với độ xám hoặc màu nhất định, và kích thước cũng như khoảng cách giữa các pixel được chọn sao cho tạo cảm giác liên tục về không gian và mức xám (hoặc màu) của ảnh số gần giống với ảnh thật Mỗi phần tử trong ma trận ảnh đượ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ị
Khoảng cách giữa các điểm ảnh cần được chọn sao cho mắt người vẫn cảm nhận được sự liên tục của hình ảnh Lựa chọn khoảng cách phù hợp sẽ tạo ra mật độ phân bổ, được gọi là độ phân giải, và được phân bố theo hai trục x và y trong không gian hai chiều.
Độ phân giải của màn hình CGA (Color Graphic Adaptor) là 320x200 điểm ảnh, cho thấy sự khác biệt về độ mịn giữa màn hình 12” và 17” Mặc dù cả hai đều có cùng độ phân giải, nhưng màn hình 17” có diện tích lớn hơn, dẫn đến độ mịn kém hơn do cùng một mật độ điểm ảnh trải rộng trên bề mặt lớn hơn Các độ phân giải phổ biến được minh họa trong hình 2.2.
Hình 2.2 Các độ phân giải của ảnh
Một điểm ảnh (pixel) được xác định bởi hai đặc trưng chính: vị trí (x, y) và độ xám Bài viết này sẽ khám phá các khái niệm và thuật ngữ phổ biến trong lĩnh vực 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 đó
Các thang giá trị mức xám thông thường bao gồm 16, 32, 64, 128 và 256, trong đó mức 256 là phổ biến nhất Lý do cho sự phổ biến này là vì kỹ thuật máy tính sử dụng 1 byte (8 bit) để biểu diễn mức xám, cho phép tạo ra 256 mức khác nhau, 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
Ảnh nhị phân là loại ảnh chỉ có hai mức màu, đen và trắng, với mỗi điểm ảnh được mô tả bằng 1 bit, cho phép phân biệt 2 mức khác nhau Điều này có nghĩa là mỗi pixel trong ảnh nhị phân chỉ có thể mang giá trị 0 hoặc 1.
Trong lý thuyết ba màu (Đỏ, Xanh dương, Xanh lá), ảnh màu được mô tả bằng 3 byte, cho phép tạo ra khoảng 16,7 triệu màu khác nhau.
Tổ chức quốc tế về chuẩn hóa màu CIE (Commission Internationale d’Eclairage) đã thiết lập các tiêu chuẩn để biểu diễn màu sắc, trong đó hệ chuẩn màu CIE-RGB sử dụng ba màu cơ bản là Đỏ (R), Xanh lá (G) và Xanh dương (B), được ký hiệu là RGBCIE để phân biệt với các chuẩn khác Mỗi màu sắc được tạo thành từ sự kết hợp của các màu cơ bản theo tỷ lệ nhất định, do đó, mỗi pixel trong ảnh màu, ký hiệu là Px, có thể được biểu diễn theo công thức cụ thể.
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 Maxwell, được thể hiện qua tam giác Maxwell trong hình, mô tả cách tính màu trắng trong hệ tọa độ CIE Màu trắng CIE được xác định bằng tổng của ba thành phần màu: đỏ CIE, lục CIE và lơ CIE, với công thức: trắng CIE = (đỏ CIE + lục CIE + lơ CIE) = 1.
Không gian màu HSV, như thể hiện trong hình 2.4, là một công cụ phổ biến trong chỉnh sửa và phân tích ảnh, cũng như trong lĩnh vực thị giác máy tính Hệ màu này dựa trên ba thông số cơ bản để 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)
Trường biểu diễn màu sắc (Hue) được phân chia theo vòng tròn từ 0 đến 360 độ, bắt đầu từ màu đỏ (red primary) ở 0 độ, tiếp theo là màu xanh lục (green primary) trong khoảng 0-120 độ Khoảng 120-240 độ thể hiện sự chuyển tiếp từ xanh lục sang xanh lơ (blue primary), và từ 240-360 độ là sự chuyển đổi từ màu đen trở lại màu đỏ.
Trong mô hình không gian màu hình trụ, giá trị độ sáng (V) được thể hiện bằng cách di chuyển từ đáy lên đỉnh hình trụ, với khoảng giá trị từ 0 đến 1 Ở đáy hình trụ, V có giá trị 0, tức là tối nhất, trong khi ở đỉnh hình trụ, độ sáng đạt mức cao nhất.
= 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
Mỗi giá trị (H, S, V) đại diện cho một màu sắc cụ thể, cung cấp thông tin chi tiết về sắc độ, độ đậm đặc và độ sáng của màu đó.
CMYK là không gian màu phổ biến trong ngành in ấn, sử dụng bốn màu cơ bản để pha trộn mực in Ba màu chính là C (Cyan - xanh lơ), M (Magenta - hồng xẫm) và Y (Yellow - vàng) được dùng để tạo ra các màu sắc khác nhau Sự kết hợp của hồng xẫm và vàng tạo ra màu đỏ, trong khi màu xẫm và xanh lơ cho ra xanh lam Mặc dù ba màu này có thể kết hợp để tạo ra màu đen, màu đen thu được không phải là đen tuyệt đối và thường có độ tương phản lớn Để tiết kiệm mực in, ngành in thường sử dụng màu đen riêng biệt.
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ý hoạt động của hệ màu CMYK dựa trên việc in màu lên nền giấy trắng, nơi mà các màu Cyan (C), Magenta (M) và Yellow (Y) được áp dụng theo tỉ lệ khác nhau để loại bỏ dần màu trắng, từ đó tạo ra màu sắc cần thiết Để in màu đen, thay vì sử dụng sự kết hợp của ba màu trên, người ta trực tiếp in màu đen Khác với hệ RGB, vốn dựa trên sự kết hợp của các màu, hệ CMYK hoạt động dựa trên nguyên tắc 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)
Một bức ảnh có thể dễ dàng được mô tả bởi con người với thị giác bình thường, khi họ nhận biết và phát hiện các đối tượng cùng vị trí của chúng Tuy nhiên, đối với máy tính, việc "đọc" và hiểu một bức ảnh trở nên khó khăn hơn, vì máy tính chỉ nhìn nhận bức ảnh như một ma trận số, với các điểm ảnh (pixel) được biểu diễn dưới dạng số theo hệ màu RGB (Đỏ, Xanh lá, Xanh dương).
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, là xác định mối liên hệ giữa ma trận số và thông tin ngữ nghĩa trong hình ảnh Thị giác máy tính tập trung vào việc giải quyết các bài toán liên quan đến việc nhận diện và phân tích hình ả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 không hiệu quả với dữ liệu hình ảnh, vì mỗi điểm ảnh được coi là một thuộc tính Chẳng hạn, một ảnh RGB kích thước 64×64 có 12.288 thuộc tính, và nếu kích thước tăng lên 1000×10000, số thuộc tính sẽ lên tới 3 triệu Việc sử dụng mạng liên kết đầy đủ dẫn đến ma trận trọng số khổng lồ, với kích thước 1000×3 triệu, tương đương 3 tỷ trọng số cần huấn luyện Điều này đòi hỏi khối lượng tính toán lớn và dễ dẫn đến hiện tượng không nhận diện được do thiếu 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 cho dữ liệu ảnh, với các lớp liên kết đầy đủ (FC layers) và các lớp tích chập (Convolutional Layers) đặc biệt giúp phát hiện và trích xuất các đặc trưng trong ảnh Những lớp tích chập này là yếu tố chính làm cho CNN khác biệt so với các lớp truyền thống, cho phép nó hoạt động hiệu quả trong 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
Lớp tích chập trong mạng nơ-ron hoạt động bằng cách nhận dữ liệu đầu vào và thực hiện các phép biến đổi để cung cấp dữ liệu cho lớp kế tiếp Phép biến đổi chủ yếu được thực hiện thông qua phép tính tích chập, trong đó mỗi lớp tích chập bao gồm một hoặc nhiều bộ lọc (bộ phát hiện đặc trưng) giúp phát hiện và trích xuất các đặc trưng khác nhau của hình ảnh.
Bộ lọc trong các lớp tích chập của mạng CNN càng sâu thì khả năng phát hiện các đặc trưng càng phức tạp Độ phức tạp này tỷ lệ thuận với độ sâu của lớp tích chập Các lớp tích chập đầu tiên sử dụng bộ lọc hình học để nhận diện những đặc trưng cơ bản như cạnh ngang, dọc và chéo Tiếp theo, các lớp tích chập sau đó phát hiện các đối tượng nhỏ và bán hoàn chỉnh như mắt, mũi và tóc Cuối cùng, các lớp tích chập sâu nhất được thiết kế để nhận diện các đối tượng hoàn chỉnh như chó, mèo, chim, ô tô và đèn giao thông Để hiểu rõ hơn về cách hoạt động của lớp tích chập và phép tính tích chập, chúng ta có thể xem xét ví dụ về bộ lọc phát hiện cạnh, với đầu vào là các bức ảnh trắng đen được biểu diễn bằng ma trận điểm ảnh có kích thước cố định h×w và sử dụng 4 bộ lọc kích thước 3×3.
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
Ma trận đầu vào I có kích thước 7x7 và bộ lọc k (kernel) có kích thước 3x3 Sau khi thực hiện phép nhân giữa ma trận I và bộ lọc k, đầu ra sẽ tạo thành một ma trận mới có kích thước 5x5.
Khi sử dụng ma trận đầu vào kích thước 6×6 và thực hiện phép nhân chập với bộ lọc kích thước 3×3, chúng ta sẽ thu được ma trận đầu ra có kích thước 4×4 Điều này xảy ra vì chỉ có 4×4 vị trí trên ma trận đầu vào có thể được áp dụng bộ lọc.
Khi thực hiện phép nhân chập giữa ma trận đầu vào kích thước n×n và bộ lọc kích thước f×f, ta thu được ma trận kết quả có kích thước (n−f+1)×(n−f+1) Mỗi lần áp dụng phép chập, kích thước ảnh giảm xuống, giới hạn số lần thực hiện trước khi ảnh trở nên quá nhỏ Các điểm ảnh ở trung tâm ma trận đầu vào được bao phủ bởi nhiều vùng 3×3, dẫn đến việc tính toán nhiều giá trị đầu ra, trong khi các điểm ảnh ở góc hoặc cạnh chỉ được sử dụng 1 hoặc 2 lần do bị bao phủ bởi ít vùng hơn Điều này dẫn đến việc mất mát thông tin quan trọng tại các khu vực gần cạnh của ảnh.
Để khắc phục hai nhược điểm của ma trận đầu vào, một đường viền phụ (padding) được thêm vào xung quanh ma trận, giúp tăng kích thước ma trận đầu ra Việc này làm giảm độ chênh lệch giữa ma trận đầu ra và ma trận đầu vào gốc Đồng thời, các ô ở góc cạnh của ma trận đầu vào cũng được lùi sâu vào bên trong, từ đó được sử dụng nhiều hơn trong tính toán ma trận đầu ra, giúp tránh mất mát thông tin.
Ma trận đầu vào kích thước 6×6 được mở rộng với đường viền phụ kích thước 1 (p=1), tạo thành ma trận 8×8 Khi thực hiện phép nhân chập với bộ lọc 3×3, kết quả là ma trận đầu ra kích thước 6×6, giữ nguyên kích thước của ma trận gốc Các điểm ảnh ở cạnh của ma trận đầu vào gốc được sử dụng nhiều lần hơn, với các điểm ảnh ở góc được sử dụng 4 lần.
Theo quy ước, các ô trên đường viền phụ có giá trị bằng không và kích thước của đường viền phụ là p Đường viền phụ thường có tính đối xứng trái-phải và trên-dưới so với ma trận gốc, dẫn đến việc kích thước của ma trận đầu vào tăng thêm 2p ở mỗi chiều Do đó, kích thước của ma trận đầu ra sẽ là (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, cần thêm phần 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, dẫn đến việc hệ đầu vào trở nên không đối xứng.
Nếu f là số lẻ, ma trận đầu vào sẽ có một điểm ảnh ở trung tâm Trong lĩnh vực thị giác máy tính, việc sử dụng một nhân tố khác biệt - điểm đại diện cho vị trí của bộ lọc - thường nâng cao hiệu suất cho bài toán.
2.2.2.3 Nhân chập sải (strided convolutions)
Trong phép nhân chập, bộ lọc trượt qua ma trận đầu vào theo từng hàng hoặc cột trong mỗi bước di chuyển Giá trị của bước di chuyển này có thể là 2, 3 hoặc lớn hơn, ký hiệu là s Kích thước của ma trận đầu ra được tính dựa trên số hàng và cột mà bộ lọc đã trượt qua.
( +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 sử dụng trong đề tài được mô tả trong hình 3.1, với điểm mạnh là bộ vi xử lý i7-4790 8 nhân, xung nhịp 4.0 GHz và card đồ họa Nvidia GTX 970 có 1664 nhân Cuda, rất cần thiết cho việc nhận diện lane theo thời gian thực Tuy nhiên, card đồ họa này không được cộng đồng DeepLearning ưa chuộng do vấn đề tương thích trình điều khiển với các nền tảng DeepLearning hiện tại, dẫn đến khó khăn trong việc thiết lập môi trường lập trình cho đồ án.
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
Chế độ WDR giúp thu hẹp khoảng cách chất lượng giữa hình ảnh JPEG và RAW, mang lại sự sắc nét và chi tiết cho những cảnh có bóng tối hoặc ánh sáng nổi bật.
Sơ lược về phần mềm
Ubuntu là một hệ điều hành máy tính dựa trên Debian GNU/Linux, nổi bật với tính ổn định và dễ cài đặt Được thiết kế cho người dùng thông thường, Ubuntu tập trung vào sự tiện dụng và cập nhật thường xuyên Vào năm 2007, Ubuntu đã trở thành bản phân phối Linux phổ biến nhất cho máy tính để bàn, chiếm khoảng 30% tổng số bản Linux được cài đặt.
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à một ngôn ngữ lập trình thông dịch, hướng đối tượng và bậc cao với ngữ nghĩa động Nó hỗ trợ các module và gói, khuyến khích lập 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 có sẵn dưới dạng mã nguồn hoặc 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 có khả năng kết nối dễ dàng với nhiều thành phần khác nhau như COM, NET (IronPython, Python for NET), CORBA và Java Ngoài ra, Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) cùng với nhiều công nghệ kết nối khác Người dùng có thể viết thư viện bằng C/C++ để tích hợp vào Python và ngược lại.
Python là ngôn ngữ lập trình đa nền tảng, hỗ trợ nhiều hệ điều hành như Windows, Linux/Unix, OS/2, Mac và Amiga Nó cũng có phiên bản cho NET, máy ảo Java và điện thoại di động (Nokia Series 60) Với Python, mã nguồn có thể chạy nhất quán trên các nền tảng khác nhau.
Python sở hữu một cộng đồng lập trình viên rộng lớn và phong phú, cùng với hệ thống thư viện chuẩn và nhiều thư viện mã nguồn mở được chia sẻ trực tuyến Là một ngôn ngữ mã nguồn mở, Python dễ dàng cài đặt và sử dụng cho nhiều mục đích khác nhau.
Giấy phép nguồn mở cho phép sử dụng và phân phối tự do, bao gồm cả mục đích thương mại Giấy phép Python được quản lý bởi Python Software Foundation, đảm bảo tính minh bạch và linh hoạt trong việc phát triển phần mềm.
Python được cài đặt sẵn trên abuntu 16.04 [16]
Anaconda là nền tảng mã nguồn mở phổ biến nhất cho Khoa học dữ liệu trên Python, với hơn 11 triệu người dùng Đây là công cụ nhanh chóng và dễ dàng để học Khoa học dữ liệu, quản lý gó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 như Python và R trên các hệ điều hành Windows, Linux và Mac OS X Anaconda mang lại nhiều lợi ích cho người dùng trong lĩnh vực Khoa học dữ liệu.
- 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, or Compute Unified Device Architecture, is a parallel computing architecture developed by NVIDIA It enables developers to harness the power of NVIDIA GPUs for general-purpose computing tasks, significantly enhancing performance and efficiency in various applications.
C DA là động cơ tính toán trong các đơn vị xử lý đồ họa (GP) của NVIDIA, cho phép lập trình viên sử dụng ngôn ngữ lập trình phổ biến như C Để cài đặt các thuật toán chạy trên GP, lập trình viên sử dụng trình biên dịch PathScale Open64 C Kiến trúc C DA hỗ trợ đầy đủ các chức năng tính toán thông qua ngôn ngữ C, và các bên thứ ba cũng đã phát triển hỗ trợ cho C DA trong Python, Fortran, Java và MATLAB.
C DA cung cấp cho các nhà phát triển quyền truy cập vào tập hợp 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 DA GP).
Sử dụng công nghệ C DA, các GPU mới nhất từ NVIDIA có khả năng thực hiện các phép toán tương tự như CPU Tuy nhiên, khác với CPU, GPU có kiến trúc song song, cho phép xử lý nhiều luồng dữ liệu cùng lúc, thay vì chỉ nhanh chóng xử lý một luồng duy nhất Phương pháp giải quyết các vấn đề tổng quát này trên GPU được gọi là GPGPU.
Tạo môi trường Cuda giúp kích hoạt xử lý ảnh bằng card đồ họa, mang lại hiệu suất xử lý nhanh hơn nhiều so với việc sử dụng CPU.
CuDNN (thư viện CUDA® Deep Neural Network của NVIDIA) là một thư viện quan trọng giúp tăng tốc độ xử lý GPU cho các mạng nơ-ron sâu Thư viện này cung cấp các tối ưu hóa hiệu quả cho các thao tác tiêu chuẩn như tính toán chập tiến và lùi, gộp chung, chuẩn hóa và kích hoạt các lớp trong mạng nơ-ron.
Các nhà nghiên cứu và phát triển deep learning trên toàn thế giới thường sử dụng cuDNN để tăng tốc hiệu suất GPU, giúp họ tập trung vào việc đào tạo mạng thần kinh và phát triển ứng dụng phần mềm cuDNN hỗ trợ nhiều deep learning frameworks phổ biến như Caffe, Caffe2, Chainer, Keras, MATLAB, MxNet, TensorFlow và PyTorch Để tận dụng các deep learning frameworks tối ưu hóa của NVIDIA, việc tích hợp cuDNN là cần thiết.
TensorFlow, hay còn gọi là Google TensorFlow, là một thư viện phần mềm miễn phí do Google phát triển, tập trung vào học máy Được phát hành dưới giấy phép nguồn mở Apache 2.0, TensorFlow ban đầu được phát triển bởi đội ngũ kỹ sư và nhà nghiên cứu của Google Brain Team cho mục đích sử dụng nội bộ Là sự kế thừa của ứng dụng nguồn đóng DistBelief, TensorFlow hiện được Google sử dụng cho cả nghiên cứu và sản xuất Đây là dự án đầu tiên được triển khai nghiêm túc với trọng tâm vào học sâu (deep learning).