目標識別與雙目測距(1)環境搭建:Ubuntu+yolov5+pcl庫

環境情況

  • 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
        
    • 解決方式2:把命令行里的http改為git重新執行
  • 2、問題443

    • 解決途徑的參考:https://blog.csdn.net/liubang00001/article/details/141334472
    • 隨意打開一個終端,輸入一下代碼安裝軟件包:
      • 出現[y/n],均寫y
        sudo apt update
        sudo apt install openssh-server
        
    • 驗證: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
        在這里插入圖片描述

安裝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
      
  • 問題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雙目相機的代碼)
  • 問題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
      
  • 問題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,另一句同理
  • 安裝pcl的過程中,遇到的其他問題
    • 虛擬機磁盤不夠了,擴展磁盤+重新劃分內存
      • 參考1:主要參考了克隆部分
      • 參考2:完成參考1的克隆部分后,其余跟的這個
    • 磁盤擴容后,虛擬機重啟進不去:先Windows主機重啟后,再參考如下兩個文章處理
      • 參考1
      • 參考2:最后靠該文章解決問題,該操作"try ubuntu"后會暫時出現評論區提到的"文件都消失的情況",但按操作完整處理后自然會恢復出之前的系統文件。

雙目相機:ZED2相機

  • 將ZED2保存的.svo視頻轉.avi /.mp4
  • 相機的識別問題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73983.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LinuxTCP/UDP基礎概念

TCP(傳輸控制協議) TCP 是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。它的主要特點包括: 面向連接:在傳輸數據之前,需要通過“三次握手”建立連接;傳輸結束后,通過“四次揮手”斷開…

MP3、WAV、RM、PNG格式

MP3、WAV、RM、PNG格式 MP3 是一種音頻壓縮格式,采用了 MPEG-1 Audio Layer 3 或 MPEG-2 Audio Layer 3 編碼標準.MP3 格式能夠以較小的文件大小存儲高質量的音頻,可在多種設備如手機、MP3 播放器、電腦上播放,是目前應用最廣泛的音頻格式之一. MPEG-1 是MPEG(Moving Pictu…

力扣hot100:滑動窗口——找到字符串中所有字母異位詞

題目鏈接:找到字符串中所有字母異位詞 考慮用滑動窗口,窗口大小固定為字符串p的長度,用一個for循環控制子串的結束位置。 怎么判斷是字母異位詞? 1、排序:字符串中所有符合條件的字母異位詞與目標串p在經過排序后是…

人工智能通識速覽一(神經網絡)(編輯中)

上篇:人工智能通識速覽一(機器學習) 人工智能通識速覽一(機器學習)(編輯中)-CSDN博客https://blog.csdn.net/siper12138/article/details/146512068?sharetypeblogdetail&sharerId1465120…

【數據標準】數據標準化框架體系-基礎類數據標準

導讀:數據標準化的四大基礎類標準(業務術語、業務規則、命名規范、代碼標準)是企業數據治理的核心支柱。主要作用體現在?消除業務與技術間的語義鴻溝?(通過統一術語與命名規范),?保障數據全生命周期的質…

可發1區的超級創新思路(python\matlab實現):MPTS+Lconv+注意力集成機制的Transformer時間序列模型

首先聲明,該模型為原創!原創!原創!且該思路還未有成果發表,感興趣的小伙伴可以借鑒! 應用場景 該模型主要用于時間序列數據預測問題,包含功率預測、電池壽命預測、電機故障檢測等等。 一、模型整體架構(本文以光伏功率預測為例) 本模型由多尺度特征提取模塊(MPTS)…

深入解析C#中的解釋器模式:原理與應用

解釋器模式(Interpreter Pattern)是一種行為型設計模式,旨在為特定的語言提供解釋和執行的能力。該模式將語言的文法規則封裝在類中,使得能夠靈活、動態地對這些規則進行解釋。在實際開發中,尤其是處理一些定制的表達式…

LeetCode知識點整理

1、Scanner 輸入: import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 讀取整數int num scanner.nextInt();// 讀取一行字符串String line scanner.nextLine();scanner.close();…

紅寶書第二十一講:詳解JavaScript的模塊化(CommonJS與ES Modules)

紅寶書第二十一講:詳解JavaScript的模塊化(CommonJS與ES Modules) 資料取自《JavaScript高級程序設計(第5版)》。 查看總目錄:紅寶書學習大綱 一、模塊化的意義:分而治之 模塊化解決代碼依賴混…

Android Product Flavors 深度解析與最佳實踐:構建多版本應用的全方位指南

1. 高效配置模板 1.1 現代化多維度配置 (Kotlin DSL) android {flavorDimensions listOf("version", "market", "environment")productFlavors {register("free") {dimension "version"applicationIdSuffix ".free…

QListView開發入門

1. QListView 基礎介紹 QListView 是 Qt 框架中用于顯示項目列表的控件,屬于模型/視圖架構的一部分。它提供了一種靈活的方式來顯示和操作項目列表。 主要特點: 基于模型/視圖架構 支持多種視圖模式(列表、圖標) 內置選擇、編…

Cookie可以存哪些指?

Cookie是一種小型文本文件,通常由服務器生成并發送到用戶瀏覽器中保存。它可以用于存儲一些簡單但非常有用的信息,以便于后續請求時自動附帶回服務器使用。下面是Cookie能夠存儲的一些典型內容類別及用途說明: 會話標識符(Session ID) 這是最…

非手性分子發光有妙招:借液晶之力,實現高不對稱圓偏振發光

*本文只做閱讀筆記分享* 一、圓偏振發光研究背景與挑戰 圓偏振發光(CPL)材料在3D顯示、光電器件等領域大有用處,衡量它的一個重要指標是不對稱發光因子(glum)。早期CPL材料的glum值低,限制了實際應用。為…

CSS中的em,rem,vm,vh詳解

一:em 和 rem 是兩種相對單位,它們常用于 CSS 中來設置尺寸、字體大小、間距等,主要用于更靈活和響應式的布局設計。它們與像素(px)不同,不是固定的,而是相對于其他元素的尺寸來計算的。 1. em …

《非暴力溝通》第十二章 “重獲生活的熱情” 總結

《非暴力溝通》第十二章 “重獲生活的熱情” 的核心總結: 本章將非暴力溝通的核心理念延伸至生命意義的探索,提出通過覺察與滿足內心深處的需要,打破“義務性生存”的桎梏,讓生活回歸由衷的喜悅與創造。作者強調,當行動…

MySQL數據庫精研之旅第五期:CRUD的趣味探索(上)

專欄:MySQL數據庫成長記 個人主頁:手握風云 目錄 一、CRUD簡介 二、Create新增 2.1. 語法 2.2. 示例 三、Retrieve檢索 3.1. 語法 3.2. 示例 一、CRUD簡介 CURD是對數據庫中的記錄進行基本的增刪改查操作:Create(創建)、Retrieve(檢索…

【銀河麒麟系統常識】需求:安裝.NET SDK

前提 網絡狀態正常(非離線安裝); 終端命令如下所示 根據不同系統的版本,自行選擇,逐行執行即可; # 基于 Ubuntu/Debian 的銀河麒麟系統 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O…

行業智能體大爆發,分布式智能云有解

Manus的一夜爆紅,在全球范圍內引爆關于AI智能體的討論。 與過去一般的AI助手不同,智能體(AI Agent)并非只是被動響應,而是主動感知、決策并執行的應用。Gartner預測,到2028年,15%的日常工作決策…

工作記錄 2017-03-13

工作記錄 2017-03-13 序號 工作 相關人員 1 修改郵件上的問題。 開始處理操作日志部分。 測試了C#和MySql的連接。 更新RD服務器。 郝 更新的問題 1、 修改了CMS1500的打印,NDC的內容用了小的字體。 2、在Cliams List中可以查看Job的Notes。 3、Payment Po…

【七層分析框架:寒門貴子消亡的系統性絞殺】

七層分析框架:寒門貴子消亡的系統性絞殺 第一層:教育資源斷層 結論:基礎教育投入差已達量子級差距 機制: 北京海淀小學生均經費(¥47,800) 云南山區(¥6,200)…