YOLO:You Only Look Once运行记录(Ubuntu14.04+GT750M)

YOLO是自己实现的框架darknet,并不是基于caffe,虽然Github上有基于caffe的实现。YOLO的编译很快,tinyYOLO的速度确实也非常高,不过准确度是真的低。

记录一下YOLO利用摄像头获取图像并进行目标检测的过程:

首先去github下载darknet并解压。

安装CUDA(仅支持NVIDIA独立显卡),参考博客Ubuntu软件安装记录:CUDA+ROS+QT+sougouinput+有道词典

安装OPENCV2:sudo apt-get install libopencv-dev

修改Makefile中对应的:GPU=1,OPENCV=1

编译:make

输入:./darknet imtest data/eagle.jpg测试是否安装成功,成功的话会显示很多图片。

下载weights参数:下载tiny-yolo-voc.weights。在根目录下建立weights文件夹,保存该weights文件。

输入命令:./darknet detector demo cfg/voc.data cfg/tiny-yolo-voc.cfg weights/tiny-yolo-voc.weights
即开始调用摄像头运行。
这里写图片描述

遇到的错误:

nvcc  -gencode arch=compute_20,code=[sm_20,sm_21] -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=[sm_50,compute_50] -gencode arch=compute_52,code=[sm_52,compute_52]  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ --compiler-options "-Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU" -c ./src/convolutional_kernels.cu -o obj/convolutional_kernels.o
/bin/sh: 1: nvcc: not found
make: *** [obj/convolutional_kernels.o] Error 127

解决方法:

export PATH=/usr/local/cuda-8.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH 
对于基于YOLO的目标识别算法,以下是一个简单的代码示例: ```python import cv2 import numpy as np # 加载YOLO模型 net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg") # 获取所有类别名称 with open("coco.names", "r") as f: classes = f.read().splitlines() # 加载图像并进行预处理 img = cv2.imread("image.jpg") height, width, _ = img.shape # 构建输入blob blob = cv2.dnn.blobFromImage(img, 1/255.0, (416, 416), swapRB=True, crop=False) # 设置输入blob到网络中 net.setInput(blob) # 运行前向传播以获取输出层 output_layers_names = net.getUnconnectedOutLayersNames() layer_outputs = net.forward(output_layers_names) # 初始化列表来存储检测结果 boxes = [] confidences = [] class_ids = [] # 遍历每个输出层 for output in layer_outputs: # 遍历每个检测框 for detection in output: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: # 将检测结果的坐标映射回原始图像空间 center_x = int(detection[0] * width) center_y = int(detection[1] * height) w = int(detection[2] * width) h = int(detection[3] * height) # 使用检测结果构建边界框 x = int(center_x - w / 2) y = int(center_y - h / 2) # 存储边界框、置信度和类别ID boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) # 应用非极大值抑制来去除重叠的边界框 indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) # 绘制边界框和类别标签 font = cv2.FONT_HERSHEY_PLAIN colors = np.random.uniform(0, 255, size=(len(classes), 3)) for i in range(len(boxes)): if i in indexes: x, y, w, h = boxes[i] label = classes[class_ids[i]] confidence = confidences[i] color = colors[class_ids[i]] cv2.rectangle(img, (x, y), (x + w, y + h), color, 2) cv2.putText(img, f"{label} {confidence:.2f}", (x, y - 5), font, 1, color, 2) # 显示结果图像 cv2.imshow("Image", img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请确保已经下载了YOLO的权重文件(`yolov3.weights`)、配置文件(`yolov3.cfg`)和类别名称文件(`coco.names`)。你可以从YOLO官方网站下载这些文件。 这段代码加载了YOLO模型并使用它在图像上进行目标识别。它将检测到的目标用边界框和类别标签进行绘制,并显示结果图像。请注意,此代码示例仅适用于YOLOv3模型,如果你使用其他版本的YOLO模型,可能需要相应地进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值