nvidia:tensorflow docker中安裝object detection api踩過的坑

nvidia:tensorflow docker中默認是python3.6.8,在安裝object detection api的過程中按照https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md

安裝時,出現了以下問題,記錄下來給有需要的人看

  1. 第一步安裝依賴包,
    apt-get install protobuf-compiler python-pil python-lxml python-tk
    pip install Cython
    pip install contextlib2
    pip install jupyter
    pip install matplotlib

python-pil python-lxml jupyter Cython matplotlib已有,不需要安裝。

遇到兩個問題,

(1)protobuf-compiler下不下來,怎麼就是下不下來,翻牆也不好用。先把libprotobuf10_3.0.0-9.1ubuntu1_amd64.deb下下來後dpkg -i 安裝;
(2)python-tk這個包是罪魁禍首,要裝python3-tk,否則會自動安裝python2.7版本,應該會設置爲默認,然後環境會變亂。

2、 設置環境變量後,在terminal中可以測試object detection api通過,但在jupyter中卻沒有PYTHONPATH這個環境變量,env中直接沒有。

# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim

當然就沒法調用,測試時直接提示

ModuleNotFoundError: No module named 'object_detection'

試了很多辦法均無效,
##不管用
sys.path.append('/mnt/models/research')
sys.path.append('/mnt/models/research/slim')
sys.path

##不管用
!export PYTHONPATH=$PYTHONPATH:/mnt/models/research:/mnt/models/research/slim
!env
!pwd
!source ~/.bashrc

最後從sys.path中找到當下python的包路徑:/usr/local/lib/python3.6/dist-packages,建立一個tensorflow_model.pth文件,文件內容寫models的路徑,slim的路徑
/mnt/models/research
/mnt/models/research/slim

解決問題。

python-tk的問題真是困擾好久,安裝後會發現,所有的包都不見了,jupyter退出後就再進不去了。後來發現python的版本莫名其妙的變了才發現問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章