安裝並運行PyTorch-YOLOv3

1 安裝

1.0 環境

不說環境,都是耍流氓。

  • Ubuntu 16.04
  • Python 3.5.2(強烈建議安裝Python 3.6+)
  • PyTorch 1.3.1

1.1 下載代碼

$ git clone https://github.com/eriklindernoren/PyTorch-YOLOv3

1.2 安裝依賴

$ cd PyTorch-YOLOv3/
$ sudo pip3 install -r requirements.txt

打開requirements.txt,需要的依賴爲:

  • numpy
  • torch>=1.0
  • torchvision
  • matplotlib
  • tensorflow
  • tensorboard
  • terminaltables
  • pillow
  • tqdm

下載完成時,輸出:

Successfully installed absl-py-0.8.1 astor-0.8.1 cachetools-3.1.1 certifi-2019.11.28 chardet-3.0.4 cycler-0.10.0 gast-0.2.2 google-auth-1.8.2 google-auth-oauthlib-0.4.1 google-pasta-0.1.8 grpcio-1.25.0 h5py-2.10.0 idna-2.8 keras-applications-1.0.8 keras-preprocessing-1.1.0 kiwisolver-1.1.0 markdown-3.1.1 matplotlib-3.0.3 oauthlib-3.1.0 opt-einsum-3.1.0 protobuf-3.11.1 pyasn1-0.4.8 pyasn1-modules-0.2.7 requests-2.22.0 requests-oauthlib-1.3.0 rsa-4.0 tensorboard-2.1.0 tensorflow-2.0.0 tensorflow-estimator-2.0.1 termcolor-1.1.0 terminaltables-3.1.0 tqdm-4.40.2 urllib3-1.25.7 werkzeug-0.16.0 wrapt-1.11.2

但是,還有個錯誤提示:

ERROR: tensorflow 2.0.0 has requirement tensorboard<2.1.0,>=2.0.0, but you’ll have tensorboard 2.1.0 which is incompatible.

意思是tensorflow 2.0.0需要的tensorboard版本要小於2.1.0,大於或等於2.0.0,而上面安裝的tensorboard版本爲2.1.0。

真是奇怪,這是默認安裝的啊!

根據提示,只能降低tensorboard版本,但是感覺這個可能隻影響tensorboard的使用,而我這裏只是跑個Demo,所以就暫時不解決這個問題了。

1.3 下載預訓練權重

$ cd weights/
$ bash download_weights.sh

網速可能很慢,要麼耐心等待,要麼尋求其他辦法。如果網速太慢,不想等,那麼這裏只下載yolov3.weights文件就夠用了。

1.4 下載COCO

$ cd data/
$ bash get_coco_dataset.sh

下載COCO會更慢,而且只有訓練和測試時纔會用到它,所以直接放棄了。

2 測試

直接運行下面的代碼,就會對路徑~/PyTorch-YOLOv3/data/samples下的圖片進行目標檢測。

python3 detect.py

但是,很不順利,遇到很多問題。

如果安裝了Python 3.6以上的版本,可能就不會遇到下面的問題,但我的Python版本爲3.5.2。

2.1 錯誤1

f-Strings是Python 3.6開始才支持的一種新的字符串格式化方法,語法如下:

f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... '

Python 3.5.2不支持f-Strings,會報錯:

File “detect.py”, line 140
plt.savefig(f"output/{filename}.png", bbox_inches=“tight”, pad_inches=0.0)

SyntaxError: invalid syntax

解決辦法:

# plt.savefig(f"output/{filename}.png", bbox_inches="tight", pad_inches=0.0)
plt.savefig('output/{0}.png'.format(filename), bbox_inches="tight", pad_inches=0.0

modle.py中也有很多這個錯誤,全部改正即可。

2.2 錯誤2

報錯:

raise ImportError(str(msg) + ', please install the python3-tk package')
ImportError: No module named '_tkinter', please install the python3-tk package

更新源:

sudo apt-get update

可能報錯:

W: 倉庫 “http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial Release” 沒有 Release 文件。
N: 無法認證來自該源的數據,所以使用它會帶來潛在風險。
N: 參見 apt-secure(8) 手冊以瞭解倉庫創建和用戶配置方面的細節。
E: 無法下載 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu/dists/xenial/main/binary-amd64/Packages  403  Forbidden [IP: 91.189.95.83 80]
E: 部分索引文件下載失敗。如果忽略它們,那將轉而使用舊的索引文件。

解決辦法:

cd /etc/apt/sources.list.d
sudo rm jonathonf-ubuntu-python-3_6-xenial.list
sudo apt-get update
sudo apt-get install python3-tk

2.3 錯誤3

報錯:

AttributeError: ‘Darknet’ object has no attribute ‘load_darknet_weights’

解決辦法:

# model.load_darknet_weights(opt.weights_path)
model.load_weights(opt.weights_path)

3 結果

3.1 終端輸出

在這裏插入圖片描述

3.2 輸出圖片

檢測結果保存在路徑~/PyTorch-YOLOv3/output下。

幾個示例:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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