问题标签 [tensorflow-model-garden]
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.
tensorflow2.0 - 自定义训练 TF 目标检测模型评估
对于我从自定义训练模型获得的一些评估结果,我将不胜感激。我正在使用来自http://download.tensorflow.org/models/object_detection/tf2/20200711/ssd_mobilenet_v2_320x320_coco17_tpu-8.tar.gz的 SSD MobileNet v2 320x320
我的对象有 12 个类,我想检测和分类使用 PASCAL VOC 格式(每个图像一个 XML 文件)注释的对象。此外,我使用不同的随机种子进行了 2 次不同的训练。所以这个问题不仅仅针对一次培训。所以我正在根据官方 TF-Object-Detection GitHub https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/evaluation_protocols.md评估这些模型
我正在使用 2 个指标:
- coco_detection_metrics :这个给出了一般平均平均精度 (mAP) @IoU=0.5, @IoU=0.75, @IoU0,5:.05:0.95 和良好的全局结果。
有问题的指标按类别如下,因此对于每个类:
- pascal_voc_detection_metrics 具有以下配置:
在这两种训练中,我目前的课程(大约 2-3k 图像超过 10k)在 0 附近具有非常低的精度,例如 10^-3,我真的不知道为什么,因为所有其他类别都高于 75-80%精确。
Tensorboard 显示的是按字母顺序排列的图表,所以我用班级编号注释了我的第二张图片。让我们看看第一次训练的指标: 1st_training
让我向您展示第二次培训的更详细的指标曲线: 2nd_training
先感谢您 !
python - 仅使用 1 个输入通道重新训练 ssd_mobilent_v2
我正在尝试使用 tensorflow 脚本重新训练 ssd_mobilenet_v2: https ://github.com/tensorflow/models/blob/master/research/object_detection/model_main_tf2.py 和默认配置文件: https ://github.com/tensorflow /models/blob/master/research/object_detection/configs/tf2/ssd_mobilenet_v2_320x320_coco17_tpu-8.config
但我想在拜耳图像上训练网络(这些图像只有 1 个通道,就像黑白图像一样)。
我不知道要编辑什么以将输入大小从(320x320x3)更改为(320x320x1)。如果有人能给我一些指示,那就太好了。
tensorflow - 模型动物园中的 Tensorflow 2.0 模型都没有处理文档
我有一个包含大约 100 张来自具有表格的文档的图像的数据集,所有表格和签名都已正确注释。我曾经从 tf1 模型 zoo 中训练 Faster RCNN InceptionV2,并且准确度非常完美。我只是想升级到 tf2 模型,我一直在训练以下模型:
Faster R-CNN ResNet50 V1 1024x1024 SSD ResNet50 V1 FPN 640x640 (RetinaNet50) CenterNet Resnet101 V1 FPN 512x512 SSD MobileNet V2 FPNLite 640x640 CenterNet HourGlass104 512x512 Faster R-CNN Inception ResNet V2 640x640
我已经在每一个上训练了大约 200k 步。它们都不能使用与来自 tf1 模型 Zoo 的 Faster RCNN InceptionV2 完美配合的相同数据。当我尝试任何图像时,边界框都不正确,它们的分数不超过 0.2,并且在大多数情况下,分数小于 0.1 或 0.001。我尝试了各种配置组合,例如:
我将训练和测试图像的大小都调整为 1024x1024,这有助于将准确度从 0.01 提高到 0.5,但我仍然看不到 90 年代的 detection_scores,就像它们曾经在 tf1 中一样。最大检测分数:
print('detection_scores max === ', detections['detection_scores'].numpy().max())
我可以看到它是 0.40230057,通常是这样的数字。
PS 我在同一个模型上尝试了另一个数据集,它似乎有效。在表数据集上,我可以看到损失随着时间的推移而减少,但准确度也在降低,因此,例如,我尝试了 22.ckpt 的图像,检测到的表的得分为 0.7,然后在我尝试训练后更像 100k 步它在 101.ckpt 上,检测已更改,分数为 0.4 或相似。
python - 文件太大 无法刷新事件
我正在尝试训练网络。并且培训因错误而中断,指出文件太大并且无法刷新事件(tf.summary)。当我检查文件实际上是 4GB+
我正在使用 delf 实现(在此处找到训练脚本:https ://github.com/tensorflow/models/blob/master/research/delf/delf/python/training/train.py )。我之前在对象检测模型中也遇到过这个问题。我记得我只是通过省略事件编写来避免这个问题。但我想为这个问题找到一个解决方案/原因。
我发现有关缺少事件文件的问题,但无法为我的问题找到一个好的答案。我会感谢你在这件事上的帮助。
更新我到目前为止所尝试的内容
- 更改 max_queue 参数 - 注意到 tf.summary.create_file_writer 有一个默认值为 10 的 max_queue 参数。所以我认为它给出了错误,因为它超过了这个默认值,所以无法刷新 11 个事件。所以我尝试了不同的值 20、200 并最终得到错误提示无法刷新 21 个事件、201 个事件等。
- 更改 flush_millis - 将其更改为较低的值以更频繁地刷新事件
- summary_writer.flush() - 代码没有 flush() 可能是因为它应该在 flush_millis 次之后刷新),但我尝试添加 flush() 以查看它是否有帮助
不幸的是,这些都不起作用。
初始错误的完整错误堆栈
python - TF1 vs TF2 对象检测模型推理速度(使用冻结图)
我目前将 TF1 和 TF2 object-detection-api 模型保存为 FrozenGraphs,然后运行 TF1 样式(加载 graph/sess.run,尽管我使用的是 tensorflow 2.5.0)。
我发现对于类似的模型,TF2 FrozenGraphs 的运行速度要慢得多。我知道 TF1 和 TF2 模型之间的实现存在差异,但这是否解释了差异?
或者 TF2 模型是否需要以不同的特定方式运行?
例如,TF2 的 SSD_Mobilenet_V2 运行速度比 TF1 的 SSD_Mobilenet_V2 慢 50% 左右(输入大小、输出类数相同)。
我对 TF1 模型使用通常的 TF1 导出器 (exporter.py:_export_inference_graph())。对于 TF2,我在 exporter_lib_v2.py 中有一个 export_inference_graph() 的修改版本。(创建concrete_function后,我将变量转换为常量,然后转换为frozen_graph并保存)
object-detection-api - 使用 CenterNet HourGlass104 1024x1024 的对象检测器出现问题
我有两个从 Instagram 收集的数据集。其中之一是汽车的照片。我使用来自 TensorFlow 模型花园的 CenterNet HourGlass104 1024x1024,在 COCO 数据集上进行了预训练,训练了一个对象检测器来检测汽车中的公司徽标。它工作得很好。
然而,我在另一个数据集上尝试了相同的方法,这是人们拿着来自不同商店的购物袋的照片。物体检测器的工作是检测购物袋和品牌。这一次,object center loss非常高,mAP为零。
我用相同的配置训练了两个模型(TensorFlow 的默认配置,批量较小,不会遇到内存问题)。
我也尝试降低学习率,但没有任何改善。
我想我应该尝试更改 object_center_params,但我不知道应该更改哪些值。
我还训练了其他模型,例如 Faster R-CNN Inception、SSD 和 EfficientDet,它们都有效。对于这个特定的数据集,只有 CenterNet 没有。
这是我的 pipeline.config 文件:
我会很感激我能得到的任何帮助。
tensorflow - 有什么方法可以从 TF 对象检测 API 推理对一批图像而不是 1 个图像运行 EfficientDet?
我已经设法从模型园(Tensorflow 2.0,对象检测 API)下载了对象检测 API。我能找到的所有推理代码(在目录和在线)都适用于 1 的批量大小。
我正在考虑以某种方式重新配置pipeline.config文件。更具体地说 eval_config (batch_size = 5)。这可以做到吗?
令我困惑的是,如何通过可变批量大小支持进一步的训练/微调......但推理不是吗?
感谢您提供的任何提示。
python - 在自定义数据集上训练 Faster-RCNN 模型时加载检查点
我正在尝试使用 Faster-RCNN 架构加载检查点并填充模型权重(Faster R-CNN ResNet50 V1 640x640
准确地说,从这里开始。我正在尝试为该网络加载权重,类似于在RetinaNet 的示例笔记本中完成的方式,他们请执行下列操作:
我正在尝试为我想要使用的 Faster-RCNN 网络提供类似的检查点加载机制,但是_base_tower_layers_for_heads
像_box_prediction_head
我也找不到关于Checkpoint
为我的特定用例填充模型的哪些部分的文档。非常感谢有关如何解决此问题的任何帮助!
tensorflow - 我可以在不使用 TensorRT 的情况下在 Jetson 板上运行正常的 tensorflow 对象检测模型吗?
是否可以在 jetson 板上运行推理图而不将其转换为github repo中提到的 TensorRT 格式?
我们能否在不使用 Jetson 开发板上的 TensorRT 的情况下运行Tensorflow 对象检测 API ?