冬天終于來了,而與之一起到來的是 Coral 新發(fā)布的 C++ 和 Python API 及工具,還有針對(duì) Edge TPU 優(yōu)化的新模型,以及對(duì)基于 TensorFlow 2.0 工作流的進(jìn)一步支持。
C++
https://github.com/google-coral/libcoral
Python API
https://github.com/google-coral/pycoral
針對(duì) Edge TPU 優(yōu)化
https://coral.ai/models
Coral(https://coral.ai)是一個(gè)可用于構(gòu)建本地 AI 產(chǎn)品的完整工具包。我們的設(shè)備端推理功能,以及借助 TensorFlow Lite 和 Edge TPU,支持您構(gòu)建高效、私密、快速和離線的產(chǎn)品。
TensorFlow Lite 和 Edge TPU
https://coral.ai/technology
之前,我們提供了 Python 和 C++ 版本的 API,從而讓開發(fā)者可以利用 Edge TPU 來提高推理速度。通過對(duì)機(jī)器學(xué)習(xí)模型進(jìn)行離線處理的方式,可以大大節(jié)省帶寬和云計(jì)算成本。同時(shí)這樣做也可以使數(shù)據(jù)保留在本地,保護(hù)用戶的隱私。最近,我們一直在努力重構(gòu)我們的 API,使其更加模塊化、重用性更強(qiáng)并擁有更好的性能。與此同時(shí),我們還在減少不必要的 API 抽象,并開放開發(fā)者所熟悉的更多原生 TensorFlow Lite API。
因此,在最新的版本中,我們現(xiàn)在提供了兩個(gè)獨(dú)立的復(fù)用庫,每個(gè)庫都依托于強(qiáng)大的 TensorFlow Lite API 構(gòu)建而成,并且在自己的存儲(chǔ)庫中各自獨(dú)立,其分別是適用于 C++ 的 libcoral 和適用于 Python 的 PyCoral。
libcoral
https://github.com/google-coral/libcoral
Python 的PyCoral
https://github.com/google-coral/pycoral
libcoral (C++)
與我們之前的一些 API 不同,libcoral 并不會(huì)隱藏 tflite::Interpreter。相反,我們會(huì)將這個(gè)原生的 TensorFlow Lite 類打造成一個(gè)頭等組件,并提供一些額外的輔助 API,以在您處理常見模型(例如分類和檢測(cè))時(shí),幫您簡(jiǎn)化代碼。
使用新的 libcoral 庫在 C++ 中執(zhí)行推理時(shí),開發(fā)者通常應(yīng)該遵循以下模式:
1. 使用 Edge TPU 上下文創(chuàng)建 tflite::Interpreter 實(shí)例并分配內(nèi)存
為簡(jiǎn)化這一步驟,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ù)來實(shí)現(xiàn)更高的性能,這兩個(gè)函數(shù)可以分別處理輸入數(shù)據(jù)而無需從另一個(gè)內(nèi)存區(qū)域或從DMA文件描述符進(jìn)行復(fù)制。
4. 處理 interpreter 的輸出
為簡(jiǎn)化這一步驟,libcoral 提供了一些適配器,所需的代碼更少:
auto result = coral::GetClassificationResults( *interpreter, /* threshold= */0.0f, /*top_k=*/3);
上方是分類適配器的示例,開發(fā)者可以在其中指定最小置信度閾值,以及返回結(jié)果的數(shù)量上限。該 API 還具有一個(gè)檢測(cè)適配器,該適配器擁有自己的結(jié)果過濾參數(shù)。
如需查看完整的示例應(yīng)用源代碼,請(qǐng)參閱 GitHub 上的 classify_image.cc,如需獲取有關(guān)如何將 libcoral 集成到應(yīng)用中的說明,請(qǐng)參考 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
我們還在此次的新版本中帶來了對(duì)設(shè)備端再訓(xùn)練的更新,能夠在更新的 ImprintingEngine 上將 imprinting 函數(shù)與推理解耦。新的設(shè)計(jì)讓 imprinting 引擎能夠直接與 tflite::Interpreter 一起使用。
為方便尋找主機(jī)上可用的 Edge TPU,libcoral 支持諸如 "usb:0" 或 "pci:1" 之類的標(biāo)簽。您可借此更加輕松地管理多 Edge TPU 系統(tǒng)的資源。
最后,我們做了很多性能上的改進(jìn),例如更高效的內(nèi)存使用和基于內(nèi)存而不是基于文件的抽象。此外,通過將 Abseil(https://abseil.io/)庫用于誤差傳播、通用接口和其他常見模式,API 的設(shè)計(jì)也更加一致,應(yīng)該可以提供更一致和穩(wěn)定的開發(fā)者體驗(yàn)。
PyCoral (Python)
新的 PyCoral 庫(在新的 pycoral Python 模塊中提供)遵循了 libcoral 引入的一些設(shè)計(jì)模式,并為我們的 C++ 和 Python API 帶來了平衡。PyCoral 為分類和檢測(cè)以及基于相同標(biāo)簽的 TPU 語義尋址設(shè)計(jì)了相同的 imprinting 解耦設(shè)計(jì)和模型適配器。
在 PyCoral 中,“運(yùn)行推理”功能現(xiàn)在已完全委托給原生的 TensorFlow Lite 庫,這是因?yàn)槲覀兎艞壛擞糜诔橄?TensorFlow 解釋器的模型“引擎”。借助這項(xiàng)更改,我們消除了由特定于 Coral 的 BasicEngine、ClassificationEngine 和 DetectionEngine 類(這些來自“Edge TPU Python 庫”的 API 現(xiàn)已被棄用)所引入的代碼重復(fù)。
要使用 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)
如需獲取完整詳細(xì)的示例代碼,請(qǐng)查看我們的 Python 版文檔 (https://coral.ai/docs/edgetpu/tflite-python/)。
Coral Model Garden 更新
在這一版本中,我們通過 MobileDet 進(jìn)一步擴(kuò)展了 Coral Model Garden。MobileDet 指的是使用 TensorFlow 對(duì)象檢測(cè) API 的輕量級(jí)單發(fā)檢測(cè)器系列,該系列在 Edge TPU 上實(shí)現(xiàn)了最先進(jìn)的精度和延遲權(quán)衡。與 MobileNet 系列模型相比,MobileDet 是一種低延遲的檢測(cè)模型,具有更高的準(zhǔn)確性。
查看 Coral 為 Edge TPU 提供的完整模型集合(https://coral.ai/models),其中包括分類、檢測(cè)、分割和專門為設(shè)備端訓(xùn)練準(zhǔn)備的模型。
將我們的整個(gè)工作流和模型集合遷移到 TensorFlow 2 是一項(xiàng)長(zhǎng)期工作。從這個(gè)版本的 Coral 機(jī)器學(xué)習(xí) API 開始,我們將引入對(duì)基于 TensorFlow 2 的工作流的支持。目前,MobileNet v1 (ImageNet)、MobileNet v2 (ImageNet)、MobileNet v3 (ImageNet)、ResNet50 v1 (ImageNet) 和 UNet MobileNet v2 (Oxford pets) 均支持使用 TensorFlow 2 進(jìn)行訓(xùn)練和轉(zhuǎn)換。
Model Pipelining
libcoral 和 PyCoral 都已將 Model Pipelining 功能從測(cè)試狀態(tài)升級(jí)到正式使用狀態(tài)。借助 Model Pipelining 功能,我們能夠分割大型模型,然后將其分配到多個(gè) Edge TPU 上,從而大大加快模型的運(yùn)行速度。
請(qǐng)參考對(duì)應(yīng)文檔以查看該 API 的 C++ 和 Python 版本示例。
C++
https://coral.ai/docs/reference/cpp/pipeline/
Python
https://coral.ai/docs/reference/py/pycoral.pipeline/
我們會(huì)通過 Edge TPU 編譯器完成模型分割,該編譯器采用參數(shù)計(jì)數(shù)算法,可將模型分割成參數(shù)大小相近的片段。對(duì)于此算法無法提供所需吞吐量的情況,我們?cè)谶@一版本中引入了一個(gè)新工具,該工具支持基于分析的算法,通過實(shí)際多次運(yùn)行模型,然后根據(jù)觀察到的延遲來劃分片段,因此可能會(huì)得到更平衡的輸出。
新的 profiling_partition 工具可以這樣使用:
./profiling_partition --edgetpu_compiler_binary $PATH_TO_COMPILER --model_path $PATH_TO_MODEL --output_dir $OUT_DIR --num_segments $NUM_SEGMENTS
了解詳情
如需了解有關(guān)上述 Coral API 的詳細(xì)信息,請(qǐng)參閱以下文檔:
使用 C++ 在 Edge TPU 上運(yùn)行推理
https://coral.ai/docs/edgetpu/tflite-cpp/
使用 Python 在 Edge TPU 上運(yùn)行推理
https://coral.ai/docs/edgetpu/tflite-python/
通過多個(gè) Edge TPU 對(duì)模型進(jìn)行流水設(shè)計(jì)
https://coral.ai/docs/edgetpu/pipeline/
在 Edge TPU 上執(zhí)行遷移學(xué)習(xí)
https://coral.ai/docs/edgetpu/models-intro/#transfer-learning-on-device
Coral Model Garden
https://coral.ai/models
責(zé)任編輯:xj
原文標(biāo)題:Coral 迎來多項(xiàng)更新,為邊緣 AI 注入更多精彩!
文章出處:【微信公眾號(hào):TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
AI
+關(guān)注
關(guān)注
87文章
34146瀏覽量
275277 -
C++
+關(guān)注
關(guān)注
22文章
2117瀏覽量
74765 -
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86142
原文標(biāo)題:Coral 迎來多項(xiàng)更新,為邊緣 AI 注入更多精彩!
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
AI邊緣計(jì)算網(wǎng)關(guān)_AI邊緣智能網(wǎng)關(guān)賦能自助政務(wù)服務(wù)機(jī)_廈門計(jì)訊物聯(lián)科技有限公司

GUI Guider1.9.1新版本8大新亮點(diǎn)總結(jié) 為HMI開發(fā)注入新活力

Deepseek海思SD3403邊緣計(jì)算AI產(chǎn)品系統(tǒng)
AI賦能邊緣網(wǎng)關(guān):開啟智能時(shí)代的新藍(lán)海
英飛凌發(fā)布邊緣AI軟件新品牌DEEPCRAFT?
華泰證券:豆包AI取得多項(xiàng)進(jìn)展
瑞薩電子邊緣AI技術(shù)研討會(huì)亮點(diǎn)一覽
Samsung One UI 6.1.1開通更新 為全球更多用戶帶來Galaxy AI最新功能
華邦電子為邊緣設(shè)備打造生成式AI性能
邊緣AI放大招!AI模型支持虛擬數(shù)智人和機(jī)械臂,英特爾邊緣平臺(tái)助力伙伴加速創(chuàng)新

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

評(píng)論