标签: object-detection-api

如何解决“AttributeError:模块'google.protobuf.descriptor'没有属性'_internal_create_key”?

from object_detection.utils import label_map_util在 jupyter notebook 中执行时遇到了它。其实就是tensorflow对象检测教程notebook(自带tensorflow对象检测api)完整的错误日志:

AttributeError                            Traceback (most recent call last)
<ipython-input-7-7035655b948a> in <module>
      1 from object_detection.utils import ops as utils_ops
----> 2 from object_detection.utils import label_map_util
      3 from object_detection.utils import visualization_utils as vis_util

~\AppData\Roaming\Python\Python37\site-packages\object_detection\utils\label_map_util.py in <module>
     25 import tensorflow as tf
     26 from google.protobuf import text_format
---> 27 from object_detection.protos import string_int_label_map_pb2
     28 
     29 

~\AppData\Roaming\Python\Python37\site-packages\object_detection\protos\string_int_label_map_pb2.py in <module>
     19   syntax='proto2',
     20   serialized_options=None,
---> 21   create_key=_descriptor._internal_create_key,
     22   serialized_pb=b'\n2object_detection/protos/string_int_label_map.proto\x12\x17object_detection.protos\"\xc0\x01\n\x15StringIntLabelMapItem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12M\n\tkeypoints\x18\x04 \x03(\x0b\x32:.object_detection.protos.StringIntLabelMapItem.KeypointMap\x1a(\n\x0bKeypointMap\x12\n\n\x02id\x18\x01 \x01(\x05\x12\r\n\x05label\x18\x02 \x01(\t\"Q\n\x11StringIntLabelMap\x12<\n\x04item\x18\x01 \x03(\x0b\x32..object_detection.protos.StringIntLabelMapItem'
     23 ) …
Run Code Online (Sandbox Code Playgroud)

python protocol-buffers proto tensorflow object-detection-api

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

无法从“cv2.cv2”导入名称“_registerMatType”

当我model_main_tf2.py在对象检测 API 上运行时,收到以下错误消息:

Traceback (most recent call last):
  File "/content/models/research/object_detection/model_main_tf2.py", line 32, in <module>
    from object_detection import model_lib_v2
  File "/usr/local/lib/python3.7/dist-packages/object_detection/model_lib_v2.py", line 29, in <module>
    from object_detection import eval_util
  File "/usr/local/lib/python3.7/dist-packages/object_detection/eval_util.py", line 36, in <module>
    from object_detection.metrics import lvis_evaluation
  File "/usr/local/lib/python3.7/dist-packages/object_detection/metrics/lvis_evaluation.py", line 23, in <module>
    from lvis import results as lvis_results
  File "/usr/local/lib/python3.7/dist-packages/lvis/__init__.py", line 5, in <module>
    from lvis.vis import LVISVis
  File "/usr/local/lib/python3.7/dist-packages/lvis/vis.py", line 1, in <module>
    import cv2
  File "/usr/local/lib/python3.7/dist-packages/cv2/__init__.py", line 9, in <module>
    from .cv2 import _registerMatType …
Run Code Online (Sandbox Code Playgroud)

python tensorflow object-detection-api

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

od_graph_def = tf.GraphDef() AttributeError: 模块“tensorflow”没有属性“GraphDef”

我有一台 mac,我使用的是 tensorflow 2.0、python 3.7。我正在关注为实时应用程序创建对象检测模型的教程。但我收到以下错误:

“下载/模型/研究/object_detection/object_detection_tutorial.py”,第 43 行,在 od_graph_def = tf od_graph_def = tf.GraphDef()

AttributeError: 模块“tensorflow”没有属性“GraphDef”

下面是教程链接:

我检查了环境,我已经在 anaconda 中有 tensorflow 环境

import tensorflow as tf
import zipfile

from collections import defaultdict
from io import StringIO
from matplotlib import pyplot as plt
from PIL import Image

sys.path.append("..")
from object_detection.utils import ops as utils_ops


from utils import label_map_util

from utils import visualization_utils as vis_util

MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17'
MODEL_FILE = MODEL_NAME + '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'

PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb'

PATH_TO_LABELS …
Run Code Online (Sandbox Code Playgroud)

import tensorflow object-detection-api

28
推荐指数
2
解决办法
5万
查看次数

如何查找冻结模型的输入和输出节点

我想optimize_for_inference.py在模型动物园的冻结模型上使用tensorflow的脚本:ssd_mobilenet_v1_coco.

如何查找/确定模型的输入和输出名称?

这是一个由tensorboard生成的图表的链接

这个问题可能会有所帮助:给定张量流模型图,如何找到输入节点和输出节点名称 (对我来说它没有)

inference tensorflow object-detection-api

13
推荐指数
2
解决办法
9044
查看次数

获取TensorFlow对象检测API教程中的边界框坐标

我是python和Tensorflow的新手.我正在尝试从Tensorflow对象检测API运行object_detection_tutorial文件,但是当检测到对象时,我无法找到可以获取边界框坐标的位置.

相关代码:

 # The following processing is only for single image
        detection_boxes = tf.squeeze(tensor_dict['detection_boxes'], [0])
        detection_masks = tf.squeeze(tensor_dict['detection_masks'], [0])
Run Code Online (Sandbox Code Playgroud)

...

我假设边界框被绘制的地方是这样的:

 # Visualization of the results of a detection.
  vis_util.visualize_boxes_and_labels_on_image_array(
      image_np,
      output_dict['detection_boxes'],
      output_dict['detection_classes'],
      output_dict['detection_scores'],
      category_index,
      instance_masks=output_dict.get('detection_masks'),
      use_normalized_coordinates=True,
      line_thickness=8)
  plt.figure(figsize=IMAGE_SIZE)
  plt.imshow(image_np)
Run Code Online (Sandbox Code Playgroud)

我尝试打印output_dict ['detection_boxes'],但我不确定数字是什么意思.有很多.

array([[ 0.56213236,  0.2780568 ,  0.91445708,  0.69120586],
       [ 0.56261235,  0.86368728,  0.59286624,  0.8893863 ],
       [ 0.57073039,  0.87096912,  0.61292225,  0.90354401],
       [ 0.51422435,  0.78449738,  0.53994244,  0.79437423],
Run Code Online (Sandbox Code Playgroud)

......

   [ 0.32784131,  0.5461576 ,  0.36972913,  0.56903434],
   [ 0.03005961,  0.02714229,  0.47211722,  0.44683522],
   [ 0.43143299, …
Run Code Online (Sandbox Code Playgroud)

python bounding-box tensorflow object-detection-api

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

了解COCO评估的“最大检测量”

我开始使用cocoapi评估使用Object Detection API训练的模型。阅读了解释平均平均精度(mAP)和召回率的各种资料之后,我对可可比中使用的“最大检测”参数感到困惑。

根据我的理解(例如,此处此处此处),可以通过计算各种模型得分阈值的精度和召回率来计算mAP。这给出了精确调用曲线,并且mAP被计算为该曲线下面积的近似值。或者,以不同的方式表示为定义的召回范围(0:0.1:1)中最大精度的平均值。

但是,对于给定数量的maxDet具有最高分数的最大检测次数(),cocoapi似乎可以计算精度和召回率。然后从中获得的精确调用曲线maxDets = 1, 10, 100。为什么这是一个好的指标,因为它显然与上述方法不同(它可能不包括数据点)?

在我的示例中,每个图像有〜3000个对象。使用cocoapi评估结果的召回性很差,因为它会将检测到的对象数限制为100。

出于测试目的,我将评估数据集作为基本事实和检测到的对象(带有一些人工得分)提供。我希望精确度和召回率非常好,这实际上是在发生。但是,一旦我提供了100多个对象,精度和查全率就会随着“检测到的对象”数量的增加而下降。即使它们都是“正确的”!这有什么意义?

tensorflow mscoco object-detection-api

13
推荐指数
2
解决办法
1922
查看次数

Frozen_inference_graph.pb和saved_model.pb有什么区别?

我有一个训练有素的模型(Faster R-CNN),导出该模型export_inference_graph.py可用于推理。我想了解创造之间的区别frozen_inference_graph.pb,并saved_model.pbmodel.ckpt*文件。我也看到了.pbtxt表示形式。

我尝试通读此书,但找不到真正的答案:https : //www.tensorflow.org/extend/tool_developers/

这些文件包含哪些内容?哪些可以转换为其他?每个的理想目的是什么?

python tensorflow object-detection-api

13
推荐指数
2
解决办法
5803
查看次数

Tensorflow对象检测API没有train.py文件

我已根据提供的文档正确安装了Tensorflow Object Detection API.但是,当我需要训练我的网络时,research/object_detection目录中没有train.py文件.有什么办法可以解决这个问题吗?

链接:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md

python tensorflow object-detection-api

12
推荐指数
3
解决办法
8484
查看次数

使用Tensorflow Object Detection API检测图像中的小对象

我想使用Tensorflow Object Detection API来识别一系列网络摄像头图像中的对象.在COCO数据集上预训练的更快的RCNN模型似乎是合适的,因为它们包含我需要的所有对象类别.

但是,我想在识别每个图像中相当小的对象时提高模型的性能.如果我理解正确,我需要编辑配置文件中的锚scales参数,以使模型使用较小的边界框.

我的问题是:

  • 调整此参数后,是否需要在整个COCO数据集上重新训练模型?或者有没有办法改变模型只是为了推断并避免任何重新训练?
  • 是否有任何其他提示/技巧可以成功识别小物体,而不是将图像裁剪成多个部分并分别对每个部分进行推理?

背景信息

我目前正在向模特提供1280x720张图像.大约200x150像素,我发现检测物体更难.

object-detection tensorflow object-detection-api

11
推荐指数
1
解决办法
3132
查看次数

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
查看次数