在《21个项目玩转深度学习》第五章,深度学习中的目标检测。
在安装tensorflow object detection API时,在‘model/research’文件夹下,先运行:
protoc object_detection/protos/*.proto --python_out=.
再运行:
export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim
注意:1)等号“=”两边没有空格 2)pwd两边可以加单引号,也可以不加
然后运行:
python object_detection/builders/model_builder_test.py
出现以下问题:
ModuleNotFoundError: No module named 'nets'
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题分析:
'nets'模块在 ‘models/research/Slim’文件夹下定义,在《21个项目》书中,也已经提示“需要将Slim的目录加入PYTHONPATH后才能运行”,按道理说,在上面的第二个命令中已经实现来该功能,model_builder_test.py中的对应文件应该能找到“nets”模块才对,然而就是找不着。
经过多次尝试,后来,我才发现,我是在我搭建的conda虚拟环境下运行以上命令,并执行相关脚本,出现了以上问题。但是当我在系统默认的python环境下再次执行以上第三个命令时,错误不见了。
所以我猜测可能是如下原因:虚拟环境的python与ubuntu默认的python是相隔离的,运行”export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim“命令是将相关路径添加到系统默认的python的环境路径中去了,与虚拟环境的环境变量没有关系,所以在运行脚本时找不到自己添加的路径。