Jetson nano-Ubuntu18.04配置darknet环境-YOLOv4

一、配置darknet环境

YOLO官方网址:https://pjreddie.com/darknet/yolo/

YOLOv4项目地址:https://github.com/AlexeyAB/darknet

下载darknet:

git clone https://github.com/AlexeyAB/darknet.git

在darket文件夹下,修改Makefile文件:

cd darknet
gedit Makefile
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1

修改完Makefile之后,执行命令(在darket目录下):

make

下载 yolov4.weights 权重文件(在darket目录下):

wget https://pjreddie.com/media/files/yolov4.weights
或者
链接:https://pan.baidu.com/s/16T8s4-SsjWuZSiS_J5TmHA 
提取码:6666 

二、测试

1、图像测试

cd darknet
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 ./data/dog.jpg

注意:“./data/dog.jpg” 路径是darknet/date/dog.jpg

完成检测后,可以得到如下结果,说明配置成功。
在这里插入图片描述

2、视频测试

./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output data/test.mp4

注意:“data/test.mp4” 需要将test.mp4文件(.avi也可以)放到 darknet/date/ 目录下。不然会出现“Video-stream stopped!”错误

3、摄像头测试(外接USB摄像头)

/darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0

4、使用 json 和 mjpeg 进行网络服务传输检测结果

./darknet detector demo ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights data/test.mp4 -json_port 8070 -mjpeg_port 8090 -ext_output
### Jetson Nano 上部署 YOLOv1 进行目标检测 #### 准备工作 在 Jetson Nano 上部署 YOLOv1 需要完成一系列准备工作,包括设置开发环境和准备必要的依赖库。确保已安装 Python 和 pip 工具。 对于特定于 YOLO 的库和支持工具,可以参考类似的模型部署流程来推断所需的步骤。虽然提及的是其他版本的 YOLO 模型[^2],但这些指导原则同样适用于 YOLOv1: ```bash source myenv/bin/activate pip install numpy opencv-python h5py tensorflow-gpu==1.15 # 安装基础包 ``` #### 下载并转换模型 YOLOv1 原始训练好的权重通常是以 Darknet 格式提供。为了能够在 Jetson Nano 上运行,需将其转换成 TensorRT 或 ONNX 格式以便优化性能。以下是将 Darknet 权重文件转为 ONNX 文件的方法: ```python import darknet2onnx darknet_weight_path = 'yolov1.weights' output_onnx_model = 'yolov1.onnx' darknet2onnx.convert_darknet_to_onnx(darknet_weight_path, output_onnx_model) ``` 此过程可能涉及编写自定义脚本或寻找社区贡献者分享的相关工具。 #### 加载与推理 一旦获得了兼容格式的模型文件(如 `.onnx`),就可以利用 OpenCV DNN 模块或其他框架加载该模型,并执行前向传播来进行预测操作。下面是一个简单的例子展示如何使用预处理后的图像作为输入给定模型进行推理: ```python import cv2 import numpy as np # 初始化网络 net = cv2.dnn.readNetFromONNX('yolov1.onnx') def detect_objects(image): blob = cv2.dnn.blobFromImage(image, scalefactor=0.00392, size=(448, 448), mean=(0, 0, 0)) net.setInput(blob) detections = net.forward() return parse_detections(detections) image = cv2.imread('test.jpg') detections = detect_objects(image) print(f'Detected objects: {len(detections)}') ``` 上述代码片段展示了基本的对象检测逻辑;实际应用中还需要实现 `parse_detections()` 方法解析输出结果以及绘制边界框等功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值