当前位置: 首页 > 知识库问答 >
问题:

在TensorFlow对象检测API中,只有整数标量数组可以转换为标量索引

胡志
2023-03-14

我目前正在MacOS上使用Tensorflow对象检测API,并使用链接中给出的代码示例构建了一个Flask应用程序。我使用的是python版本3.6。4.当GET请求返回代码200时,应用程序似乎工作正常。但是,当我将一些图像上传到应用程序以检测对象时,它会抛出以下错误。

* Serving Flask app "app"
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [14/Feb/2018 11:23:37] "GET / HTTP/1.1" 200 -
/var/folders/f1/k7c234sx5fn9j84yt130_znr0000gn/T/tmpmpi1q72g
[2018-02-14 11:23:52,115] ERROR in app: Exception on /post [POST]
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/bkaankuguoglu/Desktop/AccentureRepo/ObjectDetectionRestApi/app.py", line 184, in post
    result = detect_objects(temp.name)
  File "/Users/bkaankuguoglu/Desktop/AccentureRepo/ObjectDetectionRestApi/app.py", line 151, in detect_objects
    for i in range(num_detections):
TypeError: only integer scalar arrays can be converted to a scalar index
127.0.0.1 - - [14/Feb/2018 11:23:52] "POST /post HTTP/1.1" 500 -

下面是引发错误的代码片段,我确实使用了代码示例,但做了一些小改动。正如我在论坛上读到的很多帖子一样,我遇到一些评论,建议第151行的num\u detections是一个numpy数组,因此,应该用num\u detections替换它。形状[0]以进行迭代。在尝试了这个之后,我得到了一个索引器错误:元组索引超出范围错误,最终通过创建一个新的来避免问题。

def detect_objects(image_path):
  image = Image.open(image_path).convert('RGB')
  boxes, scores, classes, num_detections = client.detect(image)

  image.thumbnail((480, 480), Image.ANTIALIAS)

  new_images = {}
  for i in range(num_detections):
    if scores[i] < 0.2: continue
    print(classes[i],scores[i])
    cls = classes[i]
    if cls not in new_images.keys():
      new_images[cls] = image.copy()
    draw_bounding_box_on_image(new_images[cls], boxes[i],
                               thickness=int(scores[i]*10)-4)

  result = {}
  result['original'] = encode_image(image.copy())

  for cls, new_image in new_images.iteritems():
    category = client.category_index[cls]['name']
    result[category] = encode_image(new_image)

  return result

到目前为止,我一直被困在这里,现在不能再往前走了。我真的很感激任何关于这方面的建议或意见,同时,我会继续寻找解决方案。如果我能帮忙的话,请随时问我更多的细节。

干杯

共有2个答案

艾心远
2023-03-14

只需更改代码从:

def detect(self, image):
  ...
  return boxes, scores, classes.astype(int), num_detections

致:

return boxes, scores, classes.astype(int), num_detections.astype(int)

会解决的。

段干浩荡
2023-03-14

显然,这只是一个关于python版本的问题。当从3.6切换到2.7时,它就像一个符咒。

 类似资料:
  • 我正在尝试一个来自github链接的tensorflow的简单演示代码 我目前正在使用python版本3.5。2 我在命令行中尝试board.py时遇到了这个错误。我已经安装了运行此操作所需的所有依赖项。

  • 我为这个问题制作了两个数组的简单示例:是一个一维数组,索引处有标签,对应于nD数组的相同索引。我获取标签2出现的所有索引,并希望检索中的值。 因此,如果我想要标签2,我得到索引0和3,这应该给我相应数组中索引0和3的值。 但是当我想调用我的函数时,我收到一个TypeError@。 我的职能:

  • 我知道关于这个错误已经有几个问题了。但在这种特殊情况下,我不确定是否已经有了解决我问题的方法。我有这部分代码,我想打印数据帧df的“y”列。发生以下错误:TypeError:只有整数标量数组才能转换为标量索引 可以打印整个数据帧。这看起来像: 这是整个错误消息: 我认为这与numpy阵列有关。提前谢谢你!

  • 我编写了以下代码来优化使用TensorRT的TensorFlow 1目标检测模型,然后在Jetson Nano上运行推断。但是,它运行推断,但返回索引,而不会在图像上显示识别的对象。 这是我的密码: 以下是错误的一个片段: 我该怎么解决这个问题? 谢谢

  • 我试着用pylot来模拟单摆。为此,我创建了类钟摆,在其中一个方法中,我不断得到相同的错误。 错误代码为: 文件“C:\Users\Lucas\Anaconda3\envs\Spyder\lib\site packages\numpy\core\fromnumeric.py”,第47行,在_wrapitresult=getattr(asarray(obj),method)中(*args,**kwd

  • 我想从官方熊猫留档...DataFrame.fillna所以基本上用值1填充df数据框“myc”列中的NaN值。 数据帧 代码1 成果目标1 误差表第1页 代码2我后来还尝试列出any_feature列 错误2 尝试解决方案 Not dictionary - Pandas: Getting "TypeError: only integer scalar arrays can be converte