问题标签 [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 - Tensorflow 对象检测 API 无效参数:元组组件 16 中的形状不匹配。预期 [1,?,?,3],得到 [1,182,322,4]
这是这个 Github issue的后续问题。长话短说,我尝试将 Tensorflow 对象检测 API 与我自己的数据集一起使用。一切正常,直到突然崩溃并显示以下错误消息:
起初我以为我的数据集中可能有一些不一致的图像,即有一些 png 保存为 jpg,反之亦然,所以我去扫描数据集中的所有图像并修复它们。我对这样的任务使用了以下方法:
然后我用于EmguCV
检索图像深度/通道数,以避免从错误的深度引起任何进一步的问题!然后注释图像 abdTFRecord
再次创建一个新的,然后开始一个新的培训课程。
这是我再次得到的:
我使用了我的图像的一个随机子集(10K 图像而不是 300K)并再次得到相同的错误:
问题是,我的数据集中根本没有错误消息中报告的形状的任何图像。
以下是一些补充信息:
- 操作系统平台和分发:
Windows 10 x64 1703, Build 15063.540
- TensorFlow 安装自(源代码或二进制文件):
binary (used pip install )
- TensorFlow 版本(使用下面的命令):
1.3.0
- 蟒蛇版本:
3.5.3
- CUDA/cuDNN 版本:
Cuda 8.0 /cudnn v6.0
- GPU型号和内存:
GTX-1080 - 8G
tensorflow - Tensorflow 对象检测 API,仅在 CPU 上运行,出现错误忽略设备规范 /device:GPU:0 for node 'prefetch_queue_Dequeue'
当我开始训练时,这个过程只发生在 CPU 上。这是我在启动时收到的消息:
忽略节点 'prefetch_queue_Dequeue' 的设备规范 /device:GPU:0 因为来自 'prefetch_queue' 的输入边是参考连接并且已经将设备字段设置为 /device:CPU:0
并且当 GPU 内存被填满时,只有 GPU 负载的突然峰值,并且大部分是 0%。不用说,性能非常缓慢。
似乎所有内容都加载到 CPU 而不是 GPU,因为 CPU 利用率接近 100%:
我还注意到在 ubuntu 中存在同样的问题,但它至少比 windows 分支快 4 倍(每个步骤需要 400 毫秒,而在 windows 中需要 1300 毫秒)
我在 Ubuntu(14.04)和Windows 和它们都使用pip install --upgrade tensorflow-gpu command
以下是整个日志安装:
出了什么问题以及如何解决这个问题?
顺便说一下,这里有一些补充信息:
- 操作系统平台和分发:
Windows 10 x64 1703, Build 15063.540
- TensorFlow 安装自(源代码或二进制文件):
binary (used pip install )
- TensorFlow 版本(使用下面的命令):
1.3.0
- 蟒蛇版本:
3.5.3
- CUDA/cuDNN 版本:
Cuda 8.0 /cudnn v6.0
- GPU型号和内存:
GTX-1080 - 8G
更新:
评论部分建议片段的输出如下:
输出:
tensorflow - Tensorflow Object Detection API 图像预处理中的概率参数
我正在使用 Tensorflow 对象检测 API 训练 ssd_inception 神经网络。在管道配置文件中,有预处理器选项可在训练期间增强图像。有没有办法引入应用给定预处理的概率?例如 20% 的图像会改变对比度等。如果没有,是否有计划这样做?
tensorflow - 为什么 Tensorflow Object Detection API 只检测第一类而忽略其余的?
ODA
我对自己的数据集进行了快速测试。我注意到它只检测到一个类,好像只有一个类!
这是一个检测到正确类的示例:
这是一个不做任何事情的例子!:
并且打印在每个图像下方的这些数字是classes
我打印的变量的内容(下面给出的代码),以查看是否有任何其他类被识别。
这是一个错误地检测到一个类的例子(你可以再次看到它只检测到类 1):
所以基本上它只在类 1 周围画一个矩形!并完全忽略第 2 类。我正在使用 Jupyter notebook 示例中提供的代码,如下所示:
我什至尝试设置min_score_thresh=0.1
但没有任何改变!然后我尝试max_boxes_to_draw
了如你所见,再次无济于事。代码方面的任何其他内容都与此相同,除了它从 Internet 下载模型的部分,我将其注释掉并阅读了我自己的预训练模型。
我是对象检测的新手,不知道是什么原因造成的。
更新:
我的标签图看起来像这样:
我的数据集由如下 XML 文件组成,这些文件使用我在下面给出的代码片段转换为 CSV。注释示例:
这是我用来将 XML 转换为 CSV 的片段:
最后这就是我创建 TFRecords 的方式:
python - TensorFlow 对象检测 API 内存不足
我是 tensorflow 的新手,正在尝试训练自己的对象检测模型。
硬件:尝试了很多东西,但最大的是 32gb cpu。还尝试了 8gb cpu 和 2gb gpu。
所有正在运行的窗口,python 3.6.2 和 tensorflow 1.3
我一直在关注这里的指南https://pythonprogramming.net/introduction-use-tensorflow-object-detection-api-tutorial/
错误是:(对不起,VM 已关闭,这就是我所拥有的) 错误消息 OOM
批量:3
我开始认为我的问题是初始图像大小(4mb,4288x3216),所以我一直在尝试其他资源(纸张空间)并且仍然在 8gb gpu 上耗尽内存。
我有 571 张图像来训练模型,还有 250 多张图像用于测试,大小都一样。
关于传递模型少量数据以便我可以保持运行的任何建议?
作为建议的评论之一,我可以调整大小,但这将如何影响我的 XML 文件?
python - 用于自定义数据集的 Tensorflow 对象检测 API - 在训练期间被杀死
在自定义数据集(店面图像)上进行对象检测训练,针对单个类(总共 285 个图像),在 CPU 上本地运行,几个步骤后8GB RAM 被杀死。
我正在关注这个博客作为参考。
这是控制台日志
我的想法和问题
1)图像尺寸有问题吗?- 我的图像分布如下:<= 400x300 (5%)、400x300 和 640x480 之间 (22%)、640x480 和 800x600 (63%) 和 > 800x600 (22%)。尽管尺寸约为 400x300 的图像足以识别购物板,但在我的数据集中存在更高分辨率的倾向,因为下一步是在这些板上进行文本识别。
- 这种想法对吗?
- 我是否应该将图像调整为更小的尺寸(如果是 - 什么尺寸合适)并在重新开始整个过程之前重新进行注释?
我可以训练 Oxford-IIIT Pet 数据(约 7.9k 图像 - 耗时约 13 小时)2000 步(配置文件的 train_config 部分中的 num_steps = 2000),而不会崩溃或被杀死。所以,我认为只有 285 个图像应该能够在 CPU 本身上运行。
2)交换内存有问题吗?- 我还检查了其他类似的帖子(增加交换空间建议,没有后续和另一个增加交换内存建议),但因为我可以在我当前的系统设置上训练 Oxford-IIIT 宠物数据集,训练为少至 285 张图像不应终止该过程。
- 我的想法正确吗?
- 如果不是,这确实是一个解决方案,那么我需要指针和明确的步骤来做到这一点。
我想知道出了什么问题并让它在本地运行。我希望我已经提供了足够的信息来获得帮助。如果没有,请告诉我需要什么。
系统信息
- 您正在使用的模型的顶级目录是什么: tensorflow/models(尚未更新到新的文件夹结构)
- 我是否编写了自定义代码(而不是使用 TensorFlow 中提供的股票示例脚本):是 - 最小的更改(按照我自己的数据集的 Dat Trans 模板 - Github)
- 操作系统平台和发行版(例如,Linux Ubuntu 16.04): Ubuntu 16.04.3 LTS
- TensorFlow 安装自(源代码或二进制文件):二进制文件(进入虚拟环境)
- TensorFlow 版本(使用下面的命令): 1.3.0
- Bazel 版本(如果从源代码编译): NA
- CUDA/cuDNN 版本:不适用
- GPU 型号和内存: NA
- 重现的确切命令: python object_detection/train.py --logtostderr --pipeline_config_path=/home/rajaram/tensorflow/models/object_detection/models/sf_od_model/ssd_mobilenet_v1_sf_train.config --train_dir=/home/rajaram/tensorflow/models/object_detection /models/sf_od_model/train
tensorflow-gpu - 在 TensorFlow 对象检测 API 中定义 GPU 选项
我可以在具有 4x 1080Ti 的本地机器上进行训练,并且正如其他人所指出的那样,TF 会抓取我机器上的所有可用内存。在四处寻找大多数搜索后,我找到了基本 TF 而不是对象检测 API 的解决方案,例如:
如何在对象检测 API 中访问这些类型的选项?如何在 OD API 中对训练进行类似的 TF 风格控制?OD API / slim API中是否有适当的方法?
我尝试在该 training.proto 中添加一条 GPUOptions 消息,但这似乎没有什么不同。
c++ - Tensorflow 对象检测 API 是否有 C++ 包装器?
我们已经训练了我们的模型并使用提供的 Python 脚本成功地测试了它们。但是,我们现在想在我们的网站上部署它并为第二轮测试运行一个 Web 服务。
是否有一个 C++ 包装器,以便我们可以像使用 Python 脚本一样运行/执行我们的模型?
tensorflow - tensorflow 对象检测 api GridAnchorGenerator 不包含更快的 rcnn 论文
在grid_anchor_generator.py中,这段代码生成的anchor与Faster RCNN论文实现不一样。在 Google Object Detection API 中,在特征图位置中计算的锚点[0, 0]
为:
而在更快的 rcnn 论文的作者实现中,锚点是:
Faster rcnn 论文中的 scale 和 aspect_ratio 为:
Google Object Detection API 中的 scale 和 aspect_ratio 为:
python - TensorFlow对象检测其他形状分类
在 TensorFlow 对象检测 API 中,是否有可能获得除矩形以外的其他形状的识别对象?
例如,当我教我的计算机识别森林时,获得某种多边形而不是矩形应该更有用。
其他东西是例如河流,但多边形似乎比线容易得多。