<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

2023年使用樹莓派和替代品進行深度學習

上海晶珩電子科技有限公司 ? 來源:樹莓派開發者 ? 作者:樹莓派開發者 ? 2023-05-05 09:47 ? 次閱讀

介紹

此頁面可幫助您在Raspberry Pi或Google Coral或Jetson Nano等替代品上構建深度學習模式。有關深度學習及其限制的更多一般信息,請參閱深度學習。本頁更多地介紹一般原則,因此您可以很好地了解它的工作原理以及您的網絡可以在哪個板上運行。有關軟件安裝的分步方法,請參見 Raspberry Pi 4 和替代品的深度學習軟件。

Tensor

一個廣泛使用的深度學習軟件包是TensorFlow。讓我們從名稱開始。什么是tensor?
你可以有一個數字列表。這在數學中稱為向量。

wKgZomRUX8qARxPUAAAG3KsbEB433.webp

如果向此列表添加維度,則會得到一個矩陣。

wKgaomRUX8qARaTcAAAO23qpJhM78.webp

例如,通過這種方式,您可以顯示黑白圖像。每個值代表一個像素值。行數等于高度,列數與圖像的寬度匹配。如果你再次向矩陣添加一個額外的維度,你會得到一個tensor。

wKgZomRUX8qAIVW5AAAnGiKro9s00.webp

彼此重疊的 2D 矩陣堆棧?;蛘邠Q句話說,一個矩陣,其中各個數字被一個向量所取代,一個數字列表。例如 RGB 圖片。每個單獨的像素(矩陣中的元素)由三個元素組成;一個 R、G 和 B 分量。 這是tensor(n維數字數組)的最簡化定義。

wKgaomRUX8qAKLNnAAHSagbAFPE11.webp

TensorFlow和數學中的張量之間的定義存在細微差異。
在數學中,tensor不僅僅是矩陣中的數字集合。在這里,tensor必須遵守某些變換規則。這些規則與在不改變其結果的情況下改變tensor所在的坐標系有關。大多數tensor都是 3D 的,并且具有與 Rubric 立方體相同數量的元素。每個單獨的立方體通過一組正交向量預測物理對象在應力(tensor)下將如何變形。
如果觀察者在現實世界中占據另一個位置,物體本身的變形不會改變;顯然,它仍然是同一個對象。但是,給定此新位置,所有向量或公式都將更改。它們將以變形的結果保持不變的方式發生變化??梢园阉胂蟪蓛勺斨g的距離。無論你站在哪里,這都不會改變。然而,從你的位置到這些頂部繪制矢量會根據你的位置、你的原點而變化。

在tensor的上下文中,甚至還有第三個含義,即神經tensor網絡。
這個特殊神經網絡中的tensor在兩個實體之間建立了關系。狗有尾巴,狗是哺乳動物,哺乳動物需要氧氣等。

wKgZomRUX8uAWjRSAADvGIRMXDI19.webp

最后兩個定義只是為了完整起見而給出的。許多人認為TensorFlow與這些解釋之一有關。事實并非如此。

重量矩陣

TensorFlow和其他深度學習軟件最重要的構建塊是n維數組。本節介紹這些數組的用法。每個深度學習應用程序都由給定的神經節點拓撲組成。每個神經節點通常構造如下。

wKgaomRUX8uAXHinAADBCOcooKY81.webp

每個輸入乘以一個權重并相加。與偏差一起,結果進入激活函數φ。這可以是簡單的步進運算,也可以是更復雜的函數,例如雙曲正切。

wKgZomRUX8uAGm1CAADIb1OzWYY08.webp

輸出是網絡中下一層的輸入。網絡可以由許多層組成,每層都有數千個單獨的神經元。
如果您查看一個層,則相同的輸入數組可以應用于不同的權重數組。每個都有不同的結果,以便可以從單個輸入中提取各種特征。

wKgaomRUX8yAL07PAAJvEjiqekI59.webp

在上面的網絡中,四個輸入(黃色)都完全連接到第一層的四個神經元(藍色)。它們連接到下一層的五個神經元。跟隨另一個由六個神經元組成的內層。經過連續兩層四層和三層后,達到具有三個通道的輸出(橙色)。
這樣的方案導致向量矩陣乘法。

wKgZomRUX8yACvktAAAqjBkhoRs82.webp

這里,四個值(x,y,z,w)的輸入層與權重矩陣相乘。x 輸入的權重 a,b,c,d,導致輸出端出現 x'。y' 輸出的權重 e,f,g,h 等。還有其他方法可以描述這種乘法,例如,

wKgaomRUX8yATWw1AAAMIL5Vi6o25.webp

其中 v 是輸入向量 (x,y,z,w),v' 是輸出 (x',y',z')。 向量矩陣乘法是 TensorFlow 中執行最多的操作之一,因此得名。

GPU

在將所有點放在一起之前,首先在 GPU 硬件中繞道而行。GPU 代表圖形處理單元,一種最初設計用于將 CPU 從沉悶的屏幕渲染任務中解放出來的設備。 多年來,GPU變得更加強大。如今,它們擁有超過21億個晶體管,能夠執行大規模的并行計算。 特別是在計算屏幕上每個像素的游戲中,需要這些計算能力。 移動查看器的位置時,例如,當英雄開始運行時,必須重新計算所有頂點。而這每秒25次以獲得平滑過渡。每個頂點都需要旋轉和平移。公式為:

wKgZomRUX82ABvLEAAAuFkQXZqI78.webp

這里 (x,y,z,w) 是 3D 中的初始像素位置,(x',y',z',w') 是矩陣運算后的新位置。如您所見,這種類型的算術與神經網絡相同。還有另一個興趣點。當你看x'時,它是四個乘積(ax+by+cz+dw)的總和。另一方面,y' 也是一個求和 (ex+fy+gz+hw)。但是要計算y',不需要知道決定x'(a,b,c和d)的值。它們彼此無關。您可以同時計算 x'和 y'。還有 z' 和 w' 就此而言。理論上,與其他結果沒有關系的每個計算都可以同時執行。因此,GPU 的非常并行的架構。當今(2023 年)最快的 GPU 每秒能夠達到驚人的 125 TFLOP。
這就是 GPU 加速背后的整個想法。將所有張量傳輸到 GPU 內存,并讓設備在花費 CPU 的一小部分時間內執行所有矢量矩陣計算。如果沒有令人印象深刻的GPU計算能力,深度學習幾乎是不可能的。

TPU

在深度學習的巨大市場潛力的推動下,一些制造商將GPU替換為TPU,即Tensor處理單元。除了矢量矩陣乘法,GPU 還有其他任務要做,例如頂點插值和著色、H264 壓縮、驅動 HDMI 顯示器等。通過僅將所有晶體管用于Tensor點積,吞吐量增加,功耗降低。第一代僅適用于 8 位整數,后者也適用于浮點數。下面嵌入式板上的 TPU 都是基于整數的,除了 Jetson Nano。在此處閱讀深入的文章。

GPU陷阱

關于 GPU 算術,必須考慮幾點。
首先,堅持矩陣。GPU 架構專為這種操作而設計。編寫一個廣泛的 if-else 結構對于 GPU 和整體性能來說是災難性的。
另一點是內存交換會消耗很多效率。越來越多的數據從CPU內存(圖像通常所在的位置)和GPU內存的數據傳輸正在成為一個嚴重的瓶頸。您在 NVIDIA 的每個文檔中一遍又一遍地閱讀相同的內容;矢量矩陣點積越大,執行速度越快。
在這方面,請記住,Raspberry 及其替代品通常有一個用于 CPU 和 GPU 的大 RAM。它們僅共享相同的 DDR4 芯片。您的神經網絡不僅必須適合程序內存,而且還必須在 RAM 中留出空間,以便 CPU 內核可以運行。這有時會對網絡或要識別的對象數量施加限制。在這種情況下,選擇另一塊具有更多 RAM 的電路板可能是唯一的解決方案。所有這些都與GPU具有內存庫的PC中的圖形卡形成鮮明對比。
另一個區別是視頻卡上的 GPU 使用浮點或半浮點,有時也稱為小浮點。樹莓上的嵌入式 GPU 或替代板上的 TPU 使用 8 位或 16 位整數。您的神經網絡必須適應這些格式。如果無法做到這一點,請選擇另一個具有浮點運算的板,例如 Jetson Nano。
最后一個建議,不要過多地超頻 GPU。它們以低于 CPU 的頻率正常工作。ARM內核中的一些Mali GPU運行低至400 MHz。 超頻可以在冬季工作,但應用程序可能會在仲夏動搖。請記住,突然崩潰的是您在客戶端的視覺應用程序,而不是您簡單地重新啟動游戲。
當然,頁面上關于Raspberry上計算機視覺的評論也適用于這里。

Showstopper

您不能在 Raspberry Pi 或替代方案上訓練深度學習模型。如果您沒有計劃環游世界,則不會。這些板缺乏計算機能力來執行訓練期間所需的大量浮點多加法。即使是Google Coral也無法訓練網絡,因為該板上的TPU僅適用于特殊的預編譯TensorFlow網絡。只有網絡中的最后一層可以稍作更改。盡管Jetson Nano具有浮點CUDA,但它仍然不能很好地在可接受的時間內訓練網絡。一夜之間完成是NVIDIA在這里的建議。因此,最后,您只能在這些板上導入并運行已訓練的模型。

云服務

如前所述,訓練不是Raspberry Pi的選項,也不是任何其他小型SBC的選擇。但是,有一條逃生路線。所有主要的科技公司都有云服務。其中許多還包括運行配備 GPU 的 Linux 虛擬機的選項?,F在,您擁有了觸手可及的 CUDA 加速的最先進的 CPU。最好的免費服務之一是谷歌,GDrive 上有 15 GB 的免費空間,每天至少有 12 小時的免費計算機時間?,F在,只需一個簡單的 Raspberry Pi 就可以在一定程度上訓練您的深度學習模型。轉移訓練(部分調整重量而不改變拓撲)是可行的,因為這是一項相對容易的任務,您可以在幾個小時內完成。另一方面,訓練復雜的 GAN 需要更多的資源。它可能會迫使您購買額外的電力。

實踐

第一步是安裝操作系統,通常是Linux的衍生產品,如Ubuntu或Debian。這是容易的部分。
困難的部分是安裝深度學習模型。您必須弄清楚是否需要任何其他庫(OpenCV)或驅動程序(GPU支持)。請注意,只有 Jetson Nano 支持 CUDA,這是 PC 上使用的大多數深度學習軟件包。如果您想加速神經網絡,所有其他板都需要不同的 GPU 支持。Raspberry Pi 或替代方案的 GPU 驅動程序的開發是一個持續的過程。查看網絡上的社區。

最后一步是將神經網絡降低到可接受的比例。著名的 AlexNet 每 幀具有原始的 2 .3億次浮點運算。這永遠不會在簡單的單個 ARM 計算機或移動設備上快速運行。大多數模型都有某種減少策略。YOLO有Tiny YOLO,Caffe有Caffe2,TensorFlow有TensorFlow Lite。它們都使用以下一種或多種技術。
減小輸入大小。較小的圖像在第一層上節省了大量計算。
減少要分類的對象數量;它修剪了許多內層的大小。
盡可能將神經網絡從浮點數移植到字節。這也大大降低了內存負載。
另一種策略是將浮點數減少到單個比特,即XNOR網絡。 這里討論了這個迷人的想法。

樹莓派和替代品的比較。

Jetson Nano vs Google Coral vs Intel Neural stick,這里是比較。列表中的三個奇怪的是JeVois,Intel Neural Stick和Google Colar USB加速器。第一個有一個板載攝像頭,可以做很多事情,你可以在這里閱讀。
Intel Neural Stick和Google Colar 加速器是帶有特殊 TPU 芯片的 USB 加密狗,可執行所有Tensor計算。Intel Neural Stick附帶一個工具集,用于將 TensorFlow、Caffe 或 MXNet 模型遷移到神經棒的工作中間表示 (IR) 圖像中。
Google Coral與特殊的預編譯TensorFlow Lite網絡配合使用。如果神經網絡的拓撲及其所需的操作可以在TensorFlow中描述,那么它可能在Google Coral上運行良好。但是,由于其少量的 1 GB RAM,內存短缺仍然是一個問題。
Google USB加速器具有特殊的后端編譯器,可將TensorFlow Lite文件轉換為加密狗TPU的可執行模型。

Jetson Nano是唯一具有浮點GPU加速功能的單板計算機。它支持大多數模型,因為所有框架如TensorFlow,Caffe,PyTorch,YOLO,MXNet和其他在給定時間都使用的CUDA GPU支持庫。價格也非常有競爭力。這與蓬勃發展的深度學習市場有關,英偉達不想失去其突出地位。
并非所有型號都可以在每臺設備上運行。大多數情況下是由于內存不足或硬件和/或軟件不兼容。在這些情況下,可以使用多種解決方案。但是,它們的開發將非常耗時,并且結果通常會令人失望。

Benchmarks總是需要討論的。有些人可能會發現其他 FPS 使用相同的模型。這一切都與所使用的方法有關。我們使用Python,NVIDIA使用C++,谷歌使用他們的TensorFlow和TensorFlow Lite。Raspberry Pi 3 B+具有板載2.0 USB接口。兩種神經棒都可以處理3.0,這意味著它們可以更快地執行。另一方面,新的Raspberry Pi 4 B具有USB 3.0,與其前身相比,這將導致更高的FPS。

表中顯示的數字純粹是從輸入到輸出執行所需的時間。不考慮其他過程,例如捕獲和縮放圖像。順便說一下,不使用超頻。

wKgaomRUX82AdNbOAALhHQ2BMAU15.webp

樹莓派和深度學習

我們在 GitHub 上放置了一個深度學習庫和幾個深度學習網絡。結合簡單的C++示例代碼,您可以在裸露的樹莓派上構建深度學習應用程序。它非常用戶友好。此頁面上的更多信息。

wKgZomRUX86AAARTAAJx-Yijvfc17.webp


上面是在裸樹莓派上運行的 TensorFlow Lite 模型(帶有 COCO 訓練集MobileNetV1_SSD 300x300)的印象。
使用像 Ubuntu 這樣的 64 位操作系統,如果您超頻到 24 FPS,您將獲得 1925MHz 。
使用像Raspbian這樣的常規32位系統,一旦超頻到17FPS,您將獲得2000MHz 。

樹莓派和最近的替代品

下面在Raspberry Pi和適合實現深度學習模型的最新替代方案之間進行選擇。 大多數芯片上都有廣泛的GPU或TPU硬件。請注意,報價是從 2023 年 1 月開始的,即全球芯片嚴重短缺之前的價格。GPU 速度以 TOPS 表示,代表 Tera Operations P er Second。當然,最高分將是當您使用 8 位整數時。大多數供應商給出這個 8 位分數。如果你想在TFLOPS(Tera Floating Operations Per S econd)中有一個印象,請將數字除以四。雖然有些GPU不能處理單個8位,比如Jetson Nano,但分數仍然在TOPS,只是出于比較的原因。

wKgaomRUX86ALrNEAAGWbCBg4wM69.webpwKgZomRUX86AS5zVAAIn6zhEt-I72.webpwKgaomRUX8-AJFD-AAJFxr7w_9s76.webpwKgZomRUX8-AONfPAAIIu_3p9pI20.webpwKgaomRUX8-ACFxuAAGjdBbjGbE11.webpwKgZomRUX9CABDakAAJisfLe4KM22.webpwKgaomRUX9CAKF7sAAK8zx2HhK843.webpwKgZomRUX9GAF87kAARhWGeLgHU66.webpwKgaomRUX9GAYG42AAQ9lWxipV027.webpwKgZomRUX9GAU55oAAIvmqDlHeI16.webpwKgaomRUX9KADZ9HAAF0Ws0N09w40.webpwKgZomRUX9KANHHGAAG6Ae5Qe7Y24.webpwKgaomRUX9KAX3-_AAG3P6oNi2098.webpwKgZomRUX9OAVtM4AAEPwlacfK499.webpwKgaomRUX9OASfjUAANagltzow856.webpwKgZomRUX9OAYFhLAAQp_aPqyfw23.webp

單個微型 (40x48 mm) 可插拔模塊,具有完整的 I/O 和Edge TPU加速器。

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 樹莓派
    +關注

    關注

    113

    文章

    1647

    瀏覽量

    104826
  • 深度學習
    +關注

    關注

    73

    文章

    5249

    瀏覽量

    120014
  • tensorflow
    +關注

    關注

    13

    文章

    313

    瀏覽量

    60292
收藏 人收藏

    評論

    相關推薦

    尋找松下TX2-12V的替代品

    松下的效益不行了,要搬場,繼電器要漲價,求替代品。哪位大俠可以幫助一下。謝謝。原來用的型號是TX2-12V。附件中是他的數據手冊。
    發表于 11-17 11:42

    尋求Ubuntu13系統下軟件替代品……

    下的kile軟件的替代品是什么?我在ubuntu軟件中心找到了一個kile,但是安裝后總感覺什么都沒有,模板也找不到,完全不會用,球大神給講解下……還有,Visual Studio的替代品,做fpga
    發表于 10-26 10:06

    如何尋找芯片IS61LV51216的替代品

    貼片,44腳的IS61LV51216是一個8M容量,結構為512K*16位字長的高速率SRAM,它的替代品有?碼庫網上沒查到呀?怎么去找呢?
    發表于 05-17 17:34

    MMBFJ176替代品??

    如題,需要尋找一個MMBFJ176替代品,用于保證電化學檢測器在斷電的情況下兩端電位不會偏差太大。附件為MMBFJ176規格書,望大神回復下,謝謝!
    發表于 07-21 08:33

    IF增益可控放大IC,即MC1350的替代品

    MC1350是MOTO的IF AMPLIFIER,中頻增益自動控制(AGC)芯片,但現在MOTO已經停產了,故本人想找它的替代品或升級版,據說MOTO 把MC1350授權給LANSDALE公司生產了(產品為ML1350),但價格翻了好幾倍,接受不了,不知有沒有知道替代品?
    發表于 08-22 14:10

    請問儀表放大器AD624有沒有便宜的完全兼容的替代品?

    儀表放大器AD624有沒有便宜的完全兼容的替代品?市場上這個芯片有點貴,還不太好買到,想找兼容替代品,性能稍低點也可以,能滿足要求就行,求大神推薦,謝謝。
    發表于 01-23 09:27

    電解電容廉價替代方案(尋找紅寶石電容替代品

    大家好公司boss讓我論證一下紅寶石電解電容的替代,主要是為了降低成本。請問這個器件有合適的替代品么,要做一些必要的驗證么?多謝
    發表于 04-27 08:30

    是否有TDA2003的替代品

    是否有TDA2003的替代品,或者任何人都可以推薦類似的音頻放大器,可以驅動低至1歐姆的負載? #TDA2003
    發表于 08-05 10:19

    如何使用ISP1763作為替代品?

    已經過時,ST-Ericson提供的下一個系列是ISP1763。 ISP1760采用128引腳配置,具有16地址線和32數據線。但新的ISP1763只是64引腳,有8個地址和32個數據引腳。我們如何使用ISP1763作為替代品?這有什么替代方案嗎?-謝謝
    發表于 09-04 07:00

    【資料分享】PISTORM for COMMODORE AMIGA(68000 CPU 替代品

    描述PISTORM for COMMODORE AMIGA(68000 CPU 替代品)4層PCB 項目信息: PiStorm 本身是一個適配器板,旨在與 Raspberry Pi Model
    發表于 06-17 09:41

    Commodore 6540 ROM的替代品

    軟件對其進行測試(一個非常挑剔的程序是 PET 的 INVADERS;我用它來進行快速測試)。注意:適配器將作為所有 ROM 芯片的直接替代品,包括字符 ROM。PCB
    發表于 09-02 07:26

    有沒有制作LIS2DH12TR這個內存的替代品?

    有沒有制作LIS2DH12TR這個內存的替代品?
    發表于 12-06 07:29

    請問有L6376PD的直接替代品嗎?

    有L6376PD的直接替代品
    發表于 12-26 10:02

    請問一下有stm32f429iit6的替代品嗎?

    有stm32f429iit6的替代品嗎?
    發表于 01-05 06:20

    MC908JL3ECDWE的替代品是什么?

    我正在尋找 8 位 MCU MC908JL3ECDWE 的替代品,因為不建議將其用于新設計(已過時)。為了最大限度地減少工作量,我們希望減少對 28 引腳 SOIC 封裝的替換和簡單的代碼更改
    發表于 06-05 06:17
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>