导入错误:未找到名为'nets'的模块

13

我试图使用tensorflow/models中提供的export_inference_graph.py脚本将trained_checkpoint转换成最终的冻结模型,但是出现以下错误。是的,我已经将$PYTHONPATH设置为"models/slim",但仍然出现此错误,请有人帮助一下吗?

$ echo $PYTHONPATH
:/home/ishara/tensorflow_models/models:/home/ishara/tensorflow_models/models/slim

*****************************问题****************************************************************************

$sudo python3 object_detection/export_inference_graph.py  --input_type image_tensor  --pipeline_config_path = "ssd_inception_v2_pets.config"  --trained_checkpoint_prefix="output/model.ckpt-78543"  --output_directory="birds_inference_graph.pb"

Traceback (most recent call last):
  File "object_detection/export_inference_graph.py", line 74, in <module>
    from object_detection import exporter
  File "/usr/local/lib/python3.5/dist-packages/object_detection-0.1-py3.5.egg/object_detection/exporter.py", line 28, in <module>

  File "/usr/local/lib/python3.5/dist-packages/object_detection-0.1-py3.5.egg/object_detection/builders/model_builder.py", line 30, in <module>
  File "/usr/local/lib/python3.5/dist-packages/object_detection-0.1-py3.5.egg/object_detection/models/faster_rcnn_inception_resnet_v2_feature_extractor.py", line 28, in <module>
ImportError: No module named 'nets'

我已经为此苦苦挣扎了几天,尝试了许多解决方案都没有用。 我正在使用TensorFlow-GPU版本的Ubuntu 16.04。



你的TensorFlow版本是多少? - Tianjin Gu
它是tensorflow-gpu(1.3.0) - Ishara Abeykoon
没有详细的指令来说明你所做的和发生了什么事情,回答这种问题几乎是不可能的。从这里看,你好像使用的是一个第三方目标检测包,而不是仅仅使用Tensorflow? - Peter Hawkins
11个回答

21
请看一下在https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md的Protobuf编译,并正确设置PYTHONPATH,这是我在Windows上解决该问题的方法。
对于Windows系统:
从tensorflow/models/research/目录下进行以下步骤:
步骤1: protoc object_detection/protos/*.proto --python_out=. 步骤2:
set PYTHONPATH= <Path to 'research' Directory> ; <Path to 'slim' Directory>

例如:

set PYTHONPATH=C:\Users\Guy\Desktop\models\research;C:\Users\Guy\Desktop\models\research\slim

1
这是一个可行的解决方案。但每次重新启动机器都需要重新执行。它不是永久性的。有什么想法吗? - Soumya Boral
没有Soumya,目前还没有永久解决方案。每次重新启动计算机时,您都必须这样做。也许在未来的版本中,这个问题会得到解决。 - Pawan Mishra
将这些变量添加到你的 conda 环境中是否有意义?https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#saving-environment-variables - VirtualVDX
1
@SoumyaBoral 'set' 命令将其设置为临时状态,要使其永久生效,您需要修改 '环境变量'。 - Marco D.G.

7

Ubuntu 18 物理GPU (设备: 0, 名称: Tesla K80, PCI总线ID: 0000:00:1e.0, 计算能力: 3.7)强调文本

cd models/research/slim/;
python setup.py build
python setup.py install

如果你已经下载或克隆了你的模型目录,那么这就是必要的步骤。

5

TF-Slim可以通过TensorFlow 1.0的tf.contrib.slim使用,所以如果您使用了pip install tensorflow,则无需额外安装它。但是您仍然需要完成以下3个步骤:

  1. Install the models library

    $ cd
    $ git clone https://github.com/tensorflow/models/
    
  2. Add the PYTHONPATH to .bashrc

    $ cd
    $ vi .bashrc
    
    export PYTHONPATH="$PYTHONPATH:/home/${YOUR_USERNAME}/models/research/slim"
    
  3. Add the models path to your script

    $ vi ${YOUR_SCRIPT}.py
    
    import sys
    sys.path.append('/home/${YOUR_USERNAME}/models/research/slim/')
    

完成这3个步骤后,您就可以导入TF网络,如下所示:

import tensorflow as tf
from tensorflow.contrib import slim
from nets import inception_resnet_v2

3

2
我在Windows上遇到了Slim错误,这个方法解决了我的问题。我所做的是,将整个nets文件夹从slim目录复制到C:\Python\Python\Lib\site-packages\object_detection-0.1-py3.5.egg(我安装object_detection API的位置)。然后错误完全消失了。"最初的回答"

1

对于MacOS:

export PYTHONPATH=/home/username/models/research/slim:$PYTHONPATH

解决了这个问题。


1
这个问题在较新版本的tensorflow中已经修复,如果遇到此问题,请更新您的tensorflow版本。

1
它也发生在最新的tensorflow gpu版本(1.9)中。然而,@Pawan的解决方案解决了这个问题。 - Soumya Boral

0

这是一个PYTHONPATH问题。

我想补充一下现有的答案,如果你仍然无法解决问题并且使用的是Anaconda环境,请使用分发版附带的Anaconda提示符(以管理员模式运行),而不是您操作系统的系统提示符。在Anaconda提示符中设置PYTHONPATH并从那里运行命令。

此外,每次停用anaconda环境时,包括机器重新启动在内,PYTHONPATH都会被重置。所以记得再次设置它。


0
如果您正在使用Jupyter Notebook并且使用Linux系统, 请下载tensorflow-models 然后在Notebook中编写以下内容。

sys.path.append("/home/Roy/Downloads/models-master/research/slim/")

我用这个解决了我的问题

希望能对你有所帮助


0

我通过重新构建protos解决了这个问题,请检查/models/research/object_detection/protos目录下的center_net_pb2.py文件,检查所有文件是否已生成protos,如果没有则手动通过代码生成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接