我目前正在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
到目前为止,我一直被困在这里,现在不能再往前走了。我真的很感激任何关于这方面的建议或意见,同时,我会继续寻找解决方案。如果我能帮忙的话,请随时问我更多的细节。
干杯
只需更改代码从:
def detect(self, image):
...
return boxes, scores, classes.astype(int), num_detections
致:
return boxes, scores, classes.astype(int), num_detections.astype(int)
会解决的。
显然,这只是一个关于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