0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

Python的PyCoral迎來多項更新,為邊緣AI注入更多精彩

Tensorflowers ? 來源:TensorFlow ? 作者: Carlos Mendon?a,C ? 2020-11-26 09:47 ? 次閱讀

冬天終于來了,而與之一起到來的是 Coral 新發(fā)布的 C++Python API 及工具,還有針對 Edge TPU 優(yōu)化的新模型,以及對基于 TensorFlow 2.0 工作流的進一步支持。

C++
https://github.com/google-coral/libcoral

Python API
https://github.com/google-coral/pycoral

針對 Edge TPU 優(yōu)化
https://coral.ai/models

Coral(https://coral.ai)是一個可用于構(gòu)建本地 AI 產(chǎn)品的完整工具包。我們的設備端推理功能,以及借助 TensorFlow Lite 和 Edge TPU,支持您構(gòu)建高效、私密、快速和離線的產(chǎn)品。

TensorFlow Lite 和 Edge TPU
https://coral.ai/technology

之前,我們提供了 Python 和 C++ 版本的 API,從而讓開發(fā)者可以利用 Edge TPU 來提高推理速度。通過對機器學習模型進行離線處理的方式,可以大大節(jié)省帶寬和云計算成本。同時這樣做也可以使數(shù)據(jù)保留在本地,保護用戶的隱私。最近,我們一直在努力重構(gòu)我們的 API,使其更加模塊化、重用性更強并擁有更好的性能。與此同時,我們還在減少不必要的 API 抽象,并開放開發(fā)者所熟悉的更多原生 TensorFlow Lite API。

因此,在最新的版本中,我們現(xiàn)在提供了兩個獨立的復用庫,每個庫都依托于強大的 TensorFlow Lite API 構(gòu)建而成,并且在自己的存儲庫中各自獨立,其分別是適用于 C++ 的 libcoral 和適用于 Python 的 PyCoral。

libcoral
https://github.com/google-coral/libcoral

Python 的PyCoral
https://github.com/google-coral/pycoral

libcoral (C++)

與我們之前的一些 API 不同,libcoral 并不會隱藏 tflite::Interpreter。相反,我們會將這個原生的 TensorFlow Lite 類打造成一個頭等組件,并提供一些額外的輔助 API,以在您處理常見模型(例如分類和檢測)時,幫您簡化代碼。

使用新的 libcoral 庫在 C++ 中執(zhí)行推理時,開發(fā)者通常應該遵循以下模式:

1. 使用 Edge TPU 上下文創(chuàng)建 tflite::Interpreter 實例并分配內(nèi)存

為簡化這一步驟,libcoral 提供了 MakeEdgeTpuInterpreter() 函數(shù):

// Load the model auto model = coral::GetFlag(FLAGS_model_path)); // Get the Edge TPU context auto tpu_context = coral::ContainsEdgeTpuCustomOp(*model) ? coral::GetEdgeTpuContextOrDie() : nullptr; // Get the interpreter auto interpreter = coral::MakeEdgeTpuInterpreterOrDie( *model, tpu_context.get());

2. 配置 interpreter 的輸入

3. 調(diào)用 interpreter:

interpreter->Invoke();

作為 Invoke() 的替代方案,您可以使用 InvokeWithMemBuffer() 和 InvokeWithDmaBuffer() 函數(shù)來實現(xiàn)更高的性能,這兩個函數(shù)可以分別處理輸入數(shù)據(jù)而無需從另一個內(nèi)存區(qū)域或從DMA文件描述符進行復制。

4. 處理 interpreter 的輸出

為簡化這一步驟,libcoral 提供了一些適配器,所需的代碼更少:

auto result = coral::GetClassificationResults( *interpreter, /* threshold= */0.0f, /*top_k=*/3);

上方是分類適配器的示例,開發(fā)者可以在其中指定最小置信度閾值,以及返回結(jié)果的數(shù)量上限。該 API 還具有一個檢測適配器,該適配器擁有自己的結(jié)果過濾參數(shù)。

如需查看完整的示例應用源代碼,請參閱 GitHub 上的 classify_image.cc,如需獲取有關如何將 libcoral 集成到應用中的說明,請參考 GitHub 上的 README.md。

GitHub 上的 classify_image.cc
https://github.com/google-coral/libcoral/blob/master/coral/examples/classify_image.cc

GitHub 上的 README.md
https://github.com/google-coral/libcoral/blob/master/README.md

我們還在此次的新版本中帶來了對設備端再訓練的更新,能夠在更新的 ImprintingEngine 上將 imprinting 函數(shù)與推理解耦。新的設計讓 imprinting 引擎能夠直接與 tflite::Interpreter 一起使用。

為方便尋找主機上可用的 Edge TPU,libcoral 支持諸如 "usb:0" 或 "pci:1" 之類的標簽。您可借此更加輕松地管理多 Edge TPU 系統(tǒng)的資源。

最后,我們做了很多性能上的改進,例如更高效的內(nèi)存使用和基于內(nèi)存而不是基于文件的抽象。此外,通過將 Abseil(https://abseil.io/)庫用于誤差傳播、通用接口和其他常見模式,API 的設計也更加一致,應該可以提供更一致和穩(wěn)定的開發(fā)者體驗。

PyCoral (Python)

新的 PyCoral 庫(在新的 pycoral Python 模塊中提供)遵循了 libcoral 引入的一些設計模式,并為我們的 C++ 和 Python API 帶來了平衡。PyCoral 為分類和檢測以及基于相同標簽的 TPU 語義尋址設計了相同的 imprinting 解耦設計和模型適配器。

在 PyCoral 中,“運行推理”功能現(xiàn)在已完全委托給原生的 TensorFlow Lite 庫,這是因為我們放棄了用于抽象 TensorFlow 解釋器的模型“引擎”。借助這項更改,我們消除了由特定于 Coral 的 BasicEngine、ClassificationEngine 和 DetectionEngine 類(這些來自“Edge TPU Python 庫”的 API 現(xiàn)已被棄用)所引入的代碼重復。

要使用 PyCoral 執(zhí)行推理,我們可以遵循與 libcoral 類似的模式:

1. 創(chuàng)建 interpreter:

interpreter = edgetpu.make_interpreter(model_file) interpreter.allocate_tensors()

2. 配置 interpreter 的輸入:

common.set_input(interpreter, image)

3. 調(diào)用 interpreter:

interpreter.invoke()

4. 處理 interpreter 的輸出:

classes = classify.get_classes(interpreter, top_k=3)

如需獲取完整詳細的示例代碼,請查看我們的 Python 版文檔 (https://coral.ai/docs/edgetpu/tflite-python/)。

Coral Model Garden 更新

在這一版本中,我們通過 MobileDet 進一步擴展了 Coral Model Garden。MobileDet 指的是使用 TensorFlow 對象檢測 API 的輕量級單發(fā)檢測器系列,該系列在 Edge TPU 上實現(xiàn)了最先進的精度和延遲權衡。與 MobileNet 系列模型相比,MobileDet 是一種低延遲的檢測模型,具有更高的準確性。


查看 Coral 為 Edge TPU 提供的完整模型集合(https://coral.ai/models),其中包括分類、檢測、分割和專門為設備端訓練準備的模型。

將我們的整個工作流和模型集合遷移到 TensorFlow 2 是一項長期工作。從這個版本的 Coral 機器學習 API 開始,我們將引入對基于 TensorFlow 2 的工作流的支持。目前,MobileNet v1 (ImageNet)、MobileNet v2 (ImageNet)、MobileNet v3 (ImageNet)、ResNet50 v1 (ImageNet) 和 UNet MobileNet v2 (Oxford pets) 均支持使用 TensorFlow 2 進行訓練和轉(zhuǎn)換。

Model Pipelining

libcoral 和 PyCoral 都已將 Model Pipelining 功能從測試狀態(tài)升級到正式使用狀態(tài)。借助 Model Pipelining 功能,我們能夠分割大型模型,然后將其分配到多個 Edge TPU 上,從而大大加快模型的運行速度。


請參考對應文檔以查看該 API 的 C++ 和 Python 版本示例。

C++
https://coral.ai/docs/reference/cpp/pipeline/

Python
https://coral.ai/docs/reference/py/pycoral.pipeline/

我們會通過 Edge TPU 編譯器完成模型分割,該編譯器采用參數(shù)計數(shù)算法,可將模型分割成參數(shù)大小相近的片段。對于此算法無法提供所需吞吐量的情況,我們在這一版本中引入了一個新工具,該工具支持基于分析的算法,通過實際多次運行模型,然后根據(jù)觀察到的延遲來劃分片段,因此可能會得到更平衡的輸出。


新的 profiling_partition 工具可以這樣使用:

./profiling_partition --edgetpu_compiler_binary $PATH_TO_COMPILER --model_path $PATH_TO_MODEL --output_dir $OUT_DIR --num_segments $NUM_SEGMENTS

了解詳情

如需了解有關上述 Coral API 的詳細信息,請參閱以下文檔:

使用 C++ 在 Edge TPU 上運行推理
https://coral.ai/docs/edgetpu/tflite-cpp/

使用 Python 在 Edge TPU 上運行推理
https://coral.ai/docs/edgetpu/tflite-python/

通過多個 Edge TPU 對模型進行流水設計
https://coral.ai/docs/edgetpu/pipeline/

在 Edge TPU 上執(zhí)行遷移學習
https://coral.ai/docs/edgetpu/models-intro/#transfer-learning-on-device

Coral Model Garden
https://coral.ai/models

責任編輯:xj

原文標題:Coral 迎來多項更新,為邊緣 AI 注入更多精彩!

文章出處:【微信公眾號:TensorFlow】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關注

    關注

    87

    文章

    30947

    瀏覽量

    269216
  • C++
    C++
    +關注

    關注

    22

    文章

    2109

    瀏覽量

    73678
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84729

原文標題:Coral 迎來多項更新,為邊緣 AI 注入更多精彩!

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    華泰證券:豆包AI取得多項進展

    近日,華泰證券最新研報指出,豆包AI近期迎來多項關鍵性突破,值得投資者關注。這些突破主要集中在AIDC(人工智能數(shù)據(jù)中心)、端側(cè)AI以及光模塊等領域。 豆包
    的頭像 發(fā)表于 12-17 14:24 ?395次閱讀

    瑞薩電子邊緣AI技術研討會亮點一覽

    解決方案,10月24日攜手合作伙伴在深圳舉辦以“讓AI發(fā)生”為主題瑞薩電子邊緣AI技術研討會,通過深入的主題演講、豐富的技術研討會和實際案例分享,大家呈現(xiàn)一場
    的頭像 發(fā)表于 10-18 09:23 ?456次閱讀

    什么是邊緣AI?邊緣AI的供電挑戰(zhàn)

    RECOM 的 RACM1200-V 采用數(shù)字通信,可輕松集成到邊緣 AI設計中。
    的頭像 發(fā)表于 09-02 11:52 ?484次閱讀
    什么是<b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>?<b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>的供電挑戰(zhàn)

    華邦電子邊緣設備打造生成式AI性能

    在以大模型基礎的云端 AI 廣泛賦能各行各業(yè)后,邊緣設備對于 AI 也釋放出巨大需求,AI 也在從云端向
    的頭像 發(fā)表于 08-19 16:14 ?609次閱讀

    邊緣AI放大招!AI模型支持虛擬數(shù)智人和機械臂,英特爾邊緣平臺助力伙伴加速創(chuàng)新

    7月25日,在第17屆英特爾網(wǎng)絡與邊緣計算行業(yè)大會上,英特爾和超過400位生態(tài)伙伴和客戶代表齊聚一堂,共同探討邊緣AI的未來發(fā)展趨勢,并介紹了眾多基于英特爾邊緣
    的頭像 發(fā)表于 07-29 18:05 ?4679次閱讀
    <b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>放大招!<b class='flag-5'>AI</b>模型支持虛擬數(shù)智人和機械臂,英特爾<b class='flag-5'>邊緣</b>平臺助力伙伴加速創(chuàng)新

    智能邊緣放大招!英特爾舉辦2024網(wǎng)絡與邊緣計算行業(yè)大會,邊緣AI創(chuàng)新助力多元化應用

    今日,第十七屆英特爾網(wǎng)絡與邊緣計算行業(yè)大會在天津舉行,超過400位生態(tài)伙伴和客戶代表齊聚一堂,與英特爾共同探討邊緣AI的未來發(fā)展趨勢,并介紹了眾多基于英特爾邊緣
    的頭像 發(fā)表于 07-25 09:10 ?3005次閱讀
    智能<b class='flag-5'>邊緣</b>放大招!英特爾舉辦2024網(wǎng)絡與<b class='flag-5'>邊緣</b>計算行業(yè)大會,<b class='flag-5'>邊緣</b><b class='flag-5'>AI</b>創(chuàng)新助力多元化應用

    怎么導出python邊緣計算中的APP?

    怎么導出python邊緣計算中的APP,想進行修改又找不到源碼
    發(fā)表于 07-25 06:13

    PythonAI中的應用實例

    Python在人工智能(AI)領域的應用極為廣泛且深入,從基礎的數(shù)據(jù)處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討Python
    的頭像 發(fā)表于 07-19 17:16 ?1125次閱讀

    邊緣AI需求爆發(fā),邊緣計算網(wǎng)關亟待革新

    CAGR17.4%,到2030年達到8004.3百萬美元。如果將范圍擴大到整個邊緣AI市場,根據(jù)英特爾公司高級副總裁兼網(wǎng)絡與邊緣事業(yè)部總經(jīng)理Sachin Katti在分享中提到的數(shù)據(jù)
    的頭像 發(fā)表于 06-20 01:04 ?2750次閱讀

    ai邊緣盒子有哪些用途?ai視頻分析邊緣計算盒子詳解

    近年來,隨著人工智能和邊緣計算的發(fā)展,一種名為AI邊緣盒子的新型設備正逐漸引起廣泛關注。作為一種集成了邊緣計算和AI算法處理能力的設備,
    的頭像 發(fā)表于 05-29 14:24 ?996次閱讀
    <b class='flag-5'>ai</b><b class='flag-5'>邊緣</b>盒子有哪些用途?<b class='flag-5'>ai</b>視頻分析<b class='flag-5'>邊緣</b>計算盒子詳解

    小鵬汽車迎來AI負責人,研發(fā)XNGP技術

    小鵬汽車近日迎來新的AI團隊負責人——Cruise公司前高級資深機器學習工程師LiuXianming。他將帶領小鵬AI團隊研發(fā)XNGP技術,公司的自動駕駛領域
    的頭像 發(fā)表于 03-26 10:43 ?692次閱讀

    英特爾發(fā)布全新邊緣計算平臺,解決AI邊緣落地難題

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)AI越來越多地在邊緣側(cè)部署。Gartner最新預測數(shù)據(jù)顯示,到2025年,50%以上的企業(yè)管理數(shù)據(jù)將在數(shù)據(jù)中心或云之外創(chuàng)建和處理。隨著AI自動化帶來
    的頭像 發(fā)表于 03-12 09:06 ?4362次閱讀
    英特爾發(fā)布全新<b class='flag-5'>邊緣</b>計算平臺,解決<b class='flag-5'>AI</b><b class='flag-5'>邊緣</b>落地難題

    什么是AI邊緣計算,AI邊緣計算的特點和優(yōu)勢介紹

    隨著人工智能的迅猛發(fā)展,AI邊緣計算成為了熱門話題。那么什么是AI邊緣計算呢?簡單來說,它是將人工智能技術引入邊緣計算的新興領域,旨在將計算
    的頭像 發(fā)表于 02-01 11:42 ?903次閱讀

    RA家庭注入更新安全用戶密鑰 -應用項目

    電子發(fā)燒友網(wǎng)站提供《RA家庭注入更新安全用戶密鑰 -應用項目.pdf》資料免費下載
    發(fā)表于 01-14 11:15 ?0次下載
    <b class='flag-5'>為</b>RA家庭<b class='flag-5'>注入</b>和<b class='flag-5'>更新</b>安全用戶密鑰 -應用項目

    邊緣AI它到底是什么?能做什么?

    邊緣,減少了數(shù)據(jù)的傳輸延遲和依賴云端的通信需求。邊緣AI能夠在接近數(shù)據(jù)源的設備上進行實時決策和推理,這許多應用領域帶來了革命性的改變。 邊緣
    的頭像 發(fā)表于 01-11 14:44 ?1320次閱讀