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
下。
幾個示例: