ubuntu18.04深度学习yolo检测
时间: 2025-06-27 17:15:06 浏览: 12
### YOLO深度学习模型在Ubuntu 18.04上的配置与运行
#### 安装依赖库
为了确保YOLO能够顺利工作,需要先安装一系列必要的Python库和其他依赖项。这通常包括但不限于OpenCV、NumPy以及其他可能由具体实现所需求的库。
对于CUDA支持的GPU加速,考虑到硬件兼容性和性能优化,建议确认NVIDIA驱动已正确安装并测试通过[^1]。
```bash
sudo apt-get update && sudo apt-get install -y build-essential cmake git pkg-config libopencv-dev python3-pip
pip3 install numpy opencv-python matplotlib Pillow imgaug
```
#### 设置Python环境
创建一个新的Conda虚拟环境来隔离项目所需的特定版本依赖关系是一个良好的实践方法。这里推荐使用Python 3.6作为基础解释器版本:
```bash
conda create -n yolov5_env python=3.6
source activate yolov5_env
```
接着可以按照官方文档指示进一步扩展此环境中其他必需组件,比如PyTorch框架及其对应的CUDA后端支持[^3]。
#### 获取YOLOv5源码仓库
克隆官方GitHub存储库到本地计算机,并切换至目标分支或标签页获取最新稳定版发布内容:
```bash
git clone https://github.com/ultralytics/yolov5.git
cd yolov5/
```
#### 修改配置文件适应自定义数据集
如果打算利用个人收集的数据集来进行训练,则需调整`data/custom.yaml`中的路径参数以及类别数量等信息以匹配实际情况;同时也要相应地编辑位于`models/*.yaml`内的网络架构描述部分以便更好地拟合目标任务特性[^2]。
#### 进行初步验证实验
完成前述准备工作之后就可以尝试执行一些简单的命令来检验整个流程是否通畅无阻了——例如加载预训练权重文件并对单张图片实施推理预测操作:
```python
from pathlib import Path
import torch
from models.experimental import attempt_load
from utils.general import non_max_suppression, scale_coords
from utils.datasets import letterbox, LoadImages
weights = 'yolov5s.pt' # or another .pt file path
img_size = 640
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
model = attempt_load(weights, map_location=device) # load FP32 model
names = model.module.names if hasattr(model, 'module') else model.names # get class names
# Process image...
path = str(Path('data/images/zidane.jpg'))
img0 = cv2.imread(path) # BGR
img = letterbox(img0, new_shape=img_size)[0]
img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416
img = np.ascontiguousarray(img)
dataset = [('image', (path, img))]
for _, im in dataset:
im = torch.from_numpy(im).to(device)
im = im.float() # uint8 to fp16/32
im /= 255.0 # 0 - 255 to 0.0 - 1.0
if im.ndimension() == 3:
im = im.unsqueeze(0)
pred = model(im, augment=False)[0]
det = non_max_suppression(pred, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False)
if det is not None and len(det):
det[:, :4] = scale_coords(im.shape[2:], det[:, :4], img0.shape).round()
print(f'Detections: {det}')
```
阅读全文
相关推荐


















