Ưu điểm của CNN

Một phần của tài liệu Ứng dụng tri 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 đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 36)

Hai ưu điểm lớn nhất của CNN so với mạng liên kết đầy đủ là: Chia sẽ tham số và liên kết thưa:

Nếu chúng ta có ảnh đầu vào kích thước 32×32×3và sử dụng 6 bộ lọc kích thước 5×5, thì thu được đầu ra kích thước 28×28×66. Đầu vào có 3072 (=32×32×3) và đầu ra có 47044 (=28×28×6) thành phần. Nếu sử dụng lớp liên kết đầy đủ, ma trận trọng số có kích thước 3072×4704tương đương với gần 14 triệu tham số. Trong khi đó, lớp tích chập chỉ có 8×(25+1)=208 tham số. Chúng ta có thể lý giải điều này theo hai cách sau:

- Chia sẻ tham số: Một bộ phát hiện đặc trưng (feature detector) ví dụ như bộ phát hiện cạnh hoạt động tốt trên một vùng của ảnh đầu vào thì cũng có thể hoạt động tốt trên các vùng còn lại. Các vùng bộ lọc đi qua trên ma trận đầu vào không tách biệt hoàn toàn, mà chia sẻ ít nhiều một phần diện tích (phụ thuộc vào bước trượt ss). Điều này dẫn tới các tham số được dùng chung cho các vùng khác nhau cùng chứa nó trong việc tính toán giá trị đầu ra, từ đây số lượng tham số được giảm xuống. Điều này là hợp lý bởi nếu một tập tham số được phát hiện cạnh ở góc trên bên trái của ảnh đầu vào thì chúng cũng có thể dùng để phát hiện cảnh ở góc dưới bên phải của, vì thế không nhất thiết phải sử dụng hai bộ phát hiện cạnh khác nhau cho hai vùng khác nhau của bức ảnh.

- Liên kết thưa: Một thành phần đầu ra (output unit) chỉ phụ thuộc vào bộ phát hiện đặc trưng và một phần nhỏ của ảnh đầu vào thay vì toàn bộ ảnh. Điều này khác với lớp liên kết đầy đủ, khi mỗi thành phần đầu ra phụ thuộc vào tất cả các thành phần của đầu vào.

29

Chương 3. SƠ LƯỢC PHẦN CỨNG VÀ PHẦN MỀM 3.1. 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.

3.1.2. Lựa chọn camera

30

Hình 3.2 GoPro Hero 5 Black

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.

- Ống kính siêu rộng.

- 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.

3.2. Sơ lược về phần mềm 3.2.1. Hệ điều hành Ubuntu

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.

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

3.2.2. Python

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].

3.2.3. Anaconda

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].

Hình 3.4 Biểu tượng Anaconda

3.2.4. Cuda

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,

33 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].

3.2.5. CuDNN

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 [19].

34 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).

TensorFlow lấy tên của nó từ các mảng đa chiều được gọi là tenxơ, được sử dụng bởi các mạng thần kinh cho các hoạt động khác nhau. Theo Google, so với DistBelief, TensorFlow nhanh hơn, thông minh hơn và linh hoạt hơn và có thể dễ dàng thích ứng với các khu vực và sản phẩm mới. Nó chủ yếu được tạo ra để nghiên cứu mạng lưới thần kinh sâu sắc và để tạo điều kiện cho việc học máy, mặc dù TensorFlow đã được sử dụng trong một loạt các lĩnh vực khác.

Các hàm TensorFlow bằng cách sắp xếp qua các lớp dữ liệu (còn được gọi là các nút) như là một phần của việc học. Trong lớp đầu tiên, hệ thống xác định các tính năng cơ bản của đối tượng. Khi các chuyển động sâu hơn xảy ra, nó tìm kiếm thông tin tinh tế hơn về đối tượng. Việc sắp xếp hình ảnh được thực hiện với tốc độ nhanh hơn, do đó cung cấp cho người dùng nhiều thông tin có giá trị hơn. TensorFlow có sẵn trên các hệ điều hành khác nhau như Linux, Windows, MacOS và cả trên các nền tảng vận hành di động như iOS và Android. Một trong những tính năng nổi bật của TensorFlow là nó có khả năng chạy trên nhiều CPU và GPU. Các tính toán trong TensorFlow được báo cáo dưới dạng biểu đồ dataflow trạng thái. Hiện tại TensorFlow được sử dụng trong hơn sáu nghìn kho lưu trữ trực tuyến miễn phí.

Ứng dụng của TensorFlow:

TensorFlow có nhiều cách sử dụng khác nhau, tuy nhiên nó thường được sử dụng cho 5 mục tiêu chính:

- Nhận dạng giọng nói / âm thanh: xác định và phân loại các âm thanh khác nhau. Điều này bao gồm nhận dạng giọng nói, tìm kiếm bằng giọng nói, phân tích tình cảm và phát hiện lỗ hổng.

35 - Các ứng dụng dựa trên văn bản: ở đây TensorFlow chủ yếu được sử dụng để phân tích tình cảm, phát hiện mối đe dọa và phát hiện gian lận. Nó cũng được sử dụng để phát hiện và dịch ngôn ngữ, tóm tắt văn bản và AutoReply.

- Nhận dạng hình ảnh: xác định và phân loại hình ảnh, bao gồm nhưng không giới hạn trong việc nhận dạng và xác định người và đối tượng trong hình ảnh cũng như hiểu nội dung và bối cảnh. Nó cũng có thể được sử dụng để xác định hình dạng cho mục đích mô hình hóa và để phát hiện các mẫu.

Hình 3.5 Cách thức nhận diện hình ảnh khuôn mặt trong Tensorflow

- Chuỗi thời gian: Phân tích dữ liệu chuỗi thời gian để trích xuất số liệu thống kê có ý nghĩa, cũng như dự báo các khoảng thời gian không cụ thể và để tạo các phiên bản thay thế của chuỗi thời gian. Trường hợp sử dụng phổ biến nhất cho Chuỗi thời gian là Khuyến nghị.

- Phát hiện video: để xác định, phân tích và phân loại video. Việc triển khai chính là trong Phát hiện chuyển động, Phát hiện luồng thời gian thực trong các trường Trò chơi, Bảo mật, Sân bay và UX / UI.

36

Hình 3.6 Xác định đối tượng trong video với Tensorflow

Lợi ích của Tensorflow:

Tensorflow phổ biến là bởi vì nó có những lợi thế nhất định so với các chương trình máy học khác hiện có. Một số lợi ích này bao gồm:

- Đồ thị: một trong những lợi ích chính của Tensorflow thực tế là nó cung cấp trực quan hóa đồ thị tính toán tốt hơn. Chúng thực sự giúp dễ dàng nhìn thấy luồng dữ liệu trong một hình ảnh để theo dõi các tác vụ.

- Quản lý thư viện: Vì Tensorflow được hỗ trợ bởi Google, nó có thư viện lớn hơn nhiều và hệ thống quản lý thư viện tốt hơn. Nó cũng có hiệu suất liền mạch, cập nhật nhanh và phát hành mới thường xuyên với các tính năng mới.

- Tính linh hoạt: Tensorflow rất linh hoạt theo cách nó cho phép hiển thị dữ liệu. Nó cung cấp đồng thời nhiều mô hình hoặc phiên bản của cùng một mô hình để sử dụng dữ liệu theo bất kỳ cách nào phù hợp nhất. Bạn cũng có thể sử dụng một số phần riêng lẻ hoặc có thể sử dụng tất cả các phần với nhau. TensorFlow cũng tạo điều kiện cho việc di chuyển không tự động sang các mô hình hay phiên bản mới.

- Khả năng mở rộng: TensorFlow chạy GP , CP , máy tính để bàn, máy chủ và nền tảng điện toán di động, do đó giúp chạy dễ dàng hơn trên mọi loại thiết bị, cho dù đó là máy tính để bàn, máy tính xách tay hay thậm chí trên điện thoại thông minh.

37 - Tự động phân biệt: TensorFlow có khả năng phân biệt tự động. Lợi ích của việc này là các thuật toán học máy dựa trên độ dốc có thể xác định kiến trúc tính toán của mô hình dự đoán, kết hợp nó với hàm mục tiêu và thêm dữ liệu vào nó với TensorFlow tự động theo dõi tất cả.

- Hiệu suất: TensorFlow triển khai hỗ trợ nâng cao cho các luồng, tính toán không đồng bộ, do đó có hiệu suất và chức năng được cải thiện hơn nhiều so với các phần mềm khác. Nó cũng có nhiều tùy chọn ngôn ngữ để thực hiện biểu đồ tính toán. - Gỡ lỗi: Tensorflow cho phép một người thực hiện các nhánh con của đồ thị. Điều này

cho phép giới thiệu và truy xuất dữ liệu rời rạc lên một cạnh, dẫn đến một phương pháp sửa lỗi tuyệt vời.

- Pipelining: TensorFLow rất song song và được thiết kế đặc biệt để sử dụng các phần mềm phụ trợ khác nhau, chẳng hạn như GP , ASIC, v.v.

Hạn chế của Tensorflow

- Overkill: Một trong những hạn chế chính của Tensorflow là nó quá mạnh. Mặc dù nó rất tốt cho việc học sâu, đặc biệt là với thư viện mạnh mẽ của nó, nó thường được coi là quá mức cần thiết cho các nhiệm vụ đơn giản và trực tiếp.

- Không hỗ trợ Windows: TensorFlow không cung cấp hỗ trợ Windows hoặc ít nhất là hỗ trợ Windows rất hạn chế. Nó hỗ trợ chính cho Linux, điều mà không phải ai cũng có thể thoải mái. Tuy nhiên, người ta có thể cài đặt nó trong môi trường conda hoặc sử dụng thư viện gói python, pip, để sử dụng nó trong Windows.

- Tốc độ tính toán: khi so sánh với một số đối thủ khác trên thị trường, TensorFlow thua một chút về tốc độ và cách sử dụng, mặc dù sự khác biệt không nhiều. Hỗ trợ GPU hạn chế - hiện tại TensorFlow chỉ hỗ trợ các GPU của NVIDIA và hỗ trợ ngôn ngữ đầy đủ duy nhất là của Python, điều mà không phải ai cũng có thể cảm thấy

Một phần của tài liệu Ứng dụng tri 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 đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 36)

Tải bản đầy đủ (PDF)

(103 trang)