如何能更快地训练和部署物体检测模型?

运行以下命令将当前项目设置为刚创建的项目,将YOUR_PROJECT_NAME替换为项目名称:

1gcloudconfigsetprojectYOUR_PROJECT_NAME

然后,我们将使用以下命令创建云存储桶。请注意,存储桶名称必须全局唯一。

1gsutilmbgs://YOUR_UNIQUE_BUCKET_NAME

这可能会提示您先运行gcloudauthlogin,之后您需要提供发送到浏览器的验证码。

然后设置两个环境变量以简化在本教程中使用命令的方式:

1exportPROJECT="YOUR_PROJECT_ID"

2exportYOUR_GCS_BUCKET="YOUR_UNIQUE_BUCKET_NAME"

接下来,为了让CloudTPU能访问我们的项目,我们需要添加一个TPU特定服务帐户。首先,使用以下命令获取服务帐户的名称:

当此命令完成时,复制tpuServiceAccount(它看起来像your-service-account-12345@cloud-tpu.iam.gserviceaccount.com)的值,然后将其保存为环境变量:

1exportTPU_ACCOUNT=your-service-account

最后,给您的TPU服务帐户授予ml.serviceAgent角色:

1gcloudprojectsadd-iam-policy-binding$PROJECT

2--memberserviceAccount:$TPU_ACCOUNT--roleroles/ml.serviceAgent

安装Tensorflow

安装TensorFlow对象检测

如果这是您第一次使用TensorFlow对象检测,我们将非常欢迎您的首次尝试!要安装它,请按照此处说明进行操作。

注:说明链接

一旦对象检测安装完毕,请务必通过运行以下命令来测试是否安装成功:

如果安装成功,您应该看到以下输出:

1Ran18testsin0.079s

2

3OK

设置数据集

为了直接深入到训练环节,我们公开了文件pet_faces_train.record和pet_faces_val.record,点击此处这里公开。您可以使用公共TFRecord文件,或者如果您想自己生成它们,请按照此处的步骤操作。

注:这里公开链接

您可以使用以下命令下载并解压缩公共TFRecord文件:

1mkdir/tmp/pet_faces_tfrecord/

2cd/tmp/pet_faces_tfrecord/

请注意,这些TFRecord文件是分片的,因此一旦提取它们,您将拥有10个pet_faces_train.record文件和10个pet_faces_val.record文件。

上传数据集到GCS

一旦获得TFRecord文件后,将它们复制到GCS存储桶的data子目录下:

1gsutil-mcp-r/tmp/pet_faces_tfrecord/pet_faces*gs://${YOUR_GCS_BUCKET}/data/

使用GCS中的TFRecord文件,并切换到本地计算机的models/research目录。接下来,您将在GCS存储桶中添加该pet_label_map.pbtxt文件。我们将要检测的37个宠物品种一一映射到整数,以便我们的模型可以理解它们。最后,从models/research目录运行以下命令:

1gsutilcpobject_detection/data/pet_label_map.pbtxtgs://${YOUR_GCS_BUCKET}/data/pet_label_map.pbtxt

使用SSDMobileNet检查点进行迁移学习

为了识别图像中的各种物体,我们需要训练大量的模型。我们可以使用这些训练模型中的检查点,然后将它们应用于我们的自定义对象检测任务。这种方式是可行的,因为对于机器而言,识别包含基本对象(如桌子,椅子或猫)图像中的像素与识别包含特定宠物品种图像中的像素没有太大区别。

注:最新MobileNet检查点链接

一旦成功解压缩检查点后,将3个文件复制到GCS存储桶中。运行以下命令下载检查点并将其复制到存储桶中:

1cd/tmp

3tarx***ssd_mobilenet_v1_0.75_depth_300x300_coco14_sync_2018_07_03.tar.gz

4

当我们训练模型时,将使用这些检查点作为训练的起点。现在,您的GCS存储桶中应该有24个文件。目前我们已经准备好开始训练任务,但我们需要一种方法来告诉MLEngine我们的数据和模型检查点的位置。我们将使用配置文件执行此操作,我们将在下一步中设置该配置文件。我们的配置文件为我们的模型提供了超参数,训练数据的文件路径,测试数据和初始模型检查点。

在CloudMLEngine上使用CloudTPU训练量化模型

机器学习模型有两个不同的计算组件:训练和推理。在此示例中,我们利用CloudTPU来加速训练。我们在配置文件中对CloudTPU进行设置。

在CloudTPU上进行训练时,可以使用更大的批量大小,因为它们可以更轻松地处理大型数据集(在您自己的数据集上试验批量大小时,请确保使用8的倍数,因为数据需要均匀分配到CloudTPU)。在我们的模型上使用更大的批量大小,可以减少训练步骤的数量(在本例中我们使用2000)。

针对于此训练任务的焦点损失函数也适用于CloudTPU,损失函数在配置文件中的定义如下所示:

1loss{

2classification_loss{

3weighted_sigmoid_focal{

4alpha:0.75,

5gamma:2.0

6}

7}

损失函数用于计算数据集中每个示例的损失,然后对其进行重新计算,为错误分类的示例分配更多的相对权重。与其他训练任务中使用的挖掘操作相比,此逻辑更适合CloudTPU。你可以在Lin等人中阅读更多关于损失函数的内容(2017)。

初始化预训练模型检查点然后添加我们自己的训练数据的过程称为迁移学习。配置中的以下几行告诉我们的模型,我们将从预先训练的检查点开始进行转移学习。

1fine_tune_checkpoint:"gs://your-bucket/data/model.ckpt"

2fine_tune_checkpoint_type:"detection"

这就是模型量化的用武之地。利用量化技术我们可以将模型中的权重压缩为8-bit的定点表示。配置文件中的以下几行将生成量化模型:

1graph_rewriter{

2quantization{

3delay:1800

4activation_bits:8

5weight_bits:8

为了告诉MLEngine训练和测试文件以及模型检查点的位置,您需要在我们为您创建的配置文件中更新几行以指向您的存储桶。从research目录中,找到文件object_detection/samples/configs/ssd_mobilenet_v1_0.75_depth_quantized_300x300_pets_sync.config。将所有PATH_TO_BE_CONFIGURED字符串更新为GCS存储桶中data目录的绝对路径。

例如,train_input_reader配置部分将如下所示(确保YOUR_GCS_BUCKET为您的存储桶的名称):

1train_input_reader:{

2tf_record_input_reader{

3input_path:"gs://YOUR_GCS_BUCKET/data/pet_faces_train*"

4}

5label_map_path:"gs://YOUR_GCS_BUCKET/data/pet_label_map.pbtxt"

然后将此量化配置文件复制到您的GCS存储桶中:

1gsutilcpobject_detection/samples/configs/ssd_mobilenet_v1_0.75_depth_quantized_300x300_pets_sync.configgs://${YOUR_GCS_BUCKET}/data/pipeline.config

在我们启动CloudMLEngine的训练工作之前,我们需要打包ObjectDetectionAPI,pycocotools和TFSlim。我们可以使用以下命令执行此操作(从research/目录运行此命令,并注意括号是命令的一部分):

1bash

2object_detection/dataset_tools/create_pycocotools_package.sh/tmp/pycocotools

3(cdslim&&pythonsetup.pysdist)

至此,我们已经准备好开始训练我们的模型了!要启动训练,请运行以下gcloud命令:

2--job-dir=gs://${YOUR_GCS_BUCKET}/train

3--packagesdist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz,/tmp/pycocotools/pycocotools-2.0.tar.gz

4--module-nameobject_detection.model_tpu_main

5--runtime-version1.8

7--regionus-central1

8--

9--model_dir=gs://${YOUR_GCS_BUCKET}/train

10--tpu_zoneus-central1

11--pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config

请注意,如果您收到错误消息,指出没有可用的CloudTPU,我们建议您在另一个区域进行重试(CloudTPU目前可用于us-central1-b,us-central1-c,europe-west4-a,asia-east1-c)。

在启动训练工作之后,运行以下命令开始评估:

1gcloudml-enginejobssubmittraining`whoami`_object_detection_eval_validation_`date+%s`

4--module-nameobject_detection.model_main

10--pipeline_config_path=gs://${YOUR_GCS_BUCKET}/data/pipeline.config

11--checkpoint_dir=gs://${YOUR_GCS_BUCKET}/train

训练和评估都应在大约30分钟内完成。在运行时,您可以使用TensorBoard查看模型的准确性。要启动TensorBoard,请运行以下命令:

1tensorboard--logdir=gs://${YOUR_GCS_BUCKET}/train

请注意,您可能需要先运行gcloudauthapplication-defaultlogin。

在浏览器地址栏中输入localhost:6006,从而查看您的TensorBoard输出。在这里,您将看到一些常用的ML指标,用于分析模型的准确性。请注意,这些图表仅绘制了2个点,因为我们的模型是在很少的步骤中快速训练。这里的第一个点代表训练过程的早期,最后一个点显示最后一步的指标。

首先,让我们看一下0.5IOU(mAP@.50IOU)平均精度的图表:

平均精度衡量模型会对所有37个标签的正确性预测百分比。IoU特定于对象检测模型,代表Intersection-over-Union。我们用百分比表示测量模型生成的边界框与地面实况边界框之间的重叠度。此图表展示的是测量模型返回的正确边界框和标签的百分比,在这种情况下“正确”指的是与其对应的地面实况边界框重叠50%或更多。训练后,我们的模型实现了82%的平均精确度。

接下来,查看TensorBoard中的Images选项卡:

在左图中,我们看到了模型对此图像的预测,在右侧我们看到了正确的地面实况框。边界框非常准确,在本案例中,我们模型的标签预测是不正确的。没有ML模型是完美的。

使用TensorFlowLite在移动设备上运行

至此,您将拥有一个训练有素的宠物探测器,您可以使用thisColabnotebook在零设置的情况下在浏览器中测试图像。

注:thisColabnotebook链接

如上所述,对于本节,您需要使用提供的Dockerfile,或者从源代码构建TensorFlow(支持GCP)并安装bazel构建工具。请注意,如果您只想在不训练模型的情况下完成本教程的第二部分,我们已为您制作了预训练的模型。

为了使这些命令更容易运行,让我们设置一些环境变量:

1exportCONFIG_FILE=gs://${YOUR_GCS_BUCKET}/data/pipeline.config

2exportCHECKPOINT_PATH=gs://${YOUR_GCS_BUCKET}/train/model.ckpt-2000

3exportOUTPUT_DIR=/tmp/tflite

我们首先获得一个TensorFlow冻结图,其中包含我们可以与TensorFlowLite一起使用的兼容操作。首先,您需要安装这些python库。然后,为了获取冻结的图形,在models/research目录下运行脚本export_tflite_ssd_graph.py:

1pythonobject_detection/export_tflite_ssd_graph.py

2--pipeline_config_path=$CONFIG_FILE

3--trained_checkpoint_prefix=$CHECKPOINT_PATH

4--output_directory=$OUTPUT_DIR

5--add_postprocessing_op=true

在/tmp/tflite目录中,可以看到两个文件:

tflite_graph.pb和tflite_graph.pbtxt(样本冻结图在这里)。请注意,该add_postprocessing标志使模型能够利用自定义优化的后续检测处理操作,该操作可被视为替代tf.image.non_max_suppression。请务必不要混淆export_tflite_ssd_graph与export_inference_graph。这两个脚本都输出了冻结的图形:export_tflite_ssd_graph将输出我们可以直接输入到TensorFlowLite的冻结图形,并且是我们将要使用的图形。

1bazelrun-copttensorflow/contrib/lite/toco:toco--

2--input_file=$OUTPUT_DIR/tflite_graph.pb

3--output_file=$OUTPUT_DIR/detect.tflite

4--input_shapes=1,300,300,3

5--input_arrays=normalized_input_image_tensor

7--inference_type=QUANTIZED_UINT8

8--mean_values=128

9--std_values=128

10--change_concat_input_ranges=false

11--allow_custom_ops

将每个摄像机图像帧调整为300x300像素后,此命令采用输入张量normalized_input_image_tensor。

在Android设备上运行模型

在尝试获得刚训练的宠物模型之前,首先运行带有默认模型的演示应用程序,该模型是在COCO数据集上训练的。要编译演示应用程序,请从tensorflow目录下运行此bazel命令:

2//tensorflow/contrib/lite/examples/android:tflite_demo

上面的apk针对64位架构而编译。为了支持32位架构,可以修改编译参数为--config=android_arm。现在可以通过AndroidDebugBridge(adb)在支持调试模式的Android手机上安装演示:

1adbinstallbazel-bin/tensorflow/contrib/lite/examples/android/tflite_demo.apk

尝试启动该应用程序(称为TFLDetect)并将相机对准人,家具,汽车,宠物等。您将在检测到的对象周围看到带有标签的框。此应用程序使用COCO数据集进行训练。

一旦成功运行通用检测器,将其替换为您的定制宠物检测器将会非常简单。我们需要做的就是将应用程序指向我们新的detect.tflite文件,并为其指定新标签的名称。具体来说,我们将使用以下命令将TensorFlowLiteFlatbuffer资源复制到appassets目录:

1cp/tmp/tflite/detect.tflite

2tensorflow/contrib/lite/examples/android/app/src/main/assets

我们现在将编辑BUILD文件以指向新模型。首先,在目录tensorflow/contrib/lite/examples/android/中打开BUILD文件。然后找到assetssection,并将该行“@tflite_mobilenet_ssd_quant//:detect.tflite”(默认情况下指向COCO预训练模型)替换为您的TFLite宠物模型路径(“//tensorflow/contrib/lite/examples/android/app/src/main/assets:detect.tflite”)。最后,更改assetssection的最后一行以使用新的标签映射。如下所示:

1assets=[

2"//tensorflow/contrib/lite/examples/android/app/src/main/assets:labels_mobilenet_quant_v1_224.txt",

3"@tflite_mobilenet//:mobilenet_quant_v1_224.tflite",

4"@tflite_conv_actions_frozen//:conv_actions_frozen.tflite",

5"//tensorflow/contrib/lite/examples/android/app/src/main/assets:conv_actions_labels.txt",

6"@tflite_mobilenet_ssd//:mobilenet_ssd.tflite",

7"//tensorflow/contrib/lite/examples/android/app/src/main/assets:detect.tflite",

8"//tensorflow/contrib/lite/examples/android/app/src/main/assets:box_priors.txt",

9"//tensorflow/contrib/lite/examples/android/app/src/main/assets:pets_labels_list.txt",

10],

DetectorActivity.java修改如下所示:

1//ConfigurationvaluesfortheprepackagedSSDmodel.

2privatestaticfinalintTF_OD_API_INPUT_SIZE=300;

privatestaticfinalbooleanTF_OD_API_IS_QUANTIZED=true;

3privatestaticfinalStringTF_OD_API_MODEL_FILE="detect.tflite";

4privatestaticfinalStringTF_OD_API_LABELS_FILE="file:///android_asset/pets_labels_list.txt";

一旦我们复制完TensorFlowLite文件并编辑BUILD和DetectorActivity.java文件后,可以使用以下命令重新编译并安装应用程序:

3adbinstall-rbazel-bin/tensorflow/contrib/lite/examples/android/tflite_demo.apk

现在到了见证奇迹的时刻:找到离您最近的阿猫阿狗,试着去检测它们吧。

浏览量

原文标题:使用CloudTPU在30分钟内训练并部署实时移动物体探测器

下载发烧友APP

电子发烧友观察

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
1.OxfordPetDataset宠物图像数据集图像内容理解分类...OxfordPet Dataset宠物图像数据集 图像内容理解分类检测宠物动物识别测试训练验证数据 图像识别,图像内容理解...https://bbs.pinggu.org/thread-10881977-1-1.html
2.python机器学习课程设计狗的品种识别吴龙达这对于狗养成有很大的帮助:狗的品种识别案例可以提高人们对狗狗的了解,并帮助人们更好地预防狗的疾病和保护狗狗健康、可以帮助人们对狗狗品种进行更准确的识别,进而更好地进行狗狗的饲养和繁殖,从而帮助相关行业发展。 二、机器学习案例设计方案 从网站中下载相关的数据集,对数据集进行整理,在python的环境中,给数据集...https://www.cnblogs.com/wwwwpoor/p/16999884.html
3.Pets2009行人检测数据集Oxford-IIIT宠物数据集是一个37类宠物数据集,每个数据类大约有100张图像,由牛津大学的Visual Geometry Group创建。图像在比例,姿势和照明方面有很大的差异。所有图像均具有相关的品种,头部ROI和像素级三图分割的地面真相注释。 The Oxford-IIIT Pet Dataset_datasets.txt The Oxford-IIIT Pet Dataset_datasets.zip ...https://www.iteye.com/resource/wangjunwen1990-10767489
4.宠物年龄识别数据集宠物年龄识别比赛数据集随着我国居民收入提升和养宠人群不断扩大,宠物消费相关的商品和服务类型不断丰富,国内宠物行业规模快速扩张。2017-2022年我国宠物市场高速发展,宠物市场规模已超千亿规模,随着更多的人加入养宠大军,以及养宠理念的不断升级,未来宠物市场将持续蓬勃发展。 宠物医疗保险则是宠物经济中重要的组成部分,...https://tianchi.aliyun.com/dataset/157591
5.AI的关键词:驯服爱意全解析,全套关键词大全2. 技术关键词:数据集、训练集、测试集、验证集、损失函数、超参数、学率、正则化、梯度下降、优化器。 3. 应用关键词:智能家居、无人驾驶、语音识别、图像识别、智能医疗、智能客服、个性化推荐、语音助手、聊天机器人。 4. 情感关键词:情感分析、情感识别、情感表达、情感交互、情感计算、贴心服务、陪伴机器人、...http://www.slrbs.com/jrzg/aixuexi/369939.html
6.2024至2030年中国宠物定时器数据监测研究报告.docx2024至2030年中国宠物定时器数据监测研究报告目录一、行业现状分析 41.宠物市场概述 4宠物主人数量增长 4消费观念变化驱动需求提升 5宠物经济规模扩增 62.产品类型与服务 6智能宠物定时器产品特性 6市场需求分类(按功能、适用场景划分) 8服务模式分析 9二、竞争格局与市场参与者 111.主要竞争对手 11市场份额对比 11...https://www.renrendoc.com/paper/359965536.html
1....羊马等分类识别数据集9897张,YOLO牧场动物分类识别算法实战训练教...【数据集】牛羊马驴识别数据集 9897张,目标检测,包含YOLO/VOC格式标注。 数据集中包含6种分类:names: ['camelus', 'cattle', 'kiang', 'seal', 'sheep', 'zebra'],分别表示马、牛、骆驼、海豹、羊、斑马等牧场畜牧动物。 数据集来自国内外图片网站、大疆无人机视频采集; ...https://blog.csdn.net/kyriehan/article/details/143807904
2.猫狗识别区分猫狗品种Pythonmob649e81624618的技术博客猫和狗是我们生活中常见的宠物,它们有着各种不同的品种。在这篇文章中,我们将使用Python和机器学习技术来识别猫和狗的品种。我们将介绍如何使用图像分类技术来识别不同品种的猫和狗,并通过编写代码示例来实现这一目标。 数据集 为了训练和测试我们的模型,我们需要一个包含猫和狗图像的数据集。我们可以使用公开可用的...https://blog.51cto.com/u_16175491/6822568
3.支付宝蚂蚁新村答案支付宝蚂蚁新村答案汇总大全10月17日:以下哪个新兴职业体现出了数字经济发展的需要?商务数据分析师 10月16日:猜一猜:我国哪种传统医术是世界级非物质文化遗产?针灸 10月15日:以下哪项是宠物训导员的工作职责?纠正宠物的坏习惯 10月14日:以下哪种民间传统运动是国家级非物质文化遗产?踢花健 ...https://app.ali213.net/mip/gl/713775.html
4.基于卷积神经网络的宠物猫品种分类研究为了证明本方法的有效性, 在基于宠物猫数据 集上,做出 4 组神经网络模型的 对比实验,采用 VGGNet-13 和 VGGNet-16 神经网络 ,宠物猫品种的识别率分别是78.69% 和79.48% ; 采用 相似的Inception-V3 的神经网络结构,宠物猫 品种的识别率为80.42%;本方法是基于Inception- V3 中的Inception 模块和基于堆叠卷积...https://keji.hebust.edu.cn/hbgykj/article/pdf/k202006005
5.如何回答关于你的宠物被问得最多的问题磐创AI因为这两个数据集在kaggle上都是公开可用的,所以我们希望它们是相对干净的欧元集,而且正如上面所看到的,它们确实是这样的! 我们要检查的最后一件事是不同品种的分布情况: 每种犬约有2 0 0张图像,数据集看起来各方面都很平衡!‘? ...https://panchuang.net/2021/06/18/%E5%A6%82%E4%BD%95%E5%9B%9E%E7%AD%94%E5%85%B3%E4%BA%8E%E4%BD%A0%E7%9A%84%E5%AE%A0%E7%89%A9%E8%A2%AB%E9%97%AE%E5%BE%97%E6%9C%80%E5%A4%9A%E7%9A%84%E9%97%AE%E9%A2%98/
6.使用firebaseMLKit识别动物的种类创建图像分类器:使用Firebase ML Kit提供的图像分类器功能,可以训练一个模型来识别动物的种类。通过传入准备好的训练数据集,可以训练一个准确度较高的图像分类器。 图像识别:在应用中,通过调用Firebase ML Kit提供的图像识别接口,可以将用户拍摄的或者从相册选择的图片传入模型进行识别。模型将返回识别结果,即动物的种...https://cloud.tencent.com/developer/information/%E4%BD%BF%E7%94%A8firebase%20ML%20Kit%E8%AF%86%E5%88%AB%E5%8A%A8%E7%89%A9%E7%9A%84%E7%A7%8D%E7%B1%BB-video
7.基于SeeedXIAOESP32S3Sense开发板实现宠物表情识别系统在线合作数据标注网站roboflow可以快速标注,生成适用于ModelAssistant的数据集。 综上,电子森林与矽递科技提供的若干工具,可以围绕一组动物表情数据集,开展数据标注、数据预处理、模型训练、模型微调、模型部署,最终实现基于目标检测的宠物表情识别的功能。1.3 硬件框图 ...https://www.eetree.cn/project/2688
8.宠智灵宠物AI大模型服务平台宠智灵提供先进的AI技术服务,全面涵盖宠物健康、营养、护理等领域 智能在线问诊 快速分析并给出疾病诊断和建议 查看详情 智能图片识别 宠物各疾病部位识别分析 智能健康管理 档案管理宠物健康,风险预警 智能用药分析 宠物医疗药物建议,用药分析 智慧知识库 宠物医疗数据库,知识图谱 ...https://www.gjpet.com/
9.牛津IIIT宠物数据集,包含37个类别的宠物数据集帕依提提牛津-IIIT宠物数据集,包含37个类别的宠物数据集The Oxford-IIIT Pet Dataset is a 37 category pet dataset with roughly 200 images for each class created by the Visual GeCommon 图像识别 公开数据集https://www.payititi.com/opendatasets/show-9582.html
10.《WS377.3【单选题】大数据需要一种可让业务和技术都获得竞争优势的(),借助于对海量数据集的新尺度处理能力,不断识别深藏在大数据中的可操作价值,为业主单位的业务改进业务决策提供前瞻式预测,让业主单位从回顾性报告的旧方式中解脱出来。 查看完整题目与答案 信息系统工程继续教育考试题目 【单选题】文件是( )构成...https://www.shuashuati.com/ti/e08c7508cb564901ab0e960aa6ecffee.html?fm=bdbds138b2d0b50366369b4800c8418c27ef4
11....分析ML350系统在高性能计算中的应用研究随着技术的飞速发展,深度学习和大数据分析已经成为现代科学研究和商业决策中不可或缺的工具。为了应对这些复杂任务,我们需要强大的计算平台来处理大量的数据集。ML350系统正是这样一种高性能计算解决方案,它通过集成优化的硬件设计和先进软件算法,提供了一个完善的大规模数据处理环境。 https://www.nczuvegvuw.cn/chong-wu-mao/305398.html