介紹
此頁面可幫助您在Raspberry Pi或Google Coral或Jetson Nano等替代品上構(gòu)建深度學習模式。有關(guān)深度學習及其限制的更多一般信息,請參閱深度學習。本頁更多地介紹一般原則,因此您可以很好地了解它的工作原理以及您的網(wǎng)絡可以在哪個板上運行。有關(guān)軟件安裝的分步方法,請參見 Raspberry Pi 4 和替代品的深度學習軟件。
一個廣泛使用的深度學習軟件包是TensorFlow。讓我們從名稱開始。什么是tensor?
你可以有一個數(shù)字列表。這在數(shù)學中稱為向量。
![wKgZomRUX8qARxPUAAAG3KsbEB433.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX8qARxPUAAAG3KsbEB433.webp)
如果向此列表添加維度,則會得到一個矩陣。
![wKgaomRUX8qARaTcAAAO23qpJhM78.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8qARaTcAAAO23qpJhM78.webp)
例如,通過這種方式,您可以顯示黑白圖像。每個值代表一個像素值。行數(shù)等于高度,列數(shù)與圖像的寬度匹配。如果你再次向矩陣添加一個額外的維度,你會得到一個tensor。
![wKgZomRUX8qAIVW5AAAnGiKro9s00.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX8qAIVW5AAAnGiKro9s00.webp)
彼此重疊的 2D 矩陣堆棧?;蛘邠Q句話說,一個矩陣,其中各個數(shù)字被一個向量所取代,一個數(shù)字列表。例如 RGB 圖片。每個單獨的像素(矩陣中的元素)由三個元素組成;一個 R、G 和 B 分量。 這是tensor(n維數(shù)字數(shù)組)的最簡化定義。
![wKgaomRUX8qAKLNnAAHSagbAFPE11.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8qAKLNnAAHSagbAFPE11.webp)
TensorFlow和數(shù)學中的張量之間的定義存在細微差異。
在數(shù)學中,tensor不僅僅是矩陣中的數(shù)字集合。在這里,tensor必須遵守某些變換規(guī)則。這些規(guī)則與在不改變其結(jié)果的情況下改變tensor所在的坐標系有關(guān)。大多數(shù)tensor都是 3D 的,并且具有與 Rubric 立方體相同數(shù)量的元素。每個單獨的立方體通過一組正交向量預測物理對象在應力(tensor)下將如何變形。
如果觀察者在現(xiàn)實世界中占據(jù)另一個位置,物體本身的變形不會改變;顯然,它仍然是同一個對象。但是,給定此新位置,所有向量或公式都將更改。它們將以變形的結(jié)果保持不變的方式發(fā)生變化??梢园阉胂蟪蓛勺斨g的距離。無論你站在哪里,這都不會改變。然而,從你的位置到這些頂部繪制矢量會根據(jù)你的位置、你的原點而變化。
在tensor的上下文中,甚至還有第三個含義,即神經(jīng)tensor網(wǎng)絡。
這個特殊神經(jīng)網(wǎng)絡中的tensor在兩個實體之間建立了關(guān)系。狗有尾巴,狗是哺乳動物,哺乳動物需要氧氣等。
![wKgZomRUX8uAWjRSAADvGIRMXDI19.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX8uAWjRSAADvGIRMXDI19.webp)
最后兩個定義只是為了完整起見而給出的。許多人認為TensorFlow與這些解釋之一有關(guān)。事實并非如此。
重量矩陣
TensorFlow和其他深度學習軟件最重要的構(gòu)建塊是n維數(shù)組。本節(jié)介紹這些數(shù)組的用法。每個深度學習應用程序都由給定的神經(jīng)節(jié)點拓撲組成。每個神經(jīng)節(jié)點通常構(gòu)造如下。
![wKgaomRUX8uAXHinAADBCOcooKY81.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8uAXHinAADBCOcooKY81.webp)
每個輸入乘以一個權(quán)重并相加。與偏差一起,結(jié)果進入激活函數(shù)φ。這可以是簡單的步進運算,也可以是更復雜的函數(shù),例如雙曲正切。
![wKgZomRUX8uAGm1CAADIb1OzWYY08.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX8uAGm1CAADIb1OzWYY08.webp)
輸出是網(wǎng)絡中下一層的輸入。網(wǎng)絡可以由許多層組成,每層都有數(shù)千個單獨的神經(jīng)元。
如果您查看一個層,則相同的輸入數(shù)組可以應用于不同的權(quán)重數(shù)組。每個都有不同的結(jié)果,以便可以從單個輸入中提取各種特征。
![wKgaomRUX8yAL07PAAJvEjiqekI59.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8yAL07PAAJvEjiqekI59.webp)
在上面的網(wǎng)絡中,四個輸入(黃色)都完全連接到第一層的四個神經(jīng)元(藍色)。它們連接到下一層的五個神經(jīng)元。跟隨另一個由六個神經(jīng)元組成的內(nèi)層。經(jīng)過連續(xù)兩層四層和三層后,達到具有三個通道的輸出(橙色)。
這樣的方案導致向量矩陣乘法。
![wKgZomRUX8yACvktAAAqjBkhoRs82.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX8yACvktAAAqjBkhoRs82.webp)
這里,四個值(x,y,z,w)的輸入層與權(quán)重矩陣相乘。x 輸入的權(quán)重 a,b,c,d,導致輸出端出現(xiàn) x'。y' 輸出的權(quán)重 e,f,g,h 等。還有其他方法可以描述這種乘法,例如,
![wKgaomRUX8yATWw1AAAMIL5Vi6o25.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8yATWw1AAAMIL5Vi6o25.webp)
其中 v 是輸入向量 (x,y,z,w),v' 是輸出 (x',y',z')。 向量矩陣乘法是 TensorFlow 中執(zhí)行最多的操作之一,因此得名。
在將所有點放在一起之前,首先在 GPU 硬件中繞道而行。GPU 代表圖形處理單元,一種最初設計用于將 CPU 從沉悶的屏幕渲染任務中解放出來的設備。 多年來,GPU變得更加強大。如今,它們擁有超過21億個晶體管,能夠執(zhí)行大規(guī)模的并行計算。 特別是在計算屏幕上每個像素的游戲中,需要這些計算能力。 移動查看器的位置時,例如,當英雄開始運行時,必須重新計算所有頂點。而這每秒25次以獲得平滑過渡。每個頂點都需要旋轉(zhuǎn)和平移。公式為:
![wKgZomRUX82ABvLEAAAuFkQXZqI78.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX82ABvLEAAAuFkQXZqI78.webp)
這里 (x,y,z,w) 是 3D 中的初始像素位置,(x',y',z',w') 是矩陣運算后的新位置。如您所見,這種類型的算術(shù)與神經(jīng)網(wǎng)絡相同。還有另一個興趣點。當你看x'時,它是四個乘積(ax+by+cz+dw)的總和。另一方面,y' 也是一個求和 (ex+fy+gz+hw)。但是要計算y',不需要知道決定x'(a,b,c和d)的值。它們彼此無關(guān)。您可以同時計算 x'和 y'。還有 z' 和 w' 就此而言。理論上,與其他結(jié)果沒有關(guān)系的每個計算都可以同時執(zhí)行。因此,GPU 的非常并行的架構(gòu)。當今(2023 年)最快的 GPU 每秒能夠達到驚人的 125 TFLOP。
這就是 GPU 加速背后的整個想法。將所有張量傳輸?shù)?GPU 內(nèi)存,并讓設備在花費 CPU 的一小部分時間內(nèi)執(zhí)行所有矢量矩陣計算。如果沒有令人印象深刻的GPU計算能力,深度學習幾乎是不可能的。
TPU
在深度學習的巨大市場潛力的推動下,一些制造商將GPU替換為TPU,即Tensor處理單元。除了矢量矩陣乘法,GPU 還有其他任務要做,例如頂點插值和著色、H264 壓縮、驅(qū)動 HDMI 顯示器等。通過僅將所有晶體管用于Tensor點積,吞吐量增加,功耗降低。第一代僅適用于 8 位整數(shù),后者也適用于浮點數(shù)。下面嵌入式板上的 TPU 都是基于整數(shù)的,除了 Jetson Nano。在此處閱讀深入的文章。
GPU陷阱
關(guān)于 GPU 算術(shù),必須考慮幾點。
首先,堅持矩陣。GPU 架構(gòu)專為這種操作而設計。編寫一個廣泛的 if-else 結(jié)構(gòu)對于 GPU 和整體性能來說是災難性的。
另一點是內(nèi)存交換會消耗很多效率。越來越多的數(shù)據(jù)從CPU內(nèi)存(圖像通常所在的位置)和GPU內(nèi)存的數(shù)據(jù)傳輸正在成為一個嚴重的瓶頸。您在 NVIDIA 的每個文檔中一遍又一遍地閱讀相同的內(nèi)容;矢量矩陣點積越大,執(zhí)行速度越快。
在這方面,請記住,Raspberry 及其替代品通常有一個用于 CPU 和 GPU 的大 RAM。它們僅共享相同的 DDR4 芯片。您的神經(jīng)網(wǎng)絡不僅必須適合程序內(nèi)存,而且還必須在 RAM 中留出空間,以便 CPU 內(nèi)核可以運行。這有時會對網(wǎng)絡或要識別的對象數(shù)量施加限制。在這種情況下,選擇另一塊具有更多 RAM 的電路板可能是唯一的解決方案。所有這些都與GPU具有內(nèi)存庫的PC中的圖形卡形成鮮明對比。
另一個區(qū)別是視頻卡上的 GPU 使用浮點或半浮點,有時也稱為小浮點。樹莓上的嵌入式 GPU 或替代板上的 TPU 使用 8 位或 16 位整數(shù)。您的神經(jīng)網(wǎng)絡必須適應這些格式。如果無法做到這一點,請選擇另一個具有浮點運算的板,例如 Jetson Nano。
最后一個建議,不要過多地超頻 GPU。它們以低于 CPU 的頻率正常工作。ARM內(nèi)核中的一些Mali GPU運行低至400 MHz。 超頻可以在冬季工作,但應用程序可能會在仲夏動搖。請記住,突然崩潰的是您在客戶端的視覺應用程序,而不是您簡單地重新啟動游戲。
當然,頁面上關(guān)于Raspberry上計算機視覺的評論也適用于這里。
Showstopper
您不能在 Raspberry Pi 或替代方案上訓練深度學習模型。如果您沒有計劃環(huán)游世界,則不會。這些板缺乏計算機能力來執(zhí)行訓練期間所需的大量浮點多加法。即使是Google Coral也無法訓練網(wǎng)絡,因為該板上的TPU僅適用于特殊的預編譯TensorFlow網(wǎng)絡。只有網(wǎng)絡中的最后一層可以稍作更改。盡管Jetson Nano具有浮點CUDA,但它仍然不能很好地在可接受的時間內(nèi)訓練網(wǎng)絡。一夜之間完成是NVIDIA在這里的建議。因此,最后,您只能在這些板上導入并運行已訓練的模型。
云服務
如前所述,訓練不是Raspberry Pi的選項,也不是任何其他小型SBC的選擇。但是,有一條逃生路線。所有主要的科技公司都有云服務。其中許多還包括運行配備 GPU 的 Linux 虛擬機的選項?,F(xiàn)在,您擁有了觸手可及的 CUDA 加速的最先進的 CPU。最好的免費服務之一是谷歌,GDrive 上有 15 GB 的免費空間,每天至少有 12 小時的免費計算機時間?,F(xiàn)在,只需一個簡單的 Raspberry Pi 就可以在一定程度上訓練您的深度學習模型。轉(zhuǎn)移訓練(部分調(diào)整重量而不改變拓撲)是可行的,因為這是一項相對容易的任務,您可以在幾個小時內(nèi)完成。另一方面,訓練復雜的 GAN 需要更多的資源。它可能會迫使您購買額外的電力。
實踐
第一步是安裝操作系統(tǒng),通常是Linux的衍生產(chǎn)品,如Ubuntu或Debian。這是容易的部分。
困難的部分是安裝深度學習模型。您必須弄清楚是否需要任何其他庫(OpenCV)或驅(qū)動程序(GPU支持)。請注意,只有 Jetson Nano 支持 CUDA,這是 PC 上使用的大多數(shù)深度學習軟件包。如果您想加速神經(jīng)網(wǎng)絡,所有其他板都需要不同的 GPU 支持。Raspberry Pi 或替代方案的 GPU 驅(qū)動程序的開發(fā)是一個持續(xù)的過程。查看網(wǎng)絡上的社區(qū)。
最后一步是將神經(jīng)網(wǎng)絡降低到可接受的比例。著名的 AlexNet 每 幀具有原始的 2 .3億次浮點運算。這永遠不會在簡單的單個 ARM 計算機或移動設備上快速運行。大多數(shù)模型都有某種減少策略。YOLO有Tiny YOLO,Caffe有Caffe2,TensorFlow有TensorFlow Lite。它們都使用以下一種或多種技術(shù)。
減小輸入大小。較小的圖像在第一層上節(jié)省了大量計算。
減少要分類的對象數(shù)量;它修剪了許多內(nèi)層的大小。
盡可能將神經(jīng)網(wǎng)絡從浮點數(shù)移植到字節(jié)。這也大大降低了內(nèi)存負載。
另一種策略是將浮點數(shù)減少到單個比特,即XNOR網(wǎng)絡。 這里討論了這個迷人的想法。
樹莓派和替代品的比較。
Jetson Nano vs Google Coral vs Intel Neural stick,這里是比較。列表中的三個奇怪的是JeVois,Intel Neural Stick和Google Colar USB加速器。第一個有一個板載攝像頭,可以做很多事情,你可以在這里閱讀。
Intel Neural Stick和Google Colar 加速器是帶有特殊 TPU 芯片的 USB 加密狗,可執(zhí)行所有Tensor計算。Intel Neural Stick附帶一個工具集,用于將 TensorFlow、Caffe 或 MXNet 模型遷移到神經(jīng)棒的工作中間表示 (IR) 圖像中。
Google Coral與特殊的預編譯TensorFlow Lite網(wǎng)絡配合使用。如果神經(jīng)網(wǎng)絡的拓撲及其所需的操作可以在TensorFlow中描述,那么它可能在Google Coral上運行良好。但是,由于其少量的 1 GB RAM,內(nèi)存短缺仍然是一個問題。
Google USB加速器具有特殊的后端編譯器,可將TensorFlow Lite文件轉(zhuǎn)換為加密狗TPU的可執(zhí)行模型。
Jetson Nano是唯一具有浮點GPU加速功能的單板計算機。它支持大多數(shù)模型,因為所有框架如TensorFlow,Caffe,PyTorch,YOLO,MXNet和其他在給定時間都使用的CUDA GPU支持庫。價格也非常有競爭力。這與蓬勃發(fā)展的深度學習市場有關(guān),英偉達不想失去其突出地位。
并非所有型號都可以在每臺設備上運行。大多數(shù)情況下是由于內(nèi)存不足或硬件和/或軟件不兼容。在這些情況下,可以使用多種解決方案。但是,它們的開發(fā)將非常耗時,并且結(jié)果通常會令人失望。
Benchmarks總是需要討論的。有些人可能會發(fā)現(xiàn)其他 FPS 使用相同的模型。這一切都與所使用的方法有關(guān)。我們使用Python,NVIDIA使用C++,谷歌使用他們的TensorFlow和TensorFlow Lite。Raspberry Pi 3 B+具有板載2.0 USB接口。兩種神經(jīng)棒都可以處理3.0,這意味著它們可以更快地執(zhí)行。另一方面,新的Raspberry Pi 4 B具有USB 3.0,與其前身相比,這將導致更高的FPS。
表中顯示的數(shù)字純粹是從輸入到輸出執(zhí)行所需的時間。不考慮其他過程,例如捕獲和縮放圖像。順便說一下,不使用超頻。
![wKgaomRUX82AdNbOAALhHQ2BMAU15.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX82AdNbOAALhHQ2BMAU15.webp)
樹莓派和深度學習
我們在 GitHub 上放置了一個深度學習庫和幾個深度學習網(wǎng)絡。結(jié)合簡單的C++示例代碼,您可以在裸露的樹莓派上構(gòu)建深度學習應用程序。它非常用戶友好。此頁面上的更多信息。
![wKgZomRUX86AAARTAAJx-Yijvfc17.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX86AAARTAAJx-Yijvfc17.webp)
上面是在裸樹莓派上運行的 TensorFlow Lite 模型(帶有 COCO 訓練集MobileNetV1_SSD 300x300)的印象。
使用像 Ubuntu 這樣的 64 位操作系統(tǒng),如果您超頻到 24 FPS,您將獲得 1925MHz 。
使用像Raspbian這樣的常規(guī)32位系統(tǒng),一旦超頻到17FPS,您將獲得2000MHz 。
樹莓派和最近的替代品
下面在Raspberry Pi和適合實現(xiàn)深度學習模型的最新替代方案之間進行選擇。 大多數(shù)芯片上都有廣泛的GPU或TPU硬件。請注意,報價是從 2023 年 1 月開始的,即全球芯片嚴重短缺之前的價格。GPU 速度以 TOPS 表示,代表 Tera Operations P er Second。當然,最高分將是當您使用 8 位整數(shù)時。大多數(shù)供應商給出這個 8 位分數(shù)。如果你想在TFLOPS(Tera Floating Operations Per S econd)中有一個印象,請將數(shù)字除以四。雖然有些GPU不能處理單個8位,比如Jetson Nano,但分數(shù)仍然在TOPS,只是出于比較的原因。
![wKgaomRUX86ALrNEAAGWbCBg4wM69.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX86ALrNEAAGWbCBg4wM69.webp)
![wKgZomRUX86AS5zVAAIn6zhEt-I72.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX86AS5zVAAIn6zhEt-I72.webp)
![wKgaomRUX8-AJFD-AAJFxr7w_9s76.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8-AJFD-AAJFxr7w_9s76.webp)
![wKgZomRUX8-AONfPAAIIu_3p9pI20.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX8-AONfPAAIIu_3p9pI20.webp)
![wKgaomRUX8-ACFxuAAGjdBbjGbE11.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX8-ACFxuAAGjdBbjGbE11.webp)
![wKgZomRUX9CABDakAAJisfLe4KM22.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX9CABDakAAJisfLe4KM22.webp)
![wKgaomRUX9CAKF7sAAK8zx2HhK843.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX9CAKF7sAAK8zx2HhK843.webp)
![wKgZomRUX9GAF87kAARhWGeLgHU66.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX9GAF87kAARhWGeLgHU66.webp)
![wKgaomRUX9GAYG42AAQ9lWxipV027.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX9GAYG42AAQ9lWxipV027.webp)
![wKgZomRUX9GAU55oAAIvmqDlHeI16.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX9GAU55oAAIvmqDlHeI16.webp)
![wKgaomRUX9KADZ9HAAF0Ws0N09w40.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX9KADZ9HAAF0Ws0N09w40.webp)
![wKgZomRUX9KANHHGAAG6Ae5Qe7Y24.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX9KANHHGAAG6Ae5Qe7Y24.webp)
![wKgaomRUX9KAX3-_AAG3P6oNi2098.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX9KAX3-_AAG3P6oNi2098.webp)
![wKgZomRUX9OAVtM4AAEPwlacfK499.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX9OAVtM4AAEPwlacfK499.webp)
![wKgaomRUX9OASfjUAANagltzow856.webp](https://file1.elecfans.com//web2/M00/82/76/wKgaomRUX9OASfjUAANagltzow856.webp)
![wKgZomRUX9OAYFhLAAQp_aPqyfw23.webp](https://file1.elecfans.com//web2/M00/82/75/wKgZomRUX9OAYFhLAAQp_aPqyfw23.webp)
單個微型 (40x48 mm) 可插拔模塊,具有完整的 I/O 和Edge TPU加速器。
審核編輯黃宇
-
樹莓派
+關(guān)注
關(guān)注
117文章
1710瀏覽量
105887 -
深度學習
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121583 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60634
發(fā)布評論請先 登錄
相關(guān)推薦
尋找松下TX2-12V的替代品
尋求Ubuntu13系統(tǒng)下軟件替代品……
MMBFJ176替代品??
請問儀表放大器AD624有沒有便宜的完全兼容的替代品?
如何使用ISP1763作為替代品?
Commodore 6540 ROM的替代品
MC908JL3ECDWE的替代品是什么?
鈷鎳錳(三元)正極材料---鈷酸鋰的理想替代品
樹莓派的學習設計方案合集
![<b class='flag-5'>樹莓</b><b class='flag-5'>派</b>的<b class='flag-5'>學習</b>設計方案合集](https://file.elecfans.com/web1/M00/E4/F2/pIYBAGBJ3nyAfiuBAADJFfe3bpM958.png)
御芯微榮獲2023國產(chǎn)化替代品大賽先鋒獎
![御芯微榮獲<b class='flag-5'>2023</b>國產(chǎn)化<b class='flag-5'>替代品</b>大賽先鋒獎](https://file.elecfans.com/web2/M00/7D/31/pYYBAGN63p6AI9IuAAAos9v_lGw650.png)
評論