问题标签 [object-detection-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - 在 Google 的对象检测 API 中绘制/计算带角度的区域
我想在 Google 的对象检测 API( https://github.com/tensorflow/models/tree/master/research/object_detection)中使用一些停车场的汽车图像。这些汽车通常不被描绘成一个直的盒子,而更像是一个向任一侧旋转 45 度的盒子,导致 x 和 y 坐标位于对角线而不是直线上。通常,只使用一个盒子就可以了,但汽车彼此非常接近,这就是我需要更换它的原因。
在 API 中,他们使用 ymin、ymax、xmin、xmax 来绘制图像中对象的框。所以我的问题是,我可以更改它以便代码进行计算并将框从 4 点定义的范围内绘制出来,以便使用有角度的框吗?如果可能的话......如何?
tensorflow - 未找到错误:;在 tensorflow 1.5 对象检测 API 上,在 1.4 上运行流畅
我最近将我的一个小型 ubuntu (16.04) 服务器从 tensorflow-gpu 1.4 升级到 tensorflow-gpu 1.5 以使用对象检测 API。我已经 git 克隆了应该与 tensorflow 1.5 一起使用的最新版本的 API。
CUDA/cudNN 等 tensorflow 程序在升级后启动并运行,对象检测 API 中的所有测试脚本运行良好。
尽管如此,当我尝试运行 train.py 时,它会立即失败并出现以下错误:
当缺少某些输入文件时会出现此错误,但这里的问题是错误中没有指定文件。
通常丢失的文件显示在逗号和分号之间,但在此错误中它只是一个空格。
通过在 --train_dir= 和路径之间插入一个空格,我可以在运行 tensorflow 1.4 的工作服务器上重现相同的错误:
但这里不是这样!
附加信息:当我运行 train.py 时,会在我指定的位置创建“train”目录,因此 tensorflow 似乎能够识别路径等。
任何有关如何调试的输入将不胜感激!
python - TensorFlow Object Detection Api Instance Segmentation 占用整个 RAM (32 GB)
我正在尝试使用 Tensorflow 对象检测 API(Mask RCNN)训练实例分割模型,并按照此处的说明进行操作。
我正在使用预训练mask_rcnn_resnet50_atrous_coco
来初始化权重,并为所述模型调整了这个示例配置文件。我已经根据create_coco_tf_record.py创建了带有掩码的 tfrecord 文件,用于训练和评估集。我能够成功运行训练脚本,但问题是,除了 GPU 内存之外,它还占用了45GB
我的RAM
. 除此之外,一切都运行良好,我能够完成最多 10k 步的训练,之后它决定需要更多 RAM 并占用60GB
我的系统崩溃。当我在训练后运行评估脚本时也会发生同样的事情。以下是我的系统规格:
- Ubuntu 16.04
- Tensorflow 1.5.0(根据文档通过 pip 安装)
- Python 2.7.12
- CUDA 9 和 CuDnn 7
- GTX 1080 (8 GB)
- 32 GB RAM 和 32 GB 交换
当我在 GPU 上运行模型时,我不确定为什么 tensorflow 需要这么多 RAM。我只有1 foreground class
和周围500
最多50 objects/masks
每个图像的训练样本。以下是我的文件System Monitor
中的一些屏幕截图。如果需要,我还将上传我的脚本以创建 tfrecord 文件。
nvidia-smi
pipeline_config
这是我的管道配置:
更新 1:
我尝试在我的frozen_inference_graph
. 只要我不调用掩码输出节点,它就可以运行 2 GB 的 GPU 内存。我得到正确的盒子、班级和分数。当我尝试获取 in 的输出时detection_masks:0
,sess.run()
我的 8GB GPU 内存不足。我尝试在 CPU 模式下运行脚本,发现我得到了正确的掩码,我的 RAM 内存使用量从未超过 8GB(从 2.5GB 开始)。同样的模型在运行train.py
和eval.py
脚本时占用了我的整个 GPU 以及 45GB 的 RAM。
amazon-web-services - Tensorflow 对象检测 API 的推理时间很慢
我一直在使用 Tensorflow 对象检测 API - 就我而言,我正在尝试使用模型动物园中的 kitti 训练模型 (faster_rcnn_resnet101_kitti_2018_01_28) 检测静止图像中的车辆,并且我正在使用从 object_detection_tutorial jupyter notebook 修改的代码包含在 github 存储库中。
我在下面包含了我修改过的代码,但我发现与来自 github 的原始笔记本相同的结果。
在具有深度学习 AMI 的实例上的 jupyter 笔记本服务器上运行时Amazon AWS g3x4large (GPU)
,处理单个图像只需不到 4 秒。推理功能的时间为 1.3-1.5 秒(请参见下面的代码) - 对于模型报告的推理时间(20 毫秒),这似乎异常高。虽然我不希望达到报告的目标,但我的时间似乎超出了我的需求,并且不切实际。我正在考虑一次处理超过 100 万张图像,但无法承受 46 天的处理时间。鉴于该模型用于视频帧捕获......我认为至少应该可以将每张图像的时间缩短到 1 秒以下。
我的问题是:
1) 有哪些解释/解决方案可以减少推理时间?
2) 将图像转换为 numpy(处理之前)是否需要 1.5 秒?
3) 如果这是我可以预期的最佳性能,我希望从重做模型到批处理图像中获得多少时间?
谢谢你的帮助!
来自 python 笔记本的代码:
时间示例:
tensorflow - Tensorflow Object Detection API 使用 Inception v3 模型
ssd_mobilenet_v1_coco_11_06_2017
我已经通过使用模型成功地使用了 Tensorflow 对象检测 API 。
现在我需要使用 Inception v3 模型而不是 mobilenet 模型。
问题:
我可以将它用于 Tensorflow 对象检测 API,如何更改配置文件以及如何找到它?
python - TensorFlow 对象检测 api:使用预训练模型在训练中更改类数时的分类权重初始化
我不仅想利用特征提取器预训练的权重,还想利用特征图层的分类器/定位预训练权重,使用 tensorflow 对象检测 API 微调 tensorflow 对象检测模型 (SSD)。当我的新模型与我用于微调检查点的预训练模型具有不同数量的类时,TensorFlow 对象检测 API 将如何处理分类权重张量?
当在 SSD 等 ML 对象检测模型中微调预训练模型时,我不仅可以使用预训练的权重初始化特征提取器权重,还可以初始化特征图的定位层权重和分类层权重,只有后者选择预先训练的类权重,这样我就可以减少模型最初可以识别的类的数量(例如,从 90 个 MSCOCO 类到这 90 个类中的任何一个类,如仅汽车和行人等)
https ://github.com/pierluigiferrari/ssd_keras/blob/master/weight_sampling_tutorial.ipynb
这就是在 keras 模型(即在 h5 文件中)中的完成方式,我也想在 Tensorflow 对象检测 API 中执行相同的操作。似乎在训练时我可以在配置 protobuf 文件中指定新模型将具有的类的数量,但是由于我是 API(和 tensorflow)的新手,所以我无法遵循源结构并了解如何在微调时处理该数字。我知道的大多数 SSD 模型只是忽略并初始化分类权重张量,以防预训练模型的类权重形状与新模型的分类权重形状不同,但我想保留必要的分类权重并对其进行训练。另外,我将如何在 API 结构中做到这一点?
谢谢!
python - tensorflow 微调模型 Fast-RCNN 不显示边界框
我在同一个数据集上微调了 SSD Mobilenet 和 Fast-RCNN。两种模型都没有任何错误地进行训练和推理。但是 Fast-RCNN 微调模型没有显示任何边界框。因此,我尝试使用一张训练图像来查看训练后的模型是否能够在训练它的图像上绘制一个 bbox。但它什么也没显示。我应该从哪里开始寻找调试?
tensorflow - 使用 TensorFlow 的对象检测计数行人
我是机器学习领域的新手,根据我在 youtube 上看到的和在互联网上阅读的内容,我推测可能可以使用 tensorflow 的对象检测 API 来计算视频中的行人。
因此,我对 tensorflow 进行了一些研究,并阅读了有关如何安装 tensorflow 的文档,最后下载并安装了 tensorflow。使用 github 上提供的示例文件,我调整了与此处提供的 object_detection 笔记本相关的代码 -> https://github.com/tensorflow/models/tree/master/research/object_detection。
我在对visualization_utils.py 脚本进行更改时对我收集的视频执行了改编代码,以便报告跨越屏幕上定义的感兴趣区域的对象数量。也就是说,我收集了人类的边界框尺寸(左、右、上、下),并计算了所有穿过定义的感兴趣区域的检测(想象视频帧上具有左右像素值的一组两条虚拟垂直线和然后将检测到的边界框的左右值与预定义的值进行比较)。然而,当我使用这个程序时,我错过了很多行人,即使他们被程序检测到。那就是程序正确地将他们归类为人,但有时他们不符合我定义的计数标准,因此他们不被计算在内。我想知道是否有更好的方法来使用代码计算独特的行人,而不是使用我正在尝试开发的简单方法。我使用的方法是正确的吗?还有其他更好的方法吗?将不胜感激任何帮助。
请放轻松,因为我不是机器学习专家,只是一个新手。