發(fā)布人:技術(shù)推廣工程師 Khanh LeViet,代表 TensorFlow Lite 團(tuán)隊(duì)
在今年的 Google I/O 大會(huì)上,我們很高興地宣布推出了多項(xiàng)產(chǎn)品更新。這些更新可以幫助簡(jiǎn)化移動(dòng)設(shè)備上,目標(biāo)檢測(cè)模型的訓(xùn)練和部署的過(guò)程:
設(shè)備端 ML 學(xué)習(xí)路徑:關(guān)于如何在移動(dòng)設(shè)備上,訓(xùn)練和部署自定義目標(biāo)檢測(cè)模型的分步教程,無(wú)需機(jī)器學(xué)習(xí)專業(yè)知識(shí)。
設(shè)備端 ML 學(xué)習(xí)路徑
https://developers.google.com/learn/pathways/going-further-object-detection
EfficientDet-Lite:針對(duì)移動(dòng)設(shè)備優(yōu)化的精尖目標(biāo)檢測(cè)模型架構(gòu)。
EfficientDet-Lite
https://hub.tensorflow.google.cn/s?deployment-format=lite&q=efficientdet-lite
用于目標(biāo)檢測(cè)的 TensorFlow Lite Model Maker:只需幾行代碼即可訓(xùn)練自定義模型
目標(biāo)檢測(cè)
http://tensorflow.google.cn/lite/tutorials/model_maker_object_detection
TensorFlow Lite Metadata Writer API:簡(jiǎn)化元數(shù)據(jù)創(chuàng)建以生成與 TFLite Task Library 兼容的自定義目標(biāo)檢測(cè)模型。
Metadata Writer API
http://tensorflow.google.cn/lite/convert/metadata_writer_tutorial
TFLite Task Library
http://tensorflow.google.cn/lite/inference_with_metadata/task_library/object_detector
盡管目標(biāo)檢測(cè)是非常常見的 ML 用例,但可能也是最難執(zhí)行的用例之一。我們一直致力于為您簡(jiǎn)化相關(guān)操作。在這篇文章中,我們將向您介紹如何利用 TensorFlow Lite 的最新產(chǎn)品、通過(guò)使用您自己的訓(xùn)練數(shù)據(jù)構(gòu)建最先進(jìn)的移動(dòng)端目標(biāo)檢測(cè)。
設(shè)備端 ML 學(xué)習(xí)路徑:
在 12 分鐘內(nèi)了解如何訓(xùn)練和部署自定義 TensorFlow Lite 目標(biāo)檢測(cè)模型
有了 TensorFlow Lite,訓(xùn)練自定義目標(biāo)檢測(cè)模型并將其部署到 Android 應(yīng)用變得非常容易。我們已經(jīng)發(fā)布了學(xué)習(xí)路徑,可指導(dǎo)您按步驟順利完成相關(guān)操作。
您可以通過(guò)視頻了解構(gòu)建自定義目標(biāo)檢測(cè)器的具體步驟:
1. 準(zhǔn)備訓(xùn)練數(shù)據(jù)。
2. 使用 TensorFlow Lite Model Maker 訓(xùn)練自定義目標(biāo)檢測(cè)模型。
3. 使用 TensorFlow Lite Task Library 在您的移動(dòng)應(yīng)用上部署模型。
我們還在 GitHub 上提供了帶有源代碼的 Codelab,供您自行試運(yùn)行代碼。請(qǐng)嘗試一下,并告訴我們您的反饋!
Codelab
https://codelabs.developers.google.com/tflite-object-detection-android
告訴我們
https://github.com/googlecodelabs/odml-pathways/issues
EfficientDet-Lite:
移動(dòng)端設(shè)備目標(biāo)檢測(cè)最優(yōu)模型架構(gòu)之一
在移動(dòng)設(shè)備上運(yùn)行機(jī)器學(xué)習(xí)模型意味著我們始終需要在模型精度、推理速度和模型大小之間進(jìn)行權(quán)衡。最優(yōu)的移動(dòng)端模型不僅需要更加精準(zhǔn),還需要更快地運(yùn)行速度和更小的體積。我們采用了 EfficientDet 論文中發(fā)布的神經(jīng)架構(gòu)搜索技術(shù),并優(yōu)化了在移動(dòng)設(shè)備上運(yùn)行的模型架構(gòu),最終推出了名為 EfficientDet-Lite 的新型移動(dòng)設(shè)備目標(biāo)檢測(cè)模型系列。
EfficientDet
https://arxiv.org/abs/1911.09070
EfficientDet-Lite 有 5 個(gè)不同的版本:從 Lite0 到 Lite4。較小的版本運(yùn)行速度更快,而較大的版本精度更高。您可以先用多個(gè)版本的 EfficientNet-Lite 進(jìn)行試驗(yàn),然后選擇最適合您用例的版本。
* 整型量化模型的大小
** 在 Pixel 4 上使用 4 個(gè) CPU 線程測(cè)量得出的延遲時(shí)間
*** 平均精度是 COCO 2017 驗(yàn)證數(shù)據(jù)集上的 mAP(平均精度均值)
我們已將在 COCO 數(shù)據(jù)集上訓(xùn)練的 EfficientDet-Lite 模型發(fā)布到 TensorFlow Hub。您還可以使用自己的訓(xùn)練數(shù)據(jù),通過(guò) TensorFlow Lite Model Maker 訓(xùn)練 EfficientDet-Lite 自定義模型。
TensorFlow Hub
https://hub.tensorflow.google.cn/s?q=efficientdet/lite
TensorFlow Lite Model Maker:幾行代碼使用遷移學(xué)習(xí)訓(xùn)練自定義目標(biāo)檢測(cè)模型
TensorFlow Lite Model Maker 是 Python 庫(kù),可顯著簡(jiǎn)化使用自定義數(shù)據(jù)集訓(xùn)練機(jī)器學(xué)習(xí)模型的過(guò)程。該庫(kù)利用遷移學(xué)習(xí),僅使用少量圖像即可訓(xùn)練高質(zhì)量模型。
TensorFlow Lite Model Maker
http://tensorflow.google.cn/lite/guide/model_maker
Model Maker 接受 PASCAL VOC 格式和 Cloud AutoML 的 CSV 格式的數(shù)據(jù)集。和使用 LabelImg 或 makesense.ai 等開源 GUI 工具創(chuàng)建自己的數(shù)據(jù)集一樣,每位開發(fā)者都可以創(chuàng)建用于 Model Maker 的訓(xùn)練數(shù)據(jù),且無(wú)需編寫任何代碼。
CSV
https://cloud.google.com/vision/automl/object-detection/docs/csv-format
LabelImg
https://github.com/tzutalin/labelImg
makesense.ai
https://github.com/SkalskiP/make-sense
獲得訓(xùn)練數(shù)據(jù)后,您就可以開始訓(xùn)練自定義的 TensorFlow Lite 目標(biāo)檢測(cè)模型了。
# Step 1: Choose the model architecture
spec = model_spec.get(‘efficientdet_lite2’)
# Step 2: Load your training data
train_data, validation_data, test_data = object_detector.DataLoader.from_csv(‘gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv’)
# Step 3: Train a custom object detector
model = object_detector.create(train_data, model_spec=spec, validation_data=validation_data)
# Step 4: Export the model in the TensorFlow Lite format
model.export(export_dir=‘?!?/p>
# Step 5: Evaluate the TensorFlow Lite model
model.evaluate_tflite(‘model.tflite’, test_data)
查看此 Codelab 了解詳情。
Codelab
http://tensorflow.google.cn/lite/tutorials/model_maker_object_detection
TensorFlow Lite Task Library:使用幾行代碼在移動(dòng)設(shè)備上部署目標(biāo)檢測(cè)模型
TensorFlow Lite Task Library 是跨平臺(tái)庫(kù),它簡(jiǎn)化了 TensorFlow Lite 模型在移動(dòng)設(shè)備上的部署。使用 TensorFlow Lite Model Maker 訓(xùn)練的自定義目標(biāo)檢測(cè)模型只需使用幾行 Kotlin 代碼即可部署到 Android 應(yīng)用:
// Step 1: Load the TensorFlow Lite model
val detector = ObjectDetector.createFromFile(context, “model.tflite”)
// Step 2: Convert the input Bitmap into a TensorFlow Lite‘s TensorImage object
val image = TensorImage.fromBitmap(bitmap)
// Step 3: Feed given image to the model and get the detection result
val results = detector.detect(image)
您可參閱一下文檔,了解有關(guān) Task Library 中,包括如何配置最小檢測(cè)閾值或最大檢測(cè)對(duì)象數(shù)量等更多自定義選項(xiàng)信息。
文檔
https://tensorflow.google.cn/lite/inference_with_metadata/task_library/object_detector
TensorFlow Lite Metadata Writer API:
用于簡(jiǎn)化使用 TensorFlow Object Detection API 訓(xùn)練的自定義模型的部署
Task Library 依賴 TensorFlow Lite 模型中捆綁的模型元數(shù)據(jù)來(lái)執(zhí)行必要的預(yù)處理和后處理邏輯,以便使用該模型來(lái)運(yùn)行推理。這其中包括如何將輸入圖像歸一化,或如何將類 ID 映射到可人工讀取的標(biāo)簽。因?yàn)槭褂?Model Maker 訓(xùn)練的模型會(huì)默認(rèn)包含此類元數(shù)據(jù),所以它能夠與 Task Library 兼容。但是,如果您使用除 Model Maker 以外的訓(xùn)練流水線,來(lái)訓(xùn)練 TensorFlow Lite 目標(biāo)檢測(cè),則可以使用 TensorFlow Lite Metadata Writer API 來(lái)添加元數(shù)據(jù)。
模型元數(shù)據(jù)
https://tensorflow.google.cn/lite/convert/metadata
例如,如果您使用 TensorFlow Object Detection API 來(lái)訓(xùn)練模型,則可以使用以下 Python 代碼將元數(shù)據(jù)添加到 TensorFlow Lite 模型:
LABEL_PATH = ’label_map.txt‘
MODEL_PATH = “ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8/model.tflite”
SAVE_TO_PATH = “ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8/model_with_metadata.tflite”# Step 1: Specify the preprocessing parameters and label file
writer = object_detector.MetadataWriter.create_for_inference(
writer_utils.load_file(MODEL_PATH), input_norm_mean=[0],
input_norm_std=[255], label_file_paths=[LABEL_PATH])
# Step 2: Export the model with metadata
writer_utils.save_file(writer.populate(), SAVE_TO_PATH)
在示例中,我們指定歸一化參數(shù) (input_norm_mean=[0], input_norm_std=[255]) ,以便將輸入圖像歸一化到 [0..1] 范圍內(nèi)。您需要指定與模型訓(xùn)練期間使用的預(yù)處理邏輯中相同的歸一化參數(shù)。
歸一化
http://tensorflow.google.cn/lite/convert/metadata#normalization_and_quantization_parameters
參閱此 Colab,獲取有關(guān)如何將使用 TensorFlow Object Detection API 訓(xùn)練的模型轉(zhuǎn)換為 TensorFlow Lite 模型并添加元數(shù)據(jù)的完整教程。
Colab
https://colab.research.google.com/github/tensorflow/models/blob/master/research/object_detection/colab_tutorials/convert_odt_model_to_TFLite.ipynb
未來(lái)計(jì)劃
我們的目標(biāo)是讓每位開發(fā)者(無(wú)論是否具備機(jī)器學(xué)習(xí)專業(yè)知識(shí))都能更輕松使用機(jī)器學(xué)習(xí)。目前,我們正在與 TF Model Garden 團(tuán)隊(duì)合作,希望推出更多適用于 Model Maker 的目標(biāo)檢測(cè)模型架構(gòu)。
未來(lái),我們還將繼續(xù)與 Google 研究人員合作,通過(guò) Model Maker 提供更多面向未來(lái)的更優(yōu)秀的目標(biāo)檢測(cè)模型,縮短從前沿研究到投入實(shí)際應(yīng)用并且供所有開發(fā)者使用的整個(gè)流程。敬請(qǐng)關(guān)注更多動(dòng)態(tài)!
編輯:jq
-
Google
+關(guān)注
關(guān)注
5文章
1748瀏覽量
57182 -
ML
+關(guān)注
關(guān)注
0文章
143瀏覽量
34435 -
目標(biāo)檢測(cè)
+關(guān)注
關(guān)注
0文章
196瀏覽量
15564 -
GitHub
+關(guān)注
關(guān)注
3文章
461瀏覽量
16234
原文標(biāo)題:使用 TensorFlow Lite 簡(jiǎn)化移動(dòng)端目標(biāo)檢測(cè)
文章出處:【微信號(hào):yingjiansanrenxing,微信公眾號(hào):硬件三人行】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論