如何在樹莓派上設(shè)置YOLO計(jì)算機(jī)視覺(jué)?Conda與Ultralytics
在本指南中,我們將學(xué)習(xí)如何使用Conda在樹莓派上安裝Ultralytics YOLO視覺(jué)套件。該套件將允許你運(yùn)行Ultralytics支持的幾乎所有YOLO模型,我們還將為你提供一些在樹莓派上運(yùn)行的演示代碼。
本指南并非關(guān)于如何在項(xiàng)目中全面使用YOLO模型的指南,但我們有其他指南涵蓋了該主題,這些指南鏈接在指南末尾的“接下來(lái)該做什么?”部分。另外請(qǐng)注意,市面上有專為樹莓派設(shè)計(jì)的AI硬件,如AI HAT+和AI攝像頭。本指南不適用于這些專用硬件加速器。本指南專門講解僅在樹莓派5的CPU上運(yùn)行YOLO。雖然這比使用專用AI硬件慢,但它通常更易于使用,并且對(duì)于大多數(shù)創(chuàng)客項(xiàng)目來(lái)說(shuō)速度足夠快。我們還有針對(duì)這些AI專用板卡的單獨(dú)指南,也會(huì)提供相關(guān)鏈接。
最后一點(diǎn)重要提示:我們?cè)谧珜懕局改蠒r(shí)展示的說(shuō)明在當(dāng)前是有效的,并且應(yīng)該能在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)繼續(xù)有效。不過(guò),為了以防萬(wàn)一未來(lái)有更新破壞了此安裝過(guò)程,你可以在本指南末尾找到一套備份安裝說(shuō)明。此備份方法將安裝已知可用的舊版本。但你應(yīng)該首先嘗試主要安裝方法,因?yàn)樽钚掳姹緦⒃试S你使用最新、最棒的YOLO模型。
如果你對(duì)計(jì)算機(jī)視覺(jué),目標(biāo)檢測(cè)和姿態(tài)估計(jì)感興趣,也可以考慮查看以下內(nèi)容:
在樹莓派5上使用YOLO進(jìn)行物體和動(dòng)物識(shí)別-入門指南
在樹莓派5上開啟YOLO姿態(tài)估計(jì)識(shí)別之旅!
如何在樹莓派 AI HAT+上進(jìn)行YOLO目標(biāo)檢測(cè)?
如何在樹莓派 AI HAT+上進(jìn)行YOLO姿態(tài)估計(jì)?
用樹莓派 + OpenCV 打造人臉識(shí)別技術(shù)!
讓我們開始吧!考驗(yàn)?zāi)阌⒄Z(yǔ)聽力的的時(shí)候到了,你可以選擇觀看視頻演示
目錄
你需要準(zhǔn)備什么
硬件組裝
安裝Conda和Libmamba
安裝Ultralytics和虛擬環(huán)境
設(shè)置Picamera2
讓Thonny使用虛擬環(huán)境
測(cè)試代碼:你安裝正確了嗎?
替代安裝方法:備份方法
接下來(lái)該做什么?
你需要準(zhǔn)備什么
要完成本指南,你需要準(zhǔn)備:
樹莓派5 - 4GB、8GB或16GB型號(hào)均可。雖然從技術(shù)上講,這也可以在樹莓派4上完成,但其速度遠(yuǎn)慢于樹莓派5,體驗(yàn)不會(huì)很好(預(yù)計(jì)幀率會(huì)低2到3倍)。我們沒(méi)有直接在樹莓派4上測(cè)試過(guò)此方法,但理論上應(yīng)該可以工作
樹莓派攝像頭 - 我們使用的是攝像頭模塊V3
轉(zhuǎn)換線 - 樹莓派5配備了不同尺寸的CSI攝像頭線,而你的攝像頭可能配備的是較舊、較粗的線,因此值得仔細(xì)檢查一下。攝像頭模塊V3肯定需要一條轉(zhuǎn)換線。
散熱解決方案 - 我們使用的是主動(dòng)散熱器(計(jì)算機(jī)視覺(jué)確實(shí)會(huì)將你的樹莓派運(yùn)行到極限,因此你需要一個(gè)很好的散熱方案)
Micro SD卡 - 至少32GB容量
硬件組裝
硬件組裝相當(dāng)簡(jiǎn)單。將線纜較粗的一端連接到攝像頭,較細(xì)的一端連接到樹莓派5。這些連接器上有一個(gè)標(biāo)簽 - 將其提起,然后將線纜插入插槽。確保線纜正確放置且對(duì)齊,然后將標(biāo)簽推回原位以固定線纜。
請(qǐng)注意,這些連接器只能以一種方向工作,且可能比較脆弱,因此請(qǐng)避免過(guò)度彎曲(稍微彎曲一點(diǎn)是可以的)。
安裝Conda和Libmamba
首先,我們需要將樹莓派操作系統(tǒng)安裝到Micro SD卡上。使用樹莓派成像工具,選擇樹莓派5作為設(shè)備,選擇樹莓派操作系統(tǒng)(64位)作為操作系統(tǒng),并選擇你的MicroSD卡作為存儲(chǔ)設(shè)備。
注意:在MicroSD卡上安裝樹莓派操作系統(tǒng)將擦除其上的所有數(shù)據(jù)。
此過(guò)程可能需要幾分鐘時(shí)間來(lái)下載操作系統(tǒng)。完成后,將其插入樹莓派并啟動(dòng)。你的樹莓派將進(jìn)行首次安裝,只需確保將其連接到互聯(lián)網(wǎng)即可。
你還需要記住你創(chuàng)建的用戶名,因?yàn)楸局改现猩婕暗奈募恢脤⑿枰玫剿榱撕?jiǎn)單起見(jiàn),你可以簡(jiǎn)單地將其命名為“pi”,這樣本指南中的所有說(shuō)明都無(wú)需修改即可直接使用。
進(jìn)入桌面后,打開一個(gè)新的終端窗口,并首先通過(guò)更新和升級(jí)系統(tǒng)來(lái)開始操作:
sudoapt updatesudo apt upgrade -y
這確保我們?cè)陂_始安裝之前擁有最新的軟件包和更新。
現(xiàn)在,通常我們會(huì)使用類似pip install ultralytics的命令,但Ultralytics軟件包的最新更新使得標(biāo)準(zhǔn)pip包管理器難以在樹莓派上可靠地安裝它。有太多相互依賴的軟件包,以至于pip經(jīng)常無(wú)法弄清楚應(yīng)該安裝哪些版本以及按什么順序安裝。如果你幸運(yùn)地成功使用pip安裝了它,那么安裝時(shí)間可能會(huì)超過(guò)一個(gè)小時(shí),而且很有可能安裝的不是最新版本的軟件包。
這就是為什么我們使用Conda,它是一個(gè)更高級(jí)的包管理器,能夠更智能地處理這些復(fù)雜的依賴樹。Conda不僅將使我們能夠成功安裝Ultralytics,而且安裝速度將更快、更可靠。
樹莓派默認(rèn)附帶Pip;Conda則沒(méi)有,因此我們需要安裝一個(gè)名為Miniforge的軟件。Miniforge本質(zhì)上是一個(gè)輕量級(jí)的Conda版本,專門設(shè)計(jì)用于在樹莓派等基于ARM的系統(tǒng)上運(yùn)行。
首先,我們將從GitHub下載Miniforge安裝程序:
wgethttps://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
然后,我們將使用chmod命令使其成為可執(zhí)行文件:
chmod+x Miniforge3-Linux-aarch64.sh
接著,我們運(yùn)行它:
bashMiniforge3-Linux-aarch64.sh
系統(tǒng)將提示你接受用戶協(xié)議。按回車鍵直到到達(dá)協(xié)議末尾,然后按ctrl+c,再按回車鍵,然后輸入yes以接受協(xié)議。
經(jīng)過(guò)短暫的安裝后,它會(huì)詢問(wèn)你是否要將Conda設(shè)置為默認(rèn)安裝程序。你很可能不希望這樣,因此在被詢問(wèn)時(shí)輸入no。
安裝完成后,我們需要在當(dāng)前終端窗口中激活Conda:
source~/miniforge3/bin/activate
現(xiàn)在,我們將安裝名為libmamba的軟件包求解器。這本質(zhì)上將增強(qiáng)Conda的功能,使其能夠更智能地思考如何解析和安裝我們的復(fù)雜軟件包 - 這是一項(xiàng)非常有用的優(yōu)化:
condainstall conda-libmamba-solver -y
然后,我們將告訴Conda默認(rèn)使用libmamba:
conda config --setsolver libmamba
就這樣!Conda現(xiàn)已設(shè)置完畢,可以用于安裝我們的軟件包了。
安裝Ultralytics和虛擬環(huán)境
在安裝任何內(nèi)容之前,我們需要?jiǎng)?chuàng)建一個(gè)虛擬環(huán)境。虛擬環(huán)境本質(zhì)上是一個(gè)虛擬空間,我們所有的庫(kù)都將存在于該空間中,與系統(tǒng)的Python安裝完全分離。這可以防止沖突,并使管理具有不同要求的不同項(xiàng)目變得容易。我們將使用以下命令創(chuàng)建一個(gè)名為“ultralytics-env”且Python版本為3.11的環(huán)境:
condacreate --name ultralytics-env python=3.11-y
創(chuàng)建該環(huán)境后,我們可以將終端窗口設(shè)置為在該環(huán)境中工作:
condaactivate ultralytics-env
你可以通過(guò)看到命令提示符前顯示的括號(hào)(ultralytics-env)來(lái)確認(rèn)我們當(dāng)前處于該環(huán)境中。
如果你稍后需要再次進(jìn)入該環(huán)境,或者如果你不小心關(guān)閉了終端窗口并需要重新進(jìn)入該環(huán)境,你可以通過(guò)初始化Conda來(lái)重新進(jìn)入:
source~/miniforge3/bin/activate
然后再次激活虛擬環(huán)境:
condaactivate ultralytics-env
現(xiàn)在,讓我們安裝Ultralytics軟件包。你需要輸入y來(lái)確認(rèn)這些安裝:
condainstall -c conda-forge ultralytics
Conda將顯示一個(gè)友好的安裝界面并自動(dòng)處理所有依賴關(guān)系。
完成后,我們需要安裝PyTorch,這是Ultralytics在底層使用的深度學(xué)習(xí)框架:
condainstall -c pytorch pytorch torchvision cpuonly
完成后,我們就成功安裝了Ultralytics YOLO軟件包!但是,在我們開始使用它之前,還有一件事需要做...
設(shè)置 Picamera2
我們已經(jīng)成功安裝了Ultralytics,但還有一個(gè)關(guān)鍵組件需要添加:PiCamera2。這是樹莓派默認(rèn)附帶的軟件包,用于處理我們代碼中的所有攝像頭交互。挑戰(zhàn)在于,我們無(wú)法使用Conda安裝它,因?yàn)閺脑创a構(gòu)建它極具挑戰(zhàn)性,并且通常會(huì)導(dǎo)致安裝失敗。
相反,我們需要告訴我們的虛擬環(huán)境使用樹莓派附帶的系統(tǒng)軟件包,包括PiCamera2:
echo '/usr/lib/python3/dist-packages'>/home/pi/miniforge3/envs/ultralytics-env/lib/python3.11/site-packages/system-packages.pth
注意:根據(jù)你在設(shè)置過(guò)程中選擇的用戶名,你可能需要更改此命令中的路徑。我們使用了“pi”,因此路徑如上所示,但如果你使用了不同的用戶名,則需要相應(yīng)地調(diào)整路徑(將pi替換為你的用戶名)。
現(xiàn)在,我們遇到了一個(gè)兼容性問(wèn)題。NumPy是一個(gè)幾乎在所有地方都使用的基礎(chǔ)軟件包,而PiCamera2使用的NumPy版本比Conda默認(rèn)安裝的版本要舊得多。這種版本不匹配將導(dǎo)致我們?cè)趪L試使用攝像頭時(shí)出錯(cuò)。
首先,讓我們檢查PiCamera2使用的NumPy版本。打開一個(gè)新的終端窗口(不要關(guān)閉舊的窗口),并輸入以下命令:
python3-c"import numpy; print(numpy.__version__)"
這將打印出一個(gè)版本號(hào)。獲取該版本號(hào),并使用以下命令輸入它,該命令將告訴Conda降級(jí)到這個(gè)兼容版本:
condainstall numpy=1.24.2
現(xiàn)在,我們已經(jīng)將Ultralytics和Picamera2都完全安裝到了一個(gè)虛擬環(huán)境中,我們可以使用該環(huán)境來(lái)運(yùn)行YOLO代碼了。
讓Thonny使用虛擬環(huán)境
在運(yùn)行我們的Python代碼之前,還有一步需要做。我們需要告訴Thonny(樹莓派操作系統(tǒng)附帶的Python集成開發(fā)環(huán)境)使用我們剛剛創(chuàng)建的虛擬環(huán)境,而不是系統(tǒng)Python。
首次打開Thonny時(shí),它將處于基本、精簡(jiǎn)模式。在右上角,按按鈕以使用默認(rèn)的高級(jí)模式,然后重新啟動(dòng)Thonny。
重新啟動(dòng)后,選擇運(yùn)行 > 配置解釋器,然后在Python可執(zhí)行文件下,按三個(gè)點(diǎn)以選擇一個(gè)新的解釋器。
我們現(xiàn)在需要導(dǎo)航到/home/pi/miniforge3/envs/ultralytics-env/bin。在這個(gè)文件夾中,你將找到一個(gè)名為“Python”的文件,選擇它并點(diǎn)擊確定。
現(xiàn)在,Thonny將使用我們的Conda環(huán)境以及我們安裝的所有軟件包。
測(cè)試代碼:你安裝正確了嗎?
在Thonny中創(chuàng)建一個(gè)新文件,并粘貼以下代碼:
importcv2frompicamera2 import Picamera2fromultralytics import YOLO# Set up the camera with Picampicam2= Picamera2()picam2.preview_configuration.main.size = (800,800)picam2.preview_configuration.main.format ="RGB888"picam2.preview_configuration.align()picam2.configure("preview")picam2.start()# Load YOLOE prompt-free modelmodel= YOLO("yoloe-11s-seg.pt")whileTrue: # Capture a frame from the camera frame= picam2.capture_array()
# Run YOLOE model on the captured fram results= model.predict(frame)
# Output the visual detection data annotated_frame= results[0].plot(boxes=True, masks=False)
# Get inference time inference_time= results[0].speed['inference'] fps=1000/ inference_time # Convert to milliseconds text= f'FPS: {fps:.1f}'
# Define font and position font= cv2.FONT_HERSHEY_SIMPLEX text_size= cv2.getTextSize(text, font,1,2)[0] text_x= annotated_frame.shape[1] - text_size[0] -10 #10pixels from the right text_y= text_size[1] +10 #10pixels from the top
# Draw the text on the annotated frame cv2.putText(annotated_frame, text, (text_x, text_y), font,1, (255,255,255),2, cv2.LINE_AA)
# Display the resulting frame cv2.imshow("Camera", annotated_frame)
# Exit the program if q is pressed ifcv2.waitKey(1) == ord("q"): break# Close all windowscv2.destroyAllWindows()
這是一段非常簡(jiǎn)單的代碼,它使用插入樹莓派的攝像頭模塊的視頻流運(yùn)行YOLOE對(duì)象檢測(cè)。首次使用新安裝的Ultralytics運(yùn)行此代碼時(shí),它應(yīng)該會(huì)自動(dòng)下載指定的模型以及它需要的任何附加軟件包。如果你能運(yùn)行此代碼并在攝像頭視頻流中看到檢測(cè)框出現(xiàn)在對(duì)象周圍,那么恭喜你!你已經(jīng)正確設(shè)置了一切。
如果在此過(guò)程中出了問(wèn)題,首先要做的是逐步重試我們?cè)谶@里介紹的所有步驟。很容易錯(cuò)過(guò)一個(gè)步驟或不小心輸入了錯(cuò)誤的命令,而遇到的問(wèn)題中大約有一半源于這樣的小錯(cuò)誤。
替代安裝方法:備份方法
我們上面概述的說(shuō)明應(yīng)該在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)有效。然而,更新是不可避免的,有時(shí)這可能會(huì)導(dǎo)致安裝方法出現(xiàn)沖突。如果上述方法不起作用,在本節(jié)中,我們將介紹一種備份方法,該方法安裝一個(gè)已知可用的版本。不過(guò),這個(gè)版本可能較舊,因此你可能無(wú)法獲得所有最新、最炫的模型及其所有更新。此方法應(yīng)支持直到Y(jié)OLO12(在該版本發(fā)布前幾個(gè)月發(fā)布)的所有YOLO模型。
首先,按照所有說(shuō)明直到安裝好Conda和Libmamba。準(zhǔn)備好Conda后,在樹莓派的主文件夾(/home/pi/)中創(chuàng)建一個(gè)新文件,并將其命名為:
ultralytics-pi5-environment.yml
在該文件中,粘貼以下內(nèi)容:
name: ultralytics-envchannels: - pytorch - conda-forgedependencies: - _openmp_mutex=4.5=3_kmp_llvm - alsa-lib=1.2.14=h86ecc28_0 - aom=3.9.1=hcccb83c_0 - attr=2.5.1=h4e544f5_1 - brotli=1.1.0=h86ecc28_3 - brotli-bin=1.1.0=h86ecc28_3 - brotli-python=1.1.0=py311h89d996e_3 - bzip2=1.0.8=h68df207_7 - c-ares=1.34.5=h86ecc28_0 - ca-certificates=2025.7.14=hbd8a1cb_0 - cairo=1.18.4=h83712da_0 - certifi=2025.7.14=pyhd8ed1ab_0 - cffi=1.17.1=py311h14e8bb7_0 - charset-normalizer=3.4.2=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_1 - contourpy=1.3.2=py311hc07b1fb_0 - cpuonly=2.0=0 - cpython=3.11.13=py311hd8ed1ab_0 - cycler=0.12.1=pyhd8ed1ab_1 - cyrus-sasl=2.1.28=h6c5dea3_0 - dav1d=1.2.1=h31becfc_0 - dbus=1.16.2=heda779d_0 -double-conversion=3.3.1=h5ad3122_0 - ffmpeg=7.1.1=gpl_h30b7fc1_906 - filelock=3.18.0=pyhd8ed1ab_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - font-ttf-ubuntu=0.83=h77eed37_3 - fontconfig=2.15.0=h8dda3cd_1 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - fonttools=4.59.0=py311h164a683_0 - freeglut=3.2.2=h5eeb66e_3 - freetype=2.13.3=h8af1aa0_1 - fribidi=1.0.10=hb9de7d4_0 - fsspec=2025.7.0=pyhd8ed1ab_0 - gdk-pixbuf=2.42.12=ha61d561_0 - gettext=0.25.1=h5ad3122_0 - gettext-tools=0.25.1=h5ad3122_0 - giflib=5.2.2=h31becfc_0 - gmp=6.3.0=h0a1ffab_2 - gmpy2=2.2.1=py311h8dd2ae4_0 - graphite2=1.3.14=h5ad3122_0 - h2=4.2.0=pyhd8ed1ab_0 - harfbuzz=11.2.1=h405b6a2_0 - hdf5=1.14.6=nompi_h587839b_102 - hpack=4.1.0=pyhd8ed1ab_0 - hyperframe=6.1.0=pyhd8ed1ab_0 - icu=75.1=hf9b3779_0 - idna=3.10=pyhd8ed1ab_1 - imath=3.1.12=hf428078_0 - jasper=4.2.5=h9d5db0e_0 - jinja2=3.1.6=pyhd8ed1ab_0 - keyutils=1.6.1=h4e544f5_0 - kiwisolver=1.4.8=py311h75754e6_1 - krb5=1.21.3=h50a48e9_0 - lame=3.100=h4e544f5_1003 - lcms2=2.17=hc88f144_0 - ld_impl_linux-aarch64=2.44=h5e2c951_1 - lerc=4.0.0=hfdc4d58_1 - libabseil=20250127.1=cxx17_h18dbdb1_0 - libaec=1.1.4=h1e66f74_0 - libasprintf=0.25.1=h5e0f5ae_0 - libasprintf-devel=0.25.1=h5e0f5ae_0 - libass=0.17.3=h3c9f632_2 - libavif16=1.3.0=hb72faec_0 - libblas=3.9.0=32_h1a9f1db_openblas - libbrotlicommon=1.1.0=h86ecc28_3 - libbrotlidec=1.1.0=h86ecc28_3 - libbrotlienc=1.1.0=h86ecc28_3 - libcap=2.75=h51d75a7_0 - libcblas=3.9.0=32_hab92f65_openblas - libclang-cpp20.1=20.1.8=default_hf07bfb7_0 - libclang13=20.1.8=default_h173080d_0 - libcups=2.3.3=h5cdc715_5 - libcurl=8.14.1=h6702fde_0 - libde265=1.0.15=h2a328a1_0 - libdeflate=1.24=he377734_0 - libdrm=2.4.125=h86ecc28_0 - libedit=3.1.20250104=pl5321h976ea20_0 - libegl=1.7.0=hd24410f_2 - libev=4.33=h31becfc_2 - libexpat=2.7.1=hfae3067_0 - libffi=3.4.6=he21f813_1 - libflac=1.4.3=h2f0025b_0 - libfreetype=2.13.3=h8af1aa0_1 - libfreetype6=2.13.3=he93130f_1 - libgcc=15.1.0=he277a41_3 - libgcc-ng=15.1.0=he9431aa_3 - libgcrypt-lib=1.11.1=h86ecc28_0 - libgettextpo=0.25.1=h5ad3122_0 - libgettextpo-devel=0.25.1=h5ad3122_0 - libgfortran=15.1.0=he9431aa_3 - libgfortran5=15.1.0=hbc25352_3 - libgl=1.7.0=hd24410f_2 - libglib=2.84.2=hc022ef1_0 - libglu=9.0.3=h5ad3122_1 - libglvnd=1.7.0=hd24410f_2 - libglx=1.7.0=hd24410f_2 - libgomp=15.1.0=he277a41_3 - libgpg-error=1.55=h5ad3122_0 - libheif=1.19.7=gpl_hf91bf23_100 - libhwloc=2.11.2=default_h6f258fa_1002 - libiconv=1.18=hc99b53d_1 - libjpeg-turbo=3.1.0=h86ecc28_0 - liblapack=3.9.0=32_h411afd4_openblas - liblapacke=3.9.0=32_hc659ca5_openblas - libllvm20=20.1.8=h2b567e5_0 - liblzma=5.8.1=h86ecc28_2 - libnghttp2=1.64.0=hc8609a4_0 - libnsl=2.0.1=h86ecc28_1 - libntlm=1.4=hf897c2e_1002 - libogg=1.3.5=h86ecc28_1 - libopenblas=0.3.30=pthreads_h9d3fd7e_0 - libopencv=4.12.0=qt6_py311h6b27ceb_600 - libopengl=1.7.0=hd24410f_2 - libopenvino=2025.0.0=hd63d6c0_3 - libopenvino-arm-cpu-plugin=2025.0.0=hd63d6c0_3 - libopenvino-auto-batch-plugin=2025.0.0=hf15766e_3 - libopenvino-auto-plugin=2025.0.0=hf15766e_3 - libopenvino-hetero-plugin=2025.0.0=ha8e9e04_3 - libopenvino-ir-frontend=2025.0.0=ha8e9e04_3 - libopenvino-onnx-frontend=2025.0.0=hd8f0270_3 - libopenvino-paddle-frontend=2025.0.0=hd8f0270_3 - libopenvino-pytorch-frontend=2025.0.0=h5ad3122_3 - libopenvino-tensorflow-frontend=2025.0.0=h33e842c_3 - libopenvino-tensorflow-lite-frontend=2025.0.0=h5ad3122_3 - libopus=1.5.2=h86ecc28_0 - libpciaccess=0.18=h86ecc28_0 - libpng=1.6.50=hec79eb8_0 - libpq=17.5=hf590da8_0 - libprotobuf=5.29.3=h4edc36e_1 - librsvg=2.58.4=h3ac5bce_3 - libsndfile=1.2.2=h79657aa_1 - libsqlite=3.50.2=hdbb6186_2 - libssh2=1.11.1=h18c354c_0 - libstdcxx=15.1.0=h3f4de04_3 - libstdcxx-ng=15.1.0=hf1166c9_3 - libsystemd0=257.7=h2bb824b_0 - libtiff=4.7.0=h7c15681_5 - libtorch=2.7.1=cpu_generic_h1028f2b_2 - libudev1=257.7=h7b9e449_0 - libunwind=1.8.2=h9e2cd2c_0 - liburing=2.11=h17cf362_0 - libusb=1.0.29=h06eaf92_0 - libuuid=2.38.1=hb4cce97_0 - libuv=1.51.0=h86ecc28_0 - libvorbis=1.3.7=h01db608_0 - libvpx=1.14.1=h0a1ffab_0 - libwebp-base=1.6.0=ha2e29f5_0 - libxcb=1.17.0=h262b8f6_0 - libxcrypt=4.4.36=h31becfc_1 - libxkbcommon=1.10.0=hbab7b08_0 - libxml2=2.13.8=he060846_0 - libzlib=1.3.1=h86ecc28_2 - llvm-openmp=20.1.8=he40846f_0 - lz4-c=1.10.0=h5ad3122_1 - markupsafe=3.0.2=py311ha09ea12_1 - matplotlib-base=3.10.3=py311h0385ec1_0 - mpc=1.3.1=h783934e_1 - mpfr=4.2.1=h2305555_3 - mpg123=1.32.9=h65af167_0 - mpmath=1.3.0=pyhd8ed1ab_1 - munkres=1.1.4=pyhd8ed1ab_1 - ncurses=6.5=ha32ae93_3 - networkx=3.4.2=pyh267e887_2 - nomkl=1.0=h5ca1d4c_0 - numpy=1.24.2=py311h71ac5a4_0 - opencv=4.12.0=qt6_py311hc303290_600 - openexr=3.3.4=h718fb27_0 - openh264=2.6.0=h0564a2a_0 - openjpeg=2.5.3=h3f56577_0 - openldap=2.6.10=h30c48ee_0 - openssl=3.5.1=hd08dc88_0 - optree=0.16.0=py311hc07b1fb_0 - packaging=25.0=pyh29332c3_1 - pandas=2.3.1=py311hffd966a_0 - pango=1.56.4=he55ef5b_0 - patsy=1.0.1=pyhd8ed1ab_1 - pcre2=10.45=hf4ec17f_0 - pillow=11.3.0=py311ha4eaa5e_0 - pip=25.1.1=pyh8b19718_0 - pixman=0.46.2=h86a87f0_0 - psutil=7.0.0=py311ha879c10_0 - pthread-stubs=0.4=h86ecc28_1002 - pugixml=1.15=h6ef32b0_0 - pulseaudio-client=17.0=h2f84921_1 - py-cpuinfo=9.0.0=pyhd8ed1ab_1 - py-opencv=4.12.0=qt6_py311h01b6c42_600 - pybind11=3.0.0=pyh9380348_1 - pybind11-global=3.0.0=pyhf748d72_1 - pycparser=2.22=pyh29332c3_1 - pyparsing=3.2.3=pyhd8ed1ab_1 - pysocks=1.7.1=pyha55dd90_7 - python=3.11.13=h1683364_0_cpython - python-dateutil=2.9.0.post0=pyhe01879c_2 - python-tzdata=2025.2=pyhd8ed1ab_0 - python_abi=3.11=7_cp311 - pytorch=2.7.1=cpu_generic_py311_hcdfc2e8_2 - pytorch-mutex=1.0=cpu - pytz=2025.2=pyhd8ed1ab_0 - pyyaml=6.0.2=py311h58d527c_2 - qhull=2020.2=h70be974_5 - qt6-main=6.9.1=h13135bf_1 - rav1e=0.7.1=ha3529ed_3 - readline=8.2=h8382b9d_2 - requests=2.32.4=pyhd8ed1ab_0 - scipy=1.15.2=py311h2973cce_0 - sdl2=2.32.54=h5ad3122_0 - sdl3=3.2.18=h506f210_0 - seaborn=0.13.2=hd8ed1ab_3 - seaborn-base=0.13.2=pyhd8ed1ab_3 - setuptools=80.9.0=pyhff2d567_0 - six=1.17.0=pyhd8ed1ab_0 - sleef=3.8=h8fb0607_0 - snappy=1.2.1=hd4fb6f5_1 - statsmodels=0.14.5=py311h8b8d0ce_0 - svt-av1=3.0.2=h5ad3122_0 - sympy=1.14.0=pyh2585a3b_105 - tbb=2022.1.0=hf6e3e71_0 - tk=8.6.13=noxft_h5688188_102 - torchvision=0.22.0=cpu_py311_hb1dc043_1 - torchvision-extra-decoders=0.0.2=py311h4a11f85_3 - tqdm=4.67.1=pyhd8ed1ab_1 - typing-extensions=4.14.1=h4440ef1_0 - typing_extensions=4.14.1=pyhe01879c_0 - tzdata=2025b=h78e105d_0 - ultralytics=8.3.167=pyh2a12c56_0 - unicodedata2=16.0.0=py311ha879c10_0 - urllib3=2.5.0=pyhd8ed1ab_0 - wayland=1.24.0=h698ed42_0 - wheel=0.45.1=pyhd8ed1ab_1 - x264=1!164.3095=h4e544f5_2 - x265=3.5=hdd96247_3 - xcb-util=0.4.1=hca56bd8_2 - xcb-util-cursor=0.1.5=h86ecc28_0 - xcb-util-image=0.4.0=h5c728e9_2 - xcb-util-keysyms=0.4.1=h5c728e9_0 - xcb-util-renderutil=0.3.10=h5c728e9_0 - xcb-util-wm=0.4.2=h5c728e9_0 - xkeyboard-config=2.45=h86ecc28_0 - xorg-libice=1.1.2=h86ecc28_0 - xorg-libsm=1.2.6=h0808dbd_0 - xorg-libx11=1.8.12=hca56bd8_0 - xorg-libxau=1.0.12=h86ecc28_0 - xorg-libxcomposite=0.4.6=h86ecc28_2 - xorg-libxcursor=1.2.3=h86ecc28_0 - xorg-libxdamage=1.1.6=h86ecc28_0 - xorg-libxdmcp=1.1.5=h57736b2_0 - xorg-libxext=1.3.6=h57736b2_0 - xorg-libxfixes=6.0.1=h57736b2_0 - xorg-libxi=1.8.2=h57736b2_0 - xorg-libxrandr=1.5.4=h86ecc28_0 - xorg-libxrender=0.9.12=h86ecc28_0 - xorg-libxtst=1.2.5=h57736b2_3 - xorg-libxxf86vm=1.1.6=h86ecc28_0 - yaml=0.2.5=hf897c2e_2 - zstandard=0.23.0=py311ha879c10_2 - zstd=1.5.7=hbcf94c1_2
這本質(zhì)上是一份Ultralytics需要安裝的所有軟件包清單,更重要的是,還列出了已安裝的版本。在終端窗口中,確保你已激活Conda環(huán)境,然后使用該清單中的軟件包創(chuàng)建一個(gè)新的虛擬環(huán)境,命令如下:
condaenvcreate -f ultralytics-pi5-environment.yml
安裝完成后,我們可以使用以下echo命令來(lái)設(shè)置picamera2:
echo '/usr/lib/python3/dist-packages'>/home/pi/miniforge3/envs/ultralytics-env/lib/python3.11/site-packages/system-packages.pth
接下來(lái)該做什么?
現(xiàn)在,你已經(jīng)準(zhǔn)備好了Ultralytics的YOLO軟件包。接下來(lái),你應(yīng)該能夠運(yùn)行Python代碼來(lái)下載并使用Ultralytics支持的任何模型。如果你正在參考另一份指南,那么你可以從這里繼續(xù)。如果你正在尋找一些指南,我們提供了以下內(nèi)容,它們探索了YOLO在你項(xiàng)目中的實(shí)際應(yīng)用(包括如何提高處理速度!):
YOLOE - 即將推出 -這是一種基于視覺(jué)概念而非特定物體進(jìn)行訓(xùn)練的模型。借助簡(jiǎn)單的文本提示,無(wú)需冗長(zhǎng)的訓(xùn)練過(guò)程,它就能檢測(cè)到從未見(jiàn)過(guò)的物體。這是目前最令人興奮且適應(yīng)性最強(qiáng)的YOLO模型之一。本指南從這里繼續(xù),介紹如何使用代碼設(shè)置自定義物體檢測(cè),以統(tǒng)計(jì)物體數(shù)量并跟蹤其位置。
YOLO姿態(tài)估計(jì) -介紹如何利用YOLO模型的姿態(tài)變體來(lái)獲取人體跟蹤數(shù)據(jù)。我們探討了如何使用它生成的關(guān)鍵點(diǎn)數(shù)據(jù)來(lái)控制項(xiàng)目中的硬件,以及如何根據(jù)人的頭部位置創(chuàng)建一個(gè)太空入侵者游戲控制器。
YOLO物體檢測(cè) -實(shí)際探討如何在你的創(chuàng)客項(xiàng)目中使用YOLOv8物體檢測(cè)。我們探討了如果檢測(cè)到特定物體,該如何“采取行動(dòng)”。
如果你想了解一些適用于樹莓派的AI加速硬件及其功能,你可能想看看以下指南。請(qǐng)注意,我們?cè)谶@里設(shè)置的YOLO無(wú)法在這些設(shè)備上運(yùn)行;你需要采用另一種安裝方法才能在這些設(shè)備上運(yùn)行模型:
AI HAT -一款專用的AI芯片,可連接到樹莓派5,性能可提升10 - 100倍。
AI攝像頭 -一款內(nèi)置AI芯片的攝像頭模塊,可用于運(yùn)行小型模型,性能可提升2 - 5倍。
原文地址:
https://core-electronics.com.au/guides/raspberry-pi/how-to-set-up-yolo-computer-vision-on-a-raspberry-pi-conda-and-ultralytics/
-
目標(biāo)檢測(cè)
+關(guān)注
關(guān)注
0文章
229瀏覽量
16047 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
9文章
1710瀏覽量
46850 -
樹莓派
+關(guān)注
關(guān)注
121文章
2031瀏覽量
107633
發(fā)布評(píng)論請(qǐng)先 登錄
完整指南:如何使用樹莓派5、Hailo AI Hat、YOLO、Docker進(jìn)行自定義數(shù)據(jù)集訓(xùn)練?

樹莓派5,Raspberry Pi 5 評(píng)測(cè)
樹莓派怎么打造開心農(nóng)場(chǎng)
樹莓派可以運(yùn)行所有window程序嗎?
樹莓派3wifi配置_樹莓派3開啟wifi熱點(diǎn)_樹莓派3的wifi使用教程
什么是樹莓派?樹莓派是什么架構(gòu)的
deepin 23+樹莓派讓小車動(dòng)起來(lái)

4臺(tái)樹莓派5跑動(dòng)大模型!DeepSeek R1分布式實(shí)戰(zhàn)!

樹莓派 Pico 2040 的“速度狂飆”:時(shí)鐘速度幾乎翻倍!

一個(gè)套件就能讓多路高清攝像頭接入樹莓派5?

在樹莓派5上使用YOLO進(jìn)行物體和動(dòng)物識(shí)別-入門指南

在樹莓派5上開啟YOLO姿態(tài)估計(jì)識(shí)別之旅!

如何在樹莓派 AI HAT+上進(jìn)行YOLO目標(biāo)檢測(cè)?

如何在樹莓派 AI HAT+上進(jìn)行YOLO姿態(tài)估計(jì)?

評(píng)論