天天看點

深度學習相關的亂七八糟的東西的簡介【jetson nano 的亞博智能的已配置鏡像系統裡的東西】

已安裝:

CUDA10.2,CUDNNv8,tensorRT,opencv4.1.1,python2,python3,tensorflow2.3,

jetpack4.4.1,yolov4-tiny和yolov4,jetson-inference包(含資料中的訓練模型),

jetson-gpio庫,安裝pytorch1.6和torchvesion0.7,安裝node v15.0.1,npm7.0.3,

jupterlab,jetcham,已開啟VNC服務,還有其他課程中所用到的子產品。

CUDA

CUDA程式設計入門極簡教程

看了安裝教程才知道cuda是個什麼東西

分點叙述各個知識

CUDA C/C++可以看作一個新的程式設計語言,因為NVIDIA配置了相應的編譯器nvcc

CUDA擁有的統一的開發套件(CUDA Toolkit, NVIDIA GPU Computing SDK以及NSight等等)、非常豐富的庫(cuFFT, cuBLAS, cuSPARSE, cuRAND, NPP, Thrust)以及NVCC(NVIDIA的CUDA編譯器)所具備的PTX(一種SSA中間表示,為不同的NVIDIA GPU裝置提供一套統一的靜态ISA)代碼生成、離線編譯等更成熟的編譯器特性讓CUDA廣受好評。

深度學習相關的亂七八糟的東西的簡介【jetson nano 的亞博智能的已配置鏡像系統裡的東西】

CUDA是建立在NVIDIA的CPUs上的一個通用并行計算平台和程式設計模型,基于CUDA程式設計可以利用GPUs的并行計算引擎來更加高效地解決比較複雜的計算難題。近年來,GPU最成功的一個應用就是深度學習領域,基于GPU的并行計算已經成為訓練深度學習模型的标配。

在CUDA中,host和device是兩個重要的概念,我們用host指代CPU及其記憶體,而用device指代GPU及其記憶體。CUDA程式中既包含host程式,又包含device程式,它們分别在CPU和GPU上運作。同時,host與device之間可以進行通信,這樣它們之間可以進行資料拷貝。典型的CUDA程式的執行流程如下:

  1. 配置設定host記憶體,并進行資料初始化;
  2. 配置設定device記憶體,并從host将資料拷貝到device上;
  3. 調用CUDA的核函數在device上完成指定的運算;
  4. 将device上的運算結果拷貝到host上;
  5. 釋放device和host上配置設定的記憶體。

CUDNNv8 //v8是版本号

深度神經網絡庫 (cuDNN) 是基于CUDA的深度學習GPU加速庫。cuDNN 可大幅優化标準例程(例如用于前向傳播和反向傳播的卷積層、池化層、歸一化層和激活層)的實施。它強調性能、易用性和低記憶體開銷。NVIDIA cuDNN可以內建到更進階别的機器學習架構中,如谷歌的Tensorflow、加州大學伯克利分校的流行caffe軟體。

tensorRT

  • 訓練(training)包含了前向傳播和後向傳播兩個階段,針對的是訓練集。訓練時通過誤差反向傳播來不斷修改網絡權值(weights)。
  • 推理(inference)隻包含前向傳播一個階段,針對的是除了訓練集之外的新資料。可以是測試集,但不完全是,更多的是整個資料集之外的資料。其實就是針對新資料進行預測,預測時,速度是一個很重要的因素。

一般的深度學習項目,訓練時為了加快速度,會使用多 GPU 分布式訓練。但在部署推理時,為了降低成本,往往使用單個 GPU

機器甚至嵌入式平台(比如 NVIDIA Jetson)進行部署,部署端也要有與訓練時相同的深度學習環境,如 caffe,TensorFlow

等。由于訓練的網絡模型可能會很大(比如,inception,resnet

等),參數很多,而且部署端的機器性能存在差異,就會導緻推理速度慢,延遲高。這對于那些高實時性的應用場合是緻命的,比如自動駕駛要求實時目标檢測,目标追蹤等。是以為了提高部署推理的速度,出現了很多輕量級神經網絡,比如

squeezenet,mobilenet,shufflenet

等。基本做法都是基于現有的經典模型提出一種新的模型結構,然後用這些改造過的模型重新訓練,再重新部署。

而 TensorRT 則是對訓練好的模型進行優化。 TensorRT 就隻是推理優化器。當你的網絡訓練完之後,可以将訓練模型檔案直接丢進

TensorRT中,而不再需要依賴深度學習架構(Caffe,TensorFlow 等)

可以認為 TensorRT 是一個隻有前向傳播的深度學習架構,這個架構可以将 Caffe,TensorFlow 的網絡模型解析,然後與

TensorRT 中對應的層進行一一映射,把其他架構的模型統一全部轉換到 TensorRT 中,然後在 TensorRT 中可以針對

NVIDIA 自家 GPU 實施優化政策,并進行部署加速。

TensorRT(1)-介紹-使用-安裝

TensorRT是英偉達針對自家平台做的加速包,TensorRT主要做了這麼兩件事情,來提升模型的運作速度。
  1. TensorRT支援INT8和FP16的計算。深度學習網絡在訓練時,通常使用 32 位或 16 位資料。TensorRT則在網絡的推理時選用不這麼高的精度,達到加速推斷的目的。
  2. TensorRT對于網絡結構進行了重構,把一些能夠合并的運算合并在了一起,針對GPU的特性做了優化。現在大多數深度學習架構是沒有針對GPU做過性能優化的。一個深度學習模型,在沒有優化的情況下,比如一個卷積層、一個偏置層和一個reload層,這三層是需要調用三次cuDNN對應的API,但實際上這三層的實作完全是可以合并到一起的,TensorRT會對一些可以合并網絡進行合并。
TensorRT為什麼能讓模型跑快快

TensorFlow 2.3

任何曾經試圖在 Python 中隻利用 NumPy 編寫神經網絡代碼的人都知道那是多麼麻煩。編寫一個簡單的一層前饋網絡的代碼尚且需要 40

多行代碼,當增加層數時,編寫代碼将會更加困難,執行時間也會更長。 開源深度學習庫 TensorFlow

允許将深度神經網絡的計算部署到任意數量的 CPU 或 GPU 的伺服器、PC 或移動裝置上,且隻利用一個 TensorFlow

API。你可能會問,還有很多其他的深度學習庫,如 Torch、Theano、Caffe 和 MxNet,那 TensorFlow

與其他深度學習庫的差別在哪裡呢?包括 TensorFlow 在内的大多數深度學習庫能夠自動求導、開源、支援多種

CPU/GPU、擁有預訓練模型,并支援常用的NN架構,如遞歸神經網絡(RNN)、卷積神經網絡(CNN)和深度置信網絡(DBN)。

TensorFlow 則還有更多的特點,如下:

  • 支援所有流行語言,如 Python、C++、Java、R和Go。
  • 可以在多種平台上工作,甚至是移動平台和分布式平台。
  • 它受到所有雲服務(AWS、Google和Azure)的支援。
  • Keras——進階神經網絡 API,已經與 TensorFlow 整合。
  • 與 Torch/Theano 比較,TensorFlow 擁有更好的計算圖表可視化。
  • 允許模型部署到工業生産中,并且容易使用。
  • 有非常好的社群支援。
  • TensorFlow 不僅僅是一個軟體庫,它是一套包括 TensorFlow,TensorBoard 和 TensorServing 的軟體。
c語言中文網的系列教程

TensorFlow 2 快速教程

TensorFlow2教程【這個免費且完整】

Tensorflow2.x(一)建立模型的三種方式

Tensorflow2.0實作29種深度強化學習算法大彙總

大佬在有理有據地抱怨tensorflow2不好用

jetpack4.4.1

  1. 它是一套元件庫。(說明它是由許多個不同的元件庫構成,并不是一個單一的元件庫)
  2. 使用 Jetpack 可以幫助我們在不同的 Android 版本和不同的裝置上,實作行為一緻的工作代碼。(說明 Jetpack 可以輕松的處理由 Android 版本不一緻和裝置不同産生的差異性和相容性問題)
Jetpack 是什麼

YOLOv4

YOLO是一種圖像識别算法

人類視覺系統快速且精準,隻需瞄一眼(You Only Look Once,YOLO)即可識别圖像中物品及其位置。

傳統目标檢測系統采用deformable parts models

(DPM)方法,通過滑動框方法提出目标區域,然後采用分類器來實作識别。近期的R-CNN類方法采用region proposal

methods,首先生成潛在的bounding boxes,然後采用分類器識别這些bounding

boxes區域。最後通過post-processing來去除重複bounding

boxes來進行優化。這類方法流程複雜,存在速度慢和訓練困難的問題。

本文中,我們将目标檢測問題轉換為直接從圖像中提取bounding boxes和類别機率的單個回歸問題,隻需一眼(you only look once,YOLO)即可檢測目标類别和位置。

YOLO采用單個卷積神經網絡來預測多個bounding boxes和類别機率,如圖1-1所示。本方法相對于傳統方法有如下有優點:

一,非常快。YOLO預測流程簡單,速度很快。我們的基礎版在Titan X GPU上可以達到45幀/s;

快速版可以達到150幀/s。是以,YOLO可以實作實時檢測。

二,YOLO采用全圖資訊來進行預測。與滑動視窗方法和region

proposal-based方法不同,YOLO在訓練和預測過程中可以利用全圖資訊。Fast

R-CNN檢測方法會錯誤的将背景中的斑塊檢測為目标,原因在于Fast R-CNN在檢測中無法看到全局圖像。相對于Fast

R-CNN,YOLO背景預測錯誤率低一半。

三,YOLO可以學習到目标的概括資訊(generalizable

representation),具有一定普适性。我們采用自然圖檔訓練YOLO,然後采用藝術圖像來預測。YOLO比其它目标檢測方法(DPM和R-CNN)準确率高很多。

YOLO的準确率沒有最好的檢測系統準确率高。YOLO可以快速識别圖像中的目标,但是準确定位目标(特别是小目标)有點困難。

YOLO:實時快速目标檢測

v1和v2是源頭,v3很好地整合了,v4也隻是稍加改進,v4-tiny加快速度犧牲精度【大概是這樣】

yolo系列之yolo v3【寫這個解析的是個很有趣又很強的人】

YOLO是“You Only Look

Once”的簡稱,它雖然不是最精确的算法,但在精确度和速度之間選擇的折中,效果也是相當不錯。YOLOv3借鑒了YOLOv1和YOLOv2,雖然沒有太多的創新點,但在保持YOLO家族速度的優勢的同時,提升了檢測精度,尤其對于小物體的檢測能力。

YOLOv3詳解

YOLOv4 介紹及其模型優化方法

Jetson Inference

這個是官方推出的體驗套件,它提供了三種最常見的AI應用于計算機視覺的類型,imagenet用于圖像辨識 ( Image

Recognition )、detectNet用于對象辨識 ( Object Detection )、segNet用于語意分割。

NVIDIA Jetson Inference機器學習項目 -計算機視覺圖檔分類任務

筆記(八)Jetson Nano 跑通 jetson-inference

pytorch1.6

PyTorch 是一個 Torch7 團隊開源的 Python 優先的深度學習架構,提供兩個進階功能:

強大的 GPU 加速 Tensor 計算(類似 numpy)

建構基于 tape 的自動更新系統上的深度神經網絡

你可以重用你喜歡的 python 包,如 numpy、scipy 和 Cython ,在需要時擴充 PyTorch。

在粒度級别上,PyTorch 是一個由以下元件組成的庫:

深度學習相關的亂七八糟的東西的簡介【jetson nano 的亞博智能的已配置鏡像系統裡的東西】

通常使用 PyTorch 是将其作為:

作為 numpy 的替代品,以使用強大的 GPU 能力;

一個深度學習研究平台,提供最大的靈活性和速度。 PyTorch

中文教程

淺談Pytorch與Torch的關系

torchvision 0.7

torchvision包是服務于pytorch深度學習架構的,用來生成圖檔,視訊資料集,和一些流行的模型類和預訓練模型.

torchvision的了解和學習(翻譯torchvision在pypi上的文檔)

Node.js

Node.js 是一個開源與跨平台的 JavaScript 運作時環境。 它是一個可用于幾乎任何項目的流行工具!

node的官方教程

如果你是一個前端程式員,你不懂得像PHP、Python或Ruby等動态程式設計語言,然後你想建立自己的服務,那麼Node.js是一個非常好的選擇。

Node.js 是運作在服務端的 JavaScript,如果你熟悉Javascript,那麼你将會很容易的學會Node.js。

當然,如果你是後端程式員,想部署一些高性能的服務,那麼學習Node.js也是一個非常好的選擇。

菜鳥教程網站的教程

nmp7.0.3

NPM是随同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種:
  • 允許使用者從NPM伺服器下載下傳别人編寫的第三方包到本地使用。
  • 允許使用者從NPM伺服器下載下傳并安裝别人編寫的指令行程式到本地使用。
  • 允許使用者将自己編寫的包或指令行程式上傳到NPM伺服器供别人使用。 菜鳥教程

npm 是幹什麼的?(非教程)【是挺啰嗦的,看不懂上面引用的内容再看這個】

官方教程【全英文】

jupterlab

是個python的編譯器,還能寫文檔看圖檔

JupyterLab作為一種基于web的內建開發環境,你可以使用它編寫notebook、操作終端、編輯markdown文本、打開互動模式、檢視csv檔案及圖檔等功能。

JupyterLab,極其強大的下一代notebook!

jetcham

//估計是手滑寫錯了

PyCharm

PyCharm是一種Python IDE(Integrated Development

Environment,內建開發環境),帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具,比如調試、文法高亮、項目管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些進階功能,以用于支援Django架構下的專業Web開發。

【百度百科】

好吧 确實是錯了 不過錯的是。。。。。

jetcam

JetCam是用于NVIDIA Jetson的易于使用的Python相機界面。使用Jetson的Accelerated GStreamer插件可與各種USB和CSI錄影機配合使用。輕松讀取圖像作為numpy數組image = camera.read()。設定相機以running =True将回調附加到新架構。JetCam使在Python中建立AI項目的原型變得容易,尤其是在JetCard中安裝的Jupyter Lab程式設計環境中。

接下來開始安裝:

git clone https://github.com/NVIDIA-AI-IOT/jetcam

cd jetcam

sudo python3 setup.py install

詳細的使用即函數可以到https://github.com/NVIDIA-AI-IOT/jetcam檢視

亞博智能官網教程

繼續閱讀