環境情況
- ubuntu 18.04 → 20.04(最終)
- 安裝Ubuntu1804虛擬機系統 + Anaconda:可參考我的另一篇文章
- Python 3.6.13 → 3.8(最終)
- Anaconda3-2021.05
目標識別:YOLOv5相關
- 1、安裝git
sudo apt install git
- 2、使用以下代碼來下載源碼并直接安裝:
git clone https://github.com/ultralytics/yolov5
- 3、配置YOLO v5的環境
cd yolov5
pip install -r requirements.txt
問題及解決
-
1、
fatal: unable to access
- 錯誤顯示:
(base) wjq@wjqUbuntu1804:~$ git clone https://github.com/ultralytics/yolov5 正克隆到 'yolov5'... fatal: unable to access 'https://github.com/ultralytics/yolov5/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
- 解決方式1:
- ①更新 Git:
sudo apt update sudo apt upgrade git
- ②更新 CA 證書:
sudo apt install --reinstall ca-certificates
- ①更新 Git:
- 解決方式2:把命令行里的http改為git重新執行
-
2、
問題443
- 解決途徑的參考:https://blog.csdn.net/liubang00001/article/details/141334472
- 隨意打開一個終端,輸入一下代碼安裝軟件包:
- 出現[y/n],均寫y
sudo apt update sudo apt install openssh-server
- 出現[y/n],均寫y
- 驗證:
sudo systemctl status ssh
,接著輸入q
可以返回命令行,于是可以重新
-
3、版本問題
- 問題:安裝requirements.txt時很多版本找不到。
- 解決:可能是anaconda默認下載的Python版本太低,我碰上該問題時用Python3.6無法下載,在虛擬環境搭建Python3.8則可以使用。
創建虛擬環境
- 0、conda很慢時,可以換鏡像源
- 通過命令行直接添加:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/ conda config --set channel_priority strict
- 1、嘗試創建虛擬環境:
conda create -n py36 python=3.6.13
- 2、如果還是失敗,可以嘗試指定國內鏡像加速
conda create -n py36 python=3.6.13 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- 3、成功時
- 4、激活環境:
conda activate py36
- 5、返回到 base 環境:
conda activate base
- 6、查看當前的活躍環境:
conda info --envs
- 7、列出所有的 Conda 環境,當前激活的環境會有一個星號(*)標記。:
# conda environments: # base * /home/user/anaconda3 py36 /home/user/anaconda3/envs/py36
安裝 PyTorch
- Python3.6對應下載:
pip install torch==1.10.0+cpu torchvision==0.11.1+cpu torchaudio==0.10.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
- 檢查是否成功安裝:
pip list | grep torch
VMware虛擬機中的Ubuntu識別不到攝像頭
- 在Windows上識別得到外接攝像頭,但ubuntu上識別不到
-
①關閉虛擬機,在Windows上啟動該服務
- 此時在:虛擬機>可移動設備可見這些選項了
STEREOLABS ZED-2
:這是一款完整的硬件設備,具備雙目攝像頭、深度傳感器、IMU(慣性測量單元)、RGB 攝像頭等,能夠直接用于捕捉深度圖像、視頻流、環境映射、對象跟蹤等。STEREOLABS ZED-2 HID INTERFACE
:這是一個接口模式,主要用于支持 ZED-2 攝像頭的通信。通過 HID 接口,攝像頭和計算機之間可以通過標準 USB 連接進行數據傳輸,但 HID 本身并不具備圖像采集和處理功能,它僅是作為攝像頭與計算機的通訊橋梁。
-
②關閉虛擬機,打開“首選項”
-
查看清楚USB接口對應的都是什么設備
ls -l /dev/video* lsusb
-
如果以上選中后仍無法識別,可按序完成如下參考方法:
- 識別不到1
- 識別不到2
- 識別不到3
-
最后連接上攝像頭的效果(本處采用的是雙目相機)
- 安裝chesse:
sudo apt-get install cheese
- 開啟ubuntu的茄子相機:
cheese
- 安裝chesse:
-
安裝yolov5期間的問題總結
-
問題1:識別不到攝像頭(解決如上)
-
問題2:庫等不匹配相關問題
-
不匹配1:yolov5 要求的是 torchvision 0.9.1
- 解決:
# S1.卸載當前torchvision 版本 pip uninstall torchvision # S2.安裝正確版本的 torchvision pip install torchvision==0.9.1 # S3.確認 torch 版本是否匹配 python -c "import torch; print(torch.__version__)" # S4.如果當前版本與 YOLOv5 要求的不匹配,安裝兼容版本 pip install torch==1.8.1 # S5.檢查依賴是否正確 pip install -r requirements.txt
- 解決:
-
不匹配2:YOLOv5 需要版本 >=2.2 的 tensorboard
- 解決:
# S1.安裝或更新 tensorboard 到合適的版本: pip install tensorboard>=2.2 # 如果你已經安裝了 tensorboard,可以通過以下命令檢查版本: pip show tensorboard # S2.確保安裝所有依賴 pip install -r requirements.txt # S3.再次運行 python detect.py
- 解決:
-
不匹配3:opencv-python版本不匹配
- YOLOv5 要求的是 opencv-python==4.5.2.54。
- 解決
# S1.卸載當前的 opencv-python 版本 pip uninstall opencv-python # S2.安裝所需版本 pip install opencv-python==4.5.2.54 # S3.再次運行 python detect.py
-
插曲:不匹配1-3都是由于虛擬環境切換錯了,所以導致庫匹配出了很多問題(吃一塹:虛擬環境名要區別好,運行前要多留心虛擬環境對不對)
-
-
問題3:yolov5中模型不夠新。
- 由于py38對應的是改動過的yolov5_stereo_Pro,所以包中的模型yolov5s有點問題。
- 解決:重新下載官方權重
wget https://github.com/ultralytics/yolov5/releases/download/v6.0/yolov5s.pt
- 由于py38對應的是改動過的yolov5_stereo_Pro,所以包中的模型yolov5s有點問題。
-
問題4:輸入圖片尺寸不匹配代碼
- 解決:
- 使用 v4l2-ctl 命令查看虛擬機當前連接的攝像頭所拍攝圖片的分辨率是多少
# 安裝 v4l-utils(如果未安裝) sudo apt update sudo apt install v4l-utils # 查看連接的攝像頭設備: v4l2-ctl --list-devices# 輸出中如“/dev/video0”,即是你的攝像頭設備 # 查看當前攝像頭分辨率: v4l2-ctl --device=/dev/video0 --get-fmt-video # 列出當前攝像頭所有支持的分辨率 v4l2-ctl --device=/dev/video0 --list-formats-ext
- (#暫緩,先換用筆記本自帶攝像頭測試yolov5的安裝情況,后續再進一步修改匹配ZED2雙目相機的代碼)
- 使用 v4l2-ctl 命令查看虛擬機當前連接的攝像頭所拍攝圖片的分辨率是多少
- 解決:
-
問題5:模型文件(yolov5s.pt)的結構和代碼不匹配
- 主要是 缺少 SPPF 模塊的定義,SPPF是YOLOv5 v6.0 及之后版本新增的模塊,用于提高檢測速度和精度。原先代碼可能是基于舊版本 YOLOv5,而下載的權重文件是基于新版本模型結構。
- 解決:由于我不想更新代碼(為了讓yolov5匹配后續結合雙目相機),故嘗試使用舊版本的權重(不包含 SPPF 的版本)
# 回退模型權重 wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt -O yolov5s.pt # 再運行 python detect.py --source 0
- 主要是 缺少 SPPF 模塊的定義,SPPF是YOLOv5 v6.0 及之后版本新增的模塊,用于提高檢測速度和精度。原先代碼可能是基于舊版本 YOLOv5,而下載的權重文件是基于新版本模型結構。
-
問題6:攝像頭又連不上了
-
原因:采用ctrl+z退出攝像頭,導致進程被掛起,使得原先分配攝像頭的source 0被掛起,攝像頭因此被輪分配給source 1了。
-
解決
# 查看后臺掛起的任務 jobs# 輸出類似:# [1]+ Stopped python detect.py --source 0 # 恢復到前臺(%1 對應任務編號) fg %1 # 如果不想恢復,直接終止掛起進程 kill %1
-
把兩次ctrl+z掛起的進程鯊掉之后,重新在可移動設備斷開后再連接,即可重新給攝像頭分配source 0了。
-
恢復后,按 Ctrl + C退出,不要用
ctrl+z退出了
-
-
攝像頭匹配+yolov5安裝成功后:
-
yolov5改v8
雙目測距相關
點云圖:采用pcl生成
- 安裝cpp_pcl庫的參考
- 參考1
- 參考2:我是20.04的ubuntu也可用
- 安裝Python_pcl的參考
- 參考1
- 參考2
- 參考3:最后通過這個解決,注意該文章里提供法2Anaconda的路徑是base下的,記得要切換成自己的虛擬環境
- 如我的虛擬環境是yl8,則在anaconda中的envs文件夾下找到虛擬環境,法2最終改成
mv pcl /home/aliez/anaconda3/envs/yl8/lib/python3.8/site-packages
,另一句同理
- 如我的虛擬環境是yl8,則在anaconda中的envs文件夾下找到虛擬環境,法2最終改成
- 安裝pcl的過程中,遇到的其他問題
- 虛擬機磁盤不夠了,擴展磁盤+重新劃分內存
- 參考1:主要參考了克隆部分
- 參考2:完成參考1的克隆部分后,其余跟的這個
- 磁盤擴容后,虛擬機重啟進不去:先Windows主機重啟后,再參考如下兩個文章處理
- 參考1
- 參考2:最后靠該文章解決問題,該操作"try ubuntu"后會暫時出現評論區提到的"文件都消失的情況",但按操作完整處理后自然會恢復出之前的系統文件。
- 虛擬機磁盤不夠了,擴展磁盤+重新劃分內存
雙目相機:ZED2相機
- 將ZED2保存的.svo視頻轉.avi /.mp4
- 相機的識別問題