ModuleNotFoundError:Google Colab 上没有名为“nets”的模块
Posted
技术标签:
【中文标题】ModuleNotFoundError:Google Colab 上没有名为“nets”的模块【英文标题】:ModuleNotFoundError: No module named 'nets' on Google Colab 【发布时间】:2020-09-08 01:33:38 【问题描述】:我正在尝试在 Google Colab 上运行 TensorFlow Object Detection API
以在自定义数据集上训练 SSD-Mobilenet
模型。但我正面临这个 NoModuleError。它没有找到模块'nets'
。我已经发现有人面临类似的问题,尽管他们没有在 Google Colab 中运行 trining。以下是部分链接:
ImportError: No module named 'nets'
ModuleNotFoundError: No module named 'nets' (TensorFlow)
我在上面的任何地方都找到了添加slim
和research
文件夹的PYTHONPATH
的建议,我都做了。以下是我已经添加的路径:
! echo $PYTHONPATH
import os
os.environ['PYTHONPATH'] += ":/models"
os.environ['PYTHONPATH'] += ":/models/research"
os.environ['PYTHONPATH'] += ":/models/research/slim"
# I copied the `nets` folder inside models folder and
# additionally here adding this folder to python path such that it becomes available to `faster_rcnn_inception_resnet_v2_feature_extractor.py` file for importing.
os.environ['PYTHONPATH'] += ":/models/nets"
! echo $PYTHONPATH
%cd '/content/gdrive/My Drive/Computer_vision_with_deep_learning/TFOD/models/research/'
!python setup.py build
!python setup.py install
%cd '/content/gdrive/My Drive/Computer_vision_with_deep_learning/TFOD'
但仍然出现此错误。以下是我在 Colab 上遇到的错误:
Traceback (most recent call last):
File "training/train.py", line 26, in <module>
from object_detection import model_lib
File "/content/gdrive/My Drive/Computer_vision_with_deep_learning/TFOD/training/object_detection/model_lib.py", line 28, in <module>
from object_detection import exporter as exporter_lib
File "/content/gdrive/My Drive/Computer_vision_with_deep_learning/TFOD/training/object_detection/exporter.py", line 23, in <module>
from object_detection.builders import model_builder
File "/content/gdrive/My Drive/Computer_vision_with_deep_learning/TFOD/training/object_detection/builders/model_builder.py", line 59, in <module>
from object_detection.models import faster_rcnn_inception_resnet_v2_feature_extractor as frcnn_inc_res
File "/content/gdrive/My Drive/Computer_vision_with_deep_learning/TFOD/training/object_detection/models/faster_rcnn_inception_resnet_v2_feature_extractor.py", line 30, in <module>
from nets import inception_resnet_v2
ModuleNotFoundError: No module named 'nets'
正如我注意到的错误产生行是文件faster_rcnn_inception_resnet_v2_feature_extractor.py
的from nets import inception_resnet_v2
。因此,我还在其范围内复制了nets
文件夹,以便它可以找到该模块。但它仍然在说同样的事情,尽管现在不应该找到这个模块是没有意义的。这里可能还有什么问题?
【问题讨论】:
【参考方案1】:我遇到了同样的错误,但我找到了可能的解决方案。 你需要在 slim 目录下运行上面的代码。
%cd drive/My\ Drive/<path to slim>/slim
!python setup.py build
!python setup.py install
这段代码为 slim 运行 setup.py
,实际上它设置了所有需要的模块。
您可能还需要将路径添加到您的环境变量中。
os.environ['PYTHONPATH'] = '/env/python/drive/My Drive/slim'
或者
! export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim
这里是对我有用的链接。
https://github.com/tensorflow/models/issues/1842
https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10/issues/150
希望这会有所帮助。
【讨论】:
感谢您的回答。但是我不太确定,因为我的问题已经解决了,所以我没有尝试过。我想出了另一个对我有用的解决方案,我已经发布了我的解决方案。 好的,很高兴您找到了解决方案! 如我所见,您正在与 colab 合作,对吧?当您尝试训练您的模型时,您没有遇到运行时崩溃吗? 这取决于我的使用情况以及资源的可用性,..是的,有时我会遇到这种情况,然后我通常会等待一整天,然后再试一次,通常它会再次起作用。尽管资源的可用性可能会有所不同,但他们并未明确提供任何具体的统计数据,但 Google 会对每个用户施加配额。【参考方案2】:好的!我设法在Colab
中使用以下方式解决了它。如果您认为所有必需的软件包都已安装并可以正常使用,请从点号4
开始:
使用以下命令安装model
:
!git clone --depth 1 https://github.com/tensorflow/models
还要在同一目录中安装以下软件包:
!apt-get install -qq protobuf-compiler python-pil python-lxml python-tk
!pip install -q Cython contextlib2 pillow lxml matplotlib
!pip install -q pycocotools
现在去研究文件夹编译.proto
文件。为此,首先通过运行以下命令转到research
文件夹:
%cd /content/models/research
现在编译 .proto
文件:
!protoc object_detection/protos/*.proto --python_out=.
现在添加执行以下代码的python路径:
import os
os.environ['PYTHONPATH'] += ':/content/models/research/:/content/models/research/slim/'
如果您遇到关于tf-slim
的问题,请安装以下软件包:
!pip install git+https://github.com/google-research/tf-slim
完成!
注意:
我发现this notebook 有助于解决问题。 我正在使用tensorflow 1.x
,基本上是tensorflow 1.15.2
,由Colab
提供。
【讨论】:
【参考方案3】:我刚刚从 github 克隆了存储库并重新运行发生 ModuleNotFoundError 的代码单元。 原因:它在特定包中查找我克隆的文件,如果找不到则抛出错误。
【讨论】:
以上是关于ModuleNotFoundError:Google Colab 上没有名为“nets”的模块的主要内容,如果未能解决你的问题,请参考以下文章
macOS 上的“ModuleNotFoundError:没有名为 'dbus' 的模块”
ModuleNotFoundError:没有名为“memoize”的模块
ModuleNotFoundError:没有名为“pssh”的模块
ModuleNotFoundError:没有名为“dataviz”的模块