标签: object-detection-api

Tensorflow对象检测API不显示全局步骤

我是新来的.我最近开始使用对象检测,并决定使用Tensorflow对象检测API.但是,当我开始训练模型时,虽然它仍然在后台进行训练,但它并不像它应该那样显示全局步骤.

详细信息:我正在服务器上进行培训,并在Windows上使用OpenSSH访问它.我通过收集图片并标记它们来训练自定义数据集.我使用model_main.py训练它.此外,直到几个月前,API才有所不同,直到最近他们才更改为最新版本.例如,早先它曾经使用train.py进行训练,而不是使用model_main.py.我能找到的所有在线教程都使用train.py,因此最新提交可能存在问题.但我没有找到其他人来解决这个问题.

提前致谢!

object-detection tensorflow object-detection-api

10
推荐指数
2
解决办法
3201
查看次数

在 Windows 10 上安装 Detectron2

我尝试按照此官方存储库安装 Facebook 的 Detectron2 。遵循该存储库,Detectron2 只能安装在 Linux 上。但是,我正在开发在 Windows 操作员上运行的服务器。有人知道如何在 Windows 上安装它吗?

python python-3.x deep-learning pytorch object-detection-api

10
推荐指数
3
解决办法
3万
查看次数

错误:无法为 pycocotools 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

我在使用对象检测 API 安装 TensorFlow 时遇到问题。\n我按照此 URL 中的步骤操作: https: //github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md

\n

步骤:

\n
git clone https://github.com/tensorflow/models.git\n\ncd models/research\nprotoc object_detection/protos/*.proto --python_out=.\ncp object_detection/packages/tf2/setup.py .\npython -m pip install \n
Run Code Online (Sandbox Code Playgroud)\n

我得到的错误是 pycocotools builds erro

\n
Building wheel for pycocotools (pyproject.toml) ... error\n  error: subprocess-exited-with-error\n\n  \xc3\x97 Building wheel for pycocotools (pyproject.toml) did not run successfully.\n  \xe2\x94\x82 exit code: 1\n  \xe2\x95\xb0\xe2\x94\x80> [14 lines of output]\n      running bdist_wheel\n      running build\n      running build_py\n      creating build\n      creating build\\lib.win-amd64-cpython-38\n      creating build\\lib.win-amd64-cpython-38\\pycocotools\n      copying pycocotools\\coco.py -> build\\lib.win-amd64-cpython-38\\pycocotools\n      copying pycocotools\\cocoeval.py -> build\\lib.win-amd64-cpython-38\\pycocotools\n      copying pycocotools\\mask.py …
Run Code Online (Sandbox Code Playgroud)

python python-3.x object-detection-api tensorflow2.0 pycocotools

10
推荐指数
2
解决办法
6万
查看次数

Windows上的Tensorflow对象检测API - 错误"ModuleNotFoundError:没有名为'utils'的模块"

我正在尝试获取TensorFlow对象检测API

https://github.com/tensorflow/models/tree/master/research/object_detection

按照安装说明在Windows上工作

https://github.com/tensorflow/models/tree/master/research/object_detection

这似乎适用于Linux/Mac.如果我将一个脚本放在我克隆上面的repo的目录中,我只能让它工作.如果我将脚本放在任何其他目录中,我会收到此错误:

ModuleNotFoundError: No module named 'utils'
Run Code Online (Sandbox Code Playgroud)

我怀疑原因是没有正确执行上述安装说明中列出的此命令的Windows等效项:

# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
Run Code Online (Sandbox Code Playgroud)

如果重要的话,我正在使用Windows 10,Python 3.6和TensorFlow 1.4.0.当然,我已经用Google搜索了这个问题并发现了各种链接,例如:

https://github.com/tensorflow/models/issues/1747

但这并没有解决这个问题.有关如何解决此问题的任何建议?

以下是我迄今为止所做的步骤:


编辑:这些步骤现在在更新后工作,以纳入RecencyEffect的答案

1)通过pip3安装TensorFlow和相关工具

2)从管理命令提示符处,运行以下命令:

pip3 install pillow
pip3 install lxml
pip3 install jupyter
pip3 install matplotlib
Run Code Online (Sandbox Code Playgroud)

3)在我的例子中,将TensorFlow"模型"存储库克隆到Documents文件夹

C:\Users\cdahms\Documents\models
Run Code Online (Sandbox Code Playgroud)

4)下载了Google Protobuf https://github.com/google/protobuf Windows v3.4.0发行版"protoc-3.4.0-win32.zip"(我尝试了最新的3.5.1并在后续步骤中出错,所以我尝试了3.4.0每个这个视频https://www.youtube.com/watch?v=COlbP62-BU&list=PLQVvvaa0QuDcNK5GeCQnxYnSSaar2tpku&index=1并且protobuf编译工作)

5)具体来说,将Protobuf下载提取到Program Files

"C:\Program Files\protoc-3.4.0-win32"
Run Code Online (Sandbox Code Playgroud)

6)CD进入模型\研究目录,具体而言

cd C:\Users\cdahms\Documents\models\research
Run Code Online (Sandbox Code Playgroud)

7)具体来说,执行了protobuf编译

“C:\Program Files\protoc-3.4.0-win32\bin\protoc.exe” object_detection/protos/*.proto --python_out=.
Run Code Online (Sandbox Code Playgroud)

导航:

C:\Users\cdahms\Documents\models\research\object_detection\protos
Run Code Online (Sandbox Code Playgroud)

并验证.py文件是否因编译而成功创建(仅开始使用.proto文件)

8)cd到object_detection目录,例如:

cd C:\Users\cdahms\Documents\models\research\object_detection
Run Code Online (Sandbox Code Playgroud)

然后在命令提示符下输入以下内容以启动object_detection_tutorial.ipynb Jupyter Notebook

jupyter notebook
Run Code Online (Sandbox Code Playgroud)

9)在Jupyter Notebook中,选择"object_detection_tutorial.ipynb" - >单元格 - >全部运行,该示例应在笔记本内运行

10)在Jupyter笔记本中,选择"文件" - >"下载为" - …

python object-detection tensorflow object-detection-api

9
推荐指数
1
解决办法
1万
查看次数

Tensorflow 2 对象检测 API:Numpy 版本错误

我遵循了“训练自定义对象检测器”教程(https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/training.html

运行脚本以继续训练预训练模型时:

python model_main_tf2.py --model_dir=models/my_ssd_resnet50_v1_fpn --pipeline_config_path=models/my_ssd_resnet50_v1_fpn/pipeline.config

(在这里找到:https : //github.com/tensorflow/models/blob/master/research/object_detection/model_main_tf2.py

使用不同的 numpy 版本,我收到以下错误。

场景#1:

  • 张量流:2.2.0
  • 麻木:1.20.0-1

NotImplementedError: Cannot convert a symbolic Tensor (cond_2/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported

我在网上查看,它建议将 numpy 版本降级 < 1.20.0(NotImplementedError: Cannot convert a Symbolic Tensor (2nd_target:0) to a numpy array)。请注意,对于 tensorflow 2.2.0,numpy 版本必须 >= 1.19.2。

场景#2:

  • 张量流:2.2.0
  • 麻木:1.19.2-5

ValueError: numpy.ndarray size changed, may …

numpy python-3.x object-detection-api

9
推荐指数
3
解决办法
3360
查看次数

TensorFlow对象检测API:评估mAP表现得很奇怪?

我正在使用Tensorflow Object Detection API为我自己的数据训练一个物体探测器.我正在关注Dat Tran的(精彩)教程https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9.我使用提供的ssd_mobilenet_v1_coco模型预训练模型检查点作为培训的起点.我只有一个对象类.

我导出了训练好的模型,在评估数据上运行它并查看结果边界框.训练有素的模型运作良好; 我会说如果有20个物体,通常会有13个物体在预测的边界框上有斑点("真正的正面"); 7未检测到物体的地方("假阴性"); 发生问题的2个案例是两个或多个对象彼此接近:在某些情况下,在对象之间绘制了边界框("误报"< - 当然,称这些"误报"等是不准确的,但这只是让我理解这里的精度概念).几乎没有其他"误报".这似乎比我希望获得的结果好得多,虽然这种视觉检查没有给出实际的mAP(根据预测和标记的边界框的重叠计算?),我粗略估计mAP为像13 /(13 + 2)> 80%的东西.

但是,当我运行eval.pyevaluate ()(在两个不同的评估集上)时,我得到以下mAP图(0.7平滑): mAP在训练期间

这将表明mAP的巨大变化,以及在训练结束时约0.3的水平,这比我根据在output_inference_graph.pb评估集上使用导出时绘制边界框的程度所假设的情况更糟糕.

以下是培训的总损失图: 培训期间的总损失

我的训练数据由200张图像组成,每张图像大约有20个标记对象(我使用labelImg app标记它们); 从视频中提取图像,对象很小,模糊不清.原始图像尺寸为1200x900,因此我将训练数据减少到600x450.评估数据(我用作评估数据集eval.py并用于在视觉上检查预测的外观)是相似的,由50个图像组成,每个图像有20个对象,但仍然是原始大小(训练数据是从前30分钟的视频和评估数据,最后30分钟).

问题1:当模型看起来效果如此之好时,为什么评估中的mAP如此之低?mAP图波动这么多是正常的吗?我没有触及张量板用于绘制图形的图像的默认值(我读过这个问题:Tensorflow对象检测api验证数据大小并且有一些模糊的想法,有一些默认值可以更改?)

问题2:这可能与不同大小的训练数据和评估数据(1200x700 vs 600x450)有关吗?如果是这样,我是否应该调整评估数据的大小?(我不想这样做,因为我的应用程序使用原始图像大小,我想评估模型对该数据的效果).

问题3:从每个图像有多个标记对象的图像形成训练和评估数据是否有问题(即,评估例程肯定会将一个图像中的所有预测边界框与一个图像中的所有标记边界框进行比较,以及不是所有预测的盒子在一个图像到一个标记的盒子中会产生许多"假误报"吗?)

(问题4:在我看来模型训练可能已经在大约10000次步骤后被停止了mAP类型的平稳,现在是否过度训练?当它波动如此之时很难分辨.)

我是对象检测的新手,所以我非常感谢任何人都能提供的见解!:)

tensorflow object-detection-api

8
推荐指数
1
解决办法
3531
查看次数

tf object detection api - 为每个检测 bbox 提取特征向量

我正在使用 Tensorflow 对象检测 API 并研究 pretrainedd ssd-mobilenet 模型。有没有办法为每个 bbox 提取移动网络的最后一个全局池作为特征向量?我找不到保存此信息的操作的名称。

我已经能够根据 github 上的示例提取检测标签和 bbox:

 image_tensor = detection_graph.get_tensor_by_name( 'image_tensor:0' )
 # Each box represents a part of the image where a particular object was detected.
 detection_boxes = detection_graph.get_tensor_by_name( 'detection_boxes:0' )
 # Each score represent how level of confidence for each of the objects.
 # Score is shown on the result image, together with the class label.
 detection_scores = detection_graph.get_tensor_by_name( 'detection_scores:0' )
 detection_classes = detection_graph.get_tensor_by_name( 'detection_classes:0' )
 num_detections = detection_graph.get_tensor_by_name( 'num_detections:0' ) …
Run Code Online (Sandbox Code Playgroud)

object-detection tensorflow object-detection-api tensorflow-slim

8
推荐指数
2
解决办法
2411
查看次数

tensorflow的对象检测api是否支持多类多标签检测?

经过几个小时的研究,我找不到任何关于使用对象检测API的多标签预测的例子.基本上我想在图像中为每个实例预测多个标签.如下图所示:

在此输入图像描述

我想预测服装类别,还有颜色和图案等属性.

根据我的理解,我需要为每个属性添加更多的分类头到第二阶段ROI特征图,并总结每个属性的损失?但是,我在对象检测代码中实现它有困难.有人可以给我一些关于我应该开始修改哪些功能的提示吗?谢谢.

tensorflow object-detection-api

8
推荐指数
1
解决办法
718
查看次数

使用新图像更新Tensorflow对象检测模型

我已经使用Tensorflow的对象检测Api使用自定义数据集训练了一个更快的rcnn模型。随着时间的推移,我想继续使用其他图像(每周收集一次)更新模型。目标是优化准确性并随着时间推移对较新的图像加权。

这里有一些选择:

  1. 将图像添加到以前的数据集并训练一个全新的模型
  2. 将图像添加到先前的数据集中,并继续训练先前的模型
  3. 仅包含新图像的新数据集,并继续训练以前的模型

这是我的想法:选项1:会更耗时,但是所有图像都将被“平等地”对待。

选项2:希望减少额外的训练时间,但一个问题是该算法可能会对较早的图像进行更多加权。

选项3:这似乎是最佳选择。采用原始模型,只专注于培训新事物。

其中之一明显更好吗?每个优点/缺点是什么?

此外,我想知道保留一个测试集作为准确性的控制还是每次创建一个包含新图像的新测试是更好的选择。也许将一部分新图像添加到模型中,再将另一部分添加到测试集中,然后将较旧的测试集图像反馈到模型中(或将其丢弃)?

object-detection tensorflow object-detection-api

8
推荐指数
1
解决办法
306
查看次数

如何训练不包含对象的 Tensorflow 对象检测图像?

我正在使用 Tensorflow 的对象检测训练一个对象检测网络,

https://github.com/tensorflow/models/tree/master/research/object_detection

我可以根据自己的图像和标签成功训练网络。但是,我有一个不包含任何标记对象的大型图像数据集,我希望能够训练网络不检测这些图像中的任何内容。

根据我对 Tensorflow 对象检测的理解,我需要给它一组图像和相应的 XML 文件,这些文件对图像中的对象进行装箱和标记。脚本将 XML 转换为 CSV,然后转换为其他格式以进行培训,并且不允许使用没有对象的 XML 文件。

如何给出没有对象的图像和 XML 文件?

或者,网络如何学习不是对象的东西?

例如,如果您想检测“热狗”,您可以使用一组带有热狗的图像来训练它。但是如何训练它什么不是热狗呢?

python object-detection deep-learning tensorflow object-detection-api

8
推荐指数
1
解决办法
5445
查看次数