如何在树莓派上设置YOLO计算机视觉?Conda与Ultralytics
在本指南中,我们将学习如何使用Conda在树莓派上安装Ultralytics YOLO视觉套件。该套件将允许你运行Ultralytics支持的几乎所有YOLO模型,我们还将为你提供一些在树莓派上运行的演示代码。
本指南并非关于如何在项目中全面使用YOLO模型的指南,但我们有其他指南涵盖了该主题,这些指南链接在指南末尾的“接下来该做什么?”部分。另外请注意,市面上有专为树莓派设计的AI硬件,如AI HAT+和AI摄像头。本指南不适用于这些专用硬件加速器。本指南专门讲解仅在树莓派5的CPU上运行YOLO。虽然这比使用专用AI硬件慢,但它通常更易于使用,并且对于大多数创客项目来说速度足够快。我们还有针对这些AI专用板卡的单独指南,也会提供相关链接。
最后一点重要提示:我们在撰写本指南时展示的说明在当前是有效的,并且应该能在相当长的一段时间内继续有效。不过,为了以防万一未来有更新破坏了此安装过程,你可以在本指南末尾找到一套备份安装说明。此备份方法将安装已知可用的旧版本。但你应该首先尝试主要安装方法,因为最新版本将允许你使用最新、最棒的YOLO模型。
如果你对计算机视觉,目标检测和姿态估计感兴趣,也可以考虑查看以下内容:
在树莓派5上使用YOLO进行物体和动物识别-入门指南
在树莓派5上开启YOLO姿态估计识别之旅!
如何在树莓派 AI HAT+上进行YOLO目标检测?
如何在树莓派 AI HAT+上进行YOLO姿态估计?
用树莓派 + OpenCV 打造人脸识别技术!
让我们开始吧!考验你英语听力的的时候到了,你可以选择观看视频演示
目录
你需要准备什么
硬件组装
安装Conda和Libmamba
安装Ultralytics和虚拟环境
设置Picamera2
让Thonny使用虚拟环境
测试代码:你安装正确了吗?
替代安装方法:备份方法
接下来该做什么?
你需要准备什么
要完成本指南,你需要准备:
树莓派5 - 4GB、8GB或16GB型号均可。虽然从技术上讲,这也可以在树莓派4上完成,但其速度远慢于树莓派5,体验不会很好(预计帧率会低2到3倍)。我们没有直接在树莓派4上测试过此方法,但理论上应该可以工作
树莓派摄像头 - 我们使用的是摄像头模块V3
转换线 - 树莓派5配备了不同尺寸的CSI摄像头线,而你的摄像头可能配备的是较旧、较粗的线,因此值得仔细检查一下。摄像头模块V3肯定需要一条转换线。
散热解决方案 - 我们使用的是主动散热器(计算机视觉确实会将你的树莓派运行到极限,因此你需要一个很好的散热方案)
Micro SD卡 - 至少32GB容量
硬件组装
硬件组装相当简单。将线缆较粗的一端连接到摄像头,较细的一端连接到树莓派5。这些连接器上有一个标签 - 将其提起,然后将线缆插入插槽。确保线缆正确放置且对齐,然后将标签推回原位以固定线缆。
请注意,这些连接器只能以一种方向工作,且可能比较脆弱,因此请避免过度弯曲(稍微弯曲一点是可以的)。
安装Conda和Libmamba
首先,我们需要将树莓派操作系统安装到Micro SD卡上。使用树莓派成像工具,选择树莓派5作为设备,选择树莓派操作系统(64位)作为操作系统,并选择你的MicroSD卡作为存储设备。
注意:在MicroSD卡上安装树莓派操作系统将擦除其上的所有数据。
此过程可能需要几分钟时间来下载操作系统。完成后,将其插入树莓派并启动。你的树莓派将进行首次安装,只需确保将其连接到互联网即可。
你还需要记住你创建的用户名,因为本指南中涉及的文件位置将需要用到它。为了简单起见,你可以简单地将其命名为“pi”,这样本指南中的所有说明都无需修改即可直接使用。
进入桌面后,打开一个新的终端窗口,并首先通过更新和升级系统来开始操作:
sudoapt updatesudo apt upgrade -y
这确保我们在开始安装之前拥有最新的软件包和更新。
现在,通常我们会使用类似pip install ultralytics的命令,但Ultralytics软件包的最新更新使得标准pip包管理器难以在树莓派上可靠地安装它。有太多相互依赖的软件包,以至于pip经常无法弄清楚应该安装哪些版本以及按什么顺序安装。如果你幸运地成功使用pip安装了它,那么安装时间可能会超过一个小时,而且很有可能安装的不是最新版本的软件包。
这就是为什么我们使用Conda,它是一个更高级的包管理器,能够更智能地处理这些复杂的依赖树。Conda不仅将使我们能够成功安装Ultralytics,而且安装速度将更快、更可靠。
树莓派默认附带Pip;Conda则没有,因此我们需要安装一个名为Miniforge的软件。Miniforge本质上是一个轻量级的Conda版本,专门设计用于在树莓派等基于ARM的系统上运行。
首先,我们将从GitHub下载Miniforge安装程序:
wgethttps://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
然后,我们将使用chmod命令使其成为可执行文件:
chmod+x Miniforge3-Linux-aarch64.sh
接着,我们运行它:
bashMiniforge3-Linux-aarch64.sh
系统将提示你接受用户协议。按回车键直到到达协议末尾,然后按ctrl+c,再按回车键,然后输入yes以接受协议。
经过短暂的安装后,它会询问你是否要将Conda设置为默认安装程序。你很可能不希望这样,因此在被询问时输入no。
安装完成后,我们需要在当前终端窗口中激活Conda:
source~/miniforge3/bin/activate
现在,我们将安装名为libmamba的软件包求解器。这本质上将增强Conda的功能,使其能够更智能地思考如何解析和安装我们的复杂软件包 - 这是一项非常有用的优化:
condainstall conda-libmamba-solver -y
然后,我们将告诉Conda默认使用libmamba:
conda config --setsolver libmamba
就这样!Conda现已设置完毕,可以用于安装我们的软件包了。
安装Ultralytics和虚拟环境
在安装任何内容之前,我们需要创建一个虚拟环境。虚拟环境本质上是一个虚拟空间,我们所有的库都将存在于该空间中,与系统的Python安装完全分离。这可以防止冲突,并使管理具有不同要求的不同项目变得容易。我们将使用以下命令创建一个名为“ultralytics-env”且Python版本为3.11的环境:
condacreate --name ultralytics-env python=3.11-y
创建该环境后,我们可以将终端窗口设置为在该环境中工作:
condaactivate ultralytics-env
你可以通过看到命令提示符前显示的括号(ultralytics-env)来确认我们当前处于该环境中。
如果你稍后需要再次进入该环境,或者如果你不小心关闭了终端窗口并需要重新进入该环境,你可以通过初始化Conda来重新进入:
source~/miniforge3/bin/activate
然后再次激活虚拟环境:
condaactivate ultralytics-env
现在,让我们安装Ultralytics软件包。你需要输入y来确认这些安装:
condainstall -c conda-forge ultralytics
Conda将显示一个友好的安装界面并自动处理所有依赖关系。
完成后,我们需要安装PyTorch,这是Ultralytics在底层使用的深度学习框架:
condainstall -c pytorch pytorch torchvision cpuonly
完成后,我们就成功安装了Ultralytics YOLO软件包!但是,在我们开始使用它之前,还有一件事需要做...
设置 Picamera2
我们已经成功安装了Ultralytics,但还有一个关键组件需要添加:PiCamera2。这是树莓派默认附带的软件包,用于处理我们代码中的所有摄像头交互。挑战在于,我们无法使用Conda安装它,因为从源代码构建它极具挑战性,并且通常会导致安装失败。
相反,我们需要告诉我们的虚拟环境使用树莓派附带的系统软件包,包括PiCamera2:
echo '/usr/lib/python3/dist-packages'>/home/pi/miniforge3/envs/ultralytics-env/lib/python3.11/site-packages/system-packages.pth
注意:根据你在设置过程中选择的用户名,你可能需要更改此命令中的路径。我们使用了“pi”,因此路径如上所示,但如果你使用了不同的用户名,则需要相应地调整路径(将pi替换为你的用户名)。
现在,我们遇到了一个兼容性问题。NumPy是一个几乎在所有地方都使用的基础软件包,而PiCamera2使用的NumPy版本比Conda默认安装的版本要旧得多。这种版本不匹配将导致我们在尝试使用摄像头时出错。
首先,让我们检查PiCamera2使用的NumPy版本。打开一个新的终端窗口(不要关闭旧的窗口),并输入以下命令:
python3-c"import numpy; print(numpy.__version__)"
这将打印出一个版本号。获取该版本号,并使用以下命令输入它,该命令将告诉Conda降级到这个兼容版本:
condainstall numpy=1.24.2
现在,我们已经将Ultralytics和Picamera2都完全安装到了一个虚拟环境中,我们可以使用该环境来运行YOLO代码了。
让Thonny使用虚拟环境
在运行我们的Python代码之前,还有一步需要做。我们需要告诉Thonny(树莓派操作系统附带的Python集成开发环境)使用我们刚刚创建的虚拟环境,而不是系统Python。
首次打开Thonny时,它将处于基本、精简模式。在右上角,按按钮以使用默认的高级模式,然后重新启动Thonny。
重新启动后,选择运行 > 配置解释器,然后在Python可执行文件下,按三个点以选择一个新的解释器。
我们现在需要导航到/home/pi/miniforge3/envs/ultralytics-env/bin。在这个文件夹中,你将找到一个名为“Python”的文件,选择它并点击确定。
现在,Thonny将使用我们的Conda环境以及我们安装的所有软件包。
测试代码:你安装正确了吗?
在Thonny中创建一个新文件,并粘贴以下代码:
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()
这是一段非常简单的代码,它使用插入树莓派的摄像头模块的视频流运行YOLOE对象检测。首次使用新安装的Ultralytics运行此代码时,它应该会自动下载指定的模型以及它需要的任何附加软件包。如果你能运行此代码并在摄像头视频流中看到检测框出现在对象周围,那么恭喜你!你已经正确设置了一切。
如果在此过程中出了问题,首先要做的是逐步重试我们在这里介绍的所有步骤。很容易错过一个步骤或不小心输入了错误的命令,而遇到的问题中大约有一半源于这样的小错误。
替代安装方法:备份方法
我们上面概述的说明应该在相当长的一段时间内有效。然而,更新是不可避免的,有时这可能会导致安装方法出现冲突。如果上述方法不起作用,在本节中,我们将介绍一种备份方法,该方法安装一个已知可用的版本。不过,这个版本可能较旧,因此你可能无法获得所有最新、最炫的模型及其所有更新。此方法应支持直到YOLO12(在该版本发布前几个月发布)的所有YOLO模型。
首先,按照所有说明直到安装好Conda和Libmamba。准备好Conda后,在树莓派的主文件夹(/home/pi/)中创建一个新文件,并将其命名为:
ultralytics-pi5-environment.yml
在该文件中,粘贴以下内容:
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
这本质上是一份Ultralytics需要安装的所有软件包清单,更重要的是,还列出了已安装的版本。在终端窗口中,确保你已激活Conda环境,然后使用该清单中的软件包创建一个新的虚拟环境,命令如下:
condaenvcreate -f ultralytics-pi5-environment.yml
安装完成后,我们可以使用以下echo命令来设置picamera2:
echo '/usr/lib/python3/dist-packages'>/home/pi/miniforge3/envs/ultralytics-env/lib/python3.11/site-packages/system-packages.pth
接下来该做什么?
现在,你已经准备好了Ultralytics的YOLO软件包。接下来,你应该能够运行Python代码来下载并使用Ultralytics支持的任何模型。如果你正在参考另一份指南,那么你可以从这里继续。如果你正在寻找一些指南,我们提供了以下内容,它们探索了YOLO在你项目中的实际应用(包括如何提高处理速度!):
YOLOE - 即将推出 -这是一种基于视觉概念而非特定物体进行训练的模型。借助简单的文本提示,无需冗长的训练过程,它就能检测到从未见过的物体。这是目前最令人兴奋且适应性最强的YOLO模型之一。本指南从这里继续,介绍如何使用代码设置自定义物体检测,以统计物体数量并跟踪其位置。
YOLO姿态估计 -介绍如何利用YOLO模型的姿态变体来获取人体跟踪数据。我们探讨了如何使用它生成的关键点数据来控制项目中的硬件,以及如何根据人的头部位置创建一个太空入侵者游戏控制器。
YOLO物体检测 -实际探讨如何在你的创客项目中使用YOLOv8物体检测。我们探讨了如果检测到特定物体,该如何“采取行动”。
如果你想了解一些适用于树莓派的AI加速硬件及其功能,你可能想看看以下指南。请注意,我们在这里设置的YOLO无法在这些设备上运行;你需要采用另一种安装方法才能在这些设备上运行模型:
AI HAT -一款专用的AI芯片,可连接到树莓派5,性能可提升10 - 100倍。
AI摄像头 -一款内置AI芯片的摄像头模块,可用于运行小型模型,性能可提升2 - 5倍。
原文地址:
https://core-electronics.com.au/guides/raspberry-pi/how-to-set-up-yolo-computer-vision-on-a-raspberry-pi-conda-and-ultralytics/
-
目标检测
+关注
关注
0文章
229浏览量
16052 -
计算机视觉
+关注
关注
9文章
1710浏览量
46878 -
树莓派
+关注
关注
122文章
2031浏览量
107670
发布评论请先 登录
完整指南:如何使用树莓派5、Hailo AI Hat、YOLO、Docker进行自定义数据集训练?

树莓派5,Raspberry Pi 5 评测
树莓派怎么打造开心农场
树莓派可以运行所有window程序吗?
什么是树莓派?树莓派是什么架构的
4台树莓派5跑动大模型!DeepSeek R1分布式实战!

树莓派 Pico 2040 的“速度狂飙”:时钟速度几乎翻倍!

评论