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

运行以下命令将当前项目设置为刚创建的项目,将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.宠物识别覆盖180余个犬类和40余个猫类品种,可识别静态或动态宠物面部图像,基于深度学习构建出的宠物脸+鼻纹深度图像分析模型,并提取出关键点区域的深度特征,利用不同个体间原生体征差异,实现对宠物品种属性的判断和对身份同一性的验证。免费试用技术文档 产品矩阵 http://www.ybinsure.com/ocrpet
2.农业农村部公告第176号14.淘汰兽药品种目录(2007年4月4日农业部公告第 839号) 15.由农业部审批的高致病性动物病原微生物实验活动范围(2007年8月20日农业部公告第898号) 16.农业部办公厅关于进一步加强动物耳标识读器招标管理工作的通知(2007年11月1日农办医〔2007〕41号) ...https://www.meipian.cn/2571xbdi
3.中华人民共和国农业农村部公告第20号饲料科技第四条宠物饲料生产企业应当按照有关规定和标准,对采购的饲料原料、添加剂预混合饲料和饲料添加剂进行查验或者检验;使用饲料添加剂的,应当遵守《饲料添加剂品种目录》《饲料添加剂安全使用规范》等限制性规定。禁止使用《饲料原料目录》《饲料添加剂品种目录》以外的任何物质生产宠物饲料。 http://www.slkj.net/a/xiazaizhongxin/2020/0409/179.html
1.别再指着拉布拉多叫金毛犬“狗脸识别”帮你认清狗子品种萤石C6 网络摄像机 400万极清家用监控摄像头 精灵球摄像头 智能追踪 双向语音 宠物检测 [经销商]京东商城 [产品售价]469元 进入购买 别再指着拉布拉多叫金毛犬 “狗脸识别”帮你认清狗子品种 01宠物识别应用&小程序 我看了下,App store、支付宝及微信小程序中,已经有不少和宠物刷脸识别用的小程序出现了。其...https://news.zol.com.cn/789/7898343.html
2.和田市农业农村局行政处罚自由裁量权基准决策公开2 未经批准生产、加工农业转基因生物或者未按照批准的品种、范围、安全管理要求和技术标准生产、加工 《农业转基因生物安全管理条例》 第四十六条:违反本条例规定,未经批准生产、加工农业转基因生物或者未按照批准的品种、范围、安全管理要求和技术标准生产、加工的,由国务院农业行政主管部门或者省、自治区、直辖市人民政府...https://www.hts.gov.cn/xinxigongkai/show.php?itemid=12226
3.基于python的宠物识别完整代码GPIO控制:一旦检测到宠物,使用RPi.GPIO库控制GPIO引脚,从而开启投喂器电机,执行投喂动作。 实时监控与用户交互:使用OpenCV显示处理后的图像,并允许用户通过按键退出程序。 循环检测:将上述步骤放入循环中,持续检测宠物并根据情况投喂,直到用户退出程序。 通过这些步骤,可以构建一个基本的宠物智能识别投喂系统。该系统的...https://wenku.csdn.net/answer/bd81781b2e9d470a8909be1e4d348692
4.玛氏宠物生态总经理陈曦:宠物消费增量来自人宠关系升级【亿邦原创】提取唾液,仅需15秒,就可获得一份详尽的爱宠基因检测报告,“解锁”宠物品种基因、四代家族树、健康状况、遗传风险、生物特征等信息。 这是玛氏集团历时20年的宠物科研项目——Wisdom Panel(伟思宠物基因检测);2022年3月,玛氏宠物黑科技事业部旗下的互联网创新平台“玛氏宠物生态系统”将宠物基因检测服务落...https://www.ebrun.com/20231027/532048.shtml
5.宠物降监测项圈:科技助力宠物降监管宠物健康监测项圈是一种集成了多种传感器和智能技术的智能设备,可以实时监测宠物的健康状况,并将数据传输至宠物主人的手机或电脑上。这种项圈不仅可以监测宠物的运动情况和睡眠质量,还可以监测其心率等生理指标,甚至能够检测宠物是否有异常行为或不适感。通过这些数据,宠物主人可以及时了解宠物的健康状况,并在必要时采取相...https://www.aipite.com/285.html
6.宠物狗常规检查项目是什么?10. 特定品种的检查:某些狗狗品种需要额外的常规检查项目。例如,大型犬种可能需要专门的心脏检查,而一些遗传疾病患狗需要进行基因检测。 总之,宠物狗的常规检查项目对于确保狗狗的健康至关重要。定期带狗狗去兽医那里接受检查和评估,可以帮助预防和及早发现潜在的健康问题,为狗狗提供适当的护理和治疗。宠物主人应该与兽医...https://www.chongwugo.cn/32459.html
7.2024最全国内外宠物托运指南(材料准备+流程+费用)宠物照片(可在普通白纸上打印) 狂犬病抗体检测报告(部分国家或地区需要) 这个检测有个小前提,要在接种完狂犬疫苗至少21天后才能采血,报告结果大概在2-3周内能够拿到(具体的时间取决于实验室忙不忙,因此一定要算好时间提前去办理报告)。不过以下国家或地区不需要办理该报告: ...https://www.extrabux.cn/chs/guide/5642422
8.畜牧兽医专业校内实训基地主要仪器设备:空调机,气相色谱仪,色谱工作站,高纯氢发生器,低噪音空气泵,高效液相仪,检测器柱温箱,自动进样器,泵,去湿机,稳压电源,蒸发光散射检测器,空气压缩机,原子吸收分光光度计,黄曲霉素测定仪,电热鼓风干燥箱,电子天平,智能型测汞仪,自动双重蒸馏器,精密离子活度计,酸度计,旋片真空泵,紫外可见分光光度...http://xmsy.eszy.edu.cn/info/1111/1065.htm
9.实朴检测并且随着宠物市场规模的不断扩大,广大爱宠消费者已经认识到宠物饲料对于宠物身体健康的重要性。宠物饲料早已不再局限于简单的饱腹功能。对于宠物饲料的研究生产,也更多集中在不同宠物品种,不同宠物年龄阶段,不同宠物营养需求上。多样化的功能性宠物饲料已经成为主要发展方向和潮流。http://www.sepchina.cn/?paged=8&cat=5
10.布料种类常用面料布料种类有哪些纺织面料知识大全它的品种较多,一般有良好的弹性的延伸性,织物柔软,坚牢耐皱,毛型感较强,且易洗耳恭听快干。不过它的吸湿性差,织物不够挺括,且易于脱散、卷边,化纤面料易于起毛、起球、钩丝。主要有以下品种 1、涤纶色织针织面料:织物色泽鲜艳、美观、配色调和,质地紧密厚实,织纹清晰,毛型感强,有类似毛织物花呢风格。主要用...https://www.912688.com/info/468.html
11....10个征兆识别并预防中毒性神经疾病的关键信号行为改变:受感染的宠物可能会变得更加警觉或恐惧,有时甚至表现出攻击性。 恶心和呕吐:许多宠物在感染初期会出现恶心和呕吐,这通常是因为它们对食物失去兴趣或者...部分过程中发生了异常情况,从而导致发热反应最终被忽略了,不得不说这个观点有点夸大了,但值得一提的是,在某些情况下,它们确实能够帮助检测潜在的问题,并且...https://www.gurotsr.cn/chong-wu-zi-xun/334290.html
12.优生优育及孕前优生降检查(4)实验室检查:白带常规检查、淋球菌检查、沙眼衣原体检查,血常规检查,尿常规检查,血型,血清葡萄糖测定、肝功能测定、肾功能检测,乙肝血清学五项检测,甲状腺功能检测,梅毒螺旋体筛查,风疹病毒IgG、IgM抗体测定,巨细胞病毒IgG、IgM抗体测定,弓形虫IgG、IgM抗体测定。 https://www.cdjnbjy.com/newshow.aspx?mid=143&id=301
13.狂犬病初期识别警惕这10个隐形信号肺炎是另一个容易误判的情景,在很多情况下它看起来只是普通流感的一个分支。但实际上,对于那些已经经过了几天高烧之后仍然没有恢复正常健康状态,以及出现在他们身上的一些非典型症状(如血液中检测出白细胞计数异常)的人们,更需格外注意,因为这样的综合征态度是不寻常而具有危险性的。 https://www.lynecx.cn/chong-wu-mao/325900.html
14.开源数据集汇总小目标检测图像分类图像识别开源数据集汇总 | 小目标检测、图像分类、图像识别 编辑丨极市平台 宠物图像数据集 数据集下载地址:http://m6z.cn/5TAgdC 一个包含 37 个类别的宠物数据集,每个类别大约有 200 张图像。这些图像在比例、姿势和照明方面有很大的变化。所有图像都有相关的品种、头部 ROI 和像素级三元图分割的地面实况注释。https://cloud.tencent.com/developer/article/1976096