当前位置: 首页 > 科技观察

TensorFlow推出新界面简化ML移动开发流程

时间:2023-03-20 14:06:03 科技观察

概述使用TensorFlowLite模型在移动设备上运行推理不仅是与模型交互,还需要额外的代码来处理复杂的逻辑,例如数据转换,preprocessing/Post-processing,loadingassociatedfiles等附加代码https://tensorflow.google.cn/lite/guide/lite_support今天给大家介绍的是TensorFlowLiteTaskLibrary,它是一套功能强大且简单易用的使用可以代表您处理大多数预设任务的模型接口。处理和后处理等复杂的逻辑。任务库支持主流的机器学习任务,包括图像分类与分割、目标检测、自然语言处理等。模型接口专为每项任务设计,以实现最佳性能和易用性——现在只需5行代码即可对受支持任务的预训练和自定义模型进行推理!目前,TaskLibrary被广泛应用于谷歌众多产品的生产环境中。TensorFlowLiteTaskLibrary支持的ML任务https://tensorflow.google.cn/lite/inference_with_metadata/task_library/overviewTensorFlowLiteTaskLibrary目前支持六种ML任务,包括视觉和自然语言处理用例。下面将作简要介绍。ImageClassifier图像分类器是机器学习的一个常见用例,用于识别图像代表什么。例如,我们可能想知道给定图片中出现的是哪种动物。ImageClassifierAPI支持常见的图像处理和配置,还允许在特定支持的语言环境中显示标签,并根据标签允许列表和禁止列表过滤结果。ObjectDetector对象检测器识别一组中可能存在哪些已知对象,并提供有关这些对象在给定图像或视频流中的位置的信息。ObjectDetectorAPI支持类似于ImageClassifer的图像处理选项。输出将列出带有标签、边界框和概率的前k个检测到的对象。ImageSegmenter图像分割器预测图像的每个像素是否与特定类别相关联。这与对象检测(检测矩形区域中的对象)和图像分类(对整个图像进行分类)形成对比。除了图像处理之外,ImageSegmenter还支持两种类型的输出掩码:类别掩码和置信度掩码。NLClassifier和BertNLClassifierNLClassifier将输入文本分类为不同的类别。这个通用API可以配置为加载任何支持文本输入和分数输出的TFLite模型。BertNLClassifier类似于NLClassifier,不同的是这个API是专门为BERT相关模型量身定做的,需要TFLite模型外的Wordpiece和Sentencepiece分词。BertQuestionAnswererBertQuestionAnswerer加载BERT模型并根据给定段落的内容回答问题。目前支持MobileBERT和ALBERT。与BertonCollector类似,BertQuestionAnswerer封装了输入文本的复杂标记化。您可以将上下文和问题作为字符串传递给BertQuestionAnswerer模型。支持的模型任务库与以下已知模型源兼容:TensorFlowHub任务库模型集合(图像分类/对象检测/图像分割/问答)。使用TensorFlowLiteModelMaker创建的模型。由AutoMLVisionEdge创建的模型。任务库还支持满足每个任务API的模型兼容性要求的自定义模型。相关文件(即labelmap和vocab文件)和处理参数(如果适用)应正确填充到模型元数据中。有关详细信息,请参阅TensorFlow网站上每个API的文档。模型元数据https://tensorflow.google.cn/lite/convert/metadataTensorFlow网站上每个API的文档https://tensorflow.google.cn/lite/inference_with_metadata/task_library/overview使用TaskLibrary运行推理TaskLibrary跨平台工作,并受Java、C++(实验性)和Swift(实验性)支持。使用任务库运行推理就像编写几行代码一样简单。例如,您可以使用DeepLabv3TFLite模型在Android中分割飞机图像(图1),如下所示:CONFIDENCE_MASK).build();ImageSegmenterimageSegmenter=ImageSegmenter.createFromFileAndOptions(context,modelPath,options);//SegmentanimageTensorImageimage=TensorImage.fromBitmap(bitmap);Listresults=imageSegmenter.segment(image);生成的分割掩码图像是使用彩色标签和类掩码构建的,如图2所示。所有三个文本API都支持Swift。要在iOS中使用SQuADv1TFLite模型对给定的上下文和问题执行问答,您可以运行:TheAmazonrainforest,alternatively,theAmazonJungle,alsoknownin\EnglishasAmazonia,isamoistbroadleaftropicalrainforestinthe\AmazonbiomethatcoversmostoftheAmazonbasinofSouthAmerica.This\basinencompasses7,000,000squarekilometers(2,700,000squaremiles),of\which5,500,000squarekilometers(2,100,000squaremiles)arecoveredby\therainforest.Thisregionincludesterritorybelongingtoninenations."""letquestion="WhereisAmazonrainforest?"//Answeraquestionletanswers=mobileBertAnswerer.answer(context:context,question:question)//answers.[0].textcouldbe"SouthAmerica."DeepLabv3TFLite模型https://tfhub.dev/tensorflow/lite-model/deeplabv3/1/元数据/1SQuADv1TFLite模型https://tfhub.dev/tensorflow/lite-model/albert_lite_base/squadv1/1为您的用例构建任务API如果现有任务库不支持您的用例,您可以利用任务API基础设施并构建自定义C++/Android/iOS推理API以获取更多详细信息,请参阅本指南。指南https://tensorflow.google.cn/lite/inference_with_metadata/task_library/customized_task_api未来的工作我们将继续改进任务库的用户体验。近期路线图如下:提高C++任务库的可用性,例如为希望从源代码构建的用户提供预构建的二进制文件和创建人性化的工作流。使用任务库发布参考示例。通过新任务类型支持更多机器学习用例。改进跨平台支持并支持iOS的更多任务。反馈欢迎对任务库中支持的新用例提出反馈和建议。请发送电子邮件至tflite@tensorflow.org或在GitHub中提交问题。问题https://github.com/tensorflow/tflite-support/issues/new致谢如果没有以下人员的共同努力,这项工作是不可能完成的:CédricDeltheil和MaximeBrénon,他们是TaskLibraryVisionAPI的主要贡献者。陈岑,TaskLibrarynative/Android/iOSinfrastructureandTextAPI的主要贡献者。开发基础架构和发布过程的主要贡献者是Xunkai和YoungSeokYoon。andTianLin,SijiaMa,YoungSeokYoon,YuqiLi,HsiuWang,QifeiWang,AlecGo,ChristineKaeser-Chen,YichengFan,ElizabethKemp,WilliGierke,ArunVenkatesan,AmyJang,MikeLiang,DenisBrulé,GauravNemade,KhanhLeViet,LuizGUStavoMartins,ShuangfengLi,JaredDuke,ErikVee,SarahSirajuddin,andTimDavisallsupportedthisprojectandwouldliketoexpressourthanks.