yolo只检测人-class修改

一.修改源代码

cfg/coco.data
复制代码

classes= 1 #修改成1
train = /home/pjreddie/data/coco/trainvalno5k.txt
valid = coco_testdev
#valid = data/coco_val_5k.list
names = data/coco.names
backup = /home/pjreddie/backup/
eval=coco

复制代码

原因:在coco.c中定义的标签,人为第一个,所以改为1.

examples/detector.c

void test_detector(char *datacfg, char *cfgfile, char weightfile, char filename, float thresh)函数中
draw_detections(im, l.w
l.h
l.n, thresh, boxes, probs, names, alphabet, 1); //最后一个参数修改成1。line=481
void run_detector(int argc, char **argv)//该函数中,倒数第三行.line=542
int classes = option_find_int(options, “classes”, 1);//最后一个参数修改成1

二.重新编译和测试

1.重新编译

make clean
make

2.测试

./darknet detect cfg/yolo.cfg yolo.weights data/person.jpg

三.结果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现 YOLO 实时检测并推流,你可以使用以下步骤: 1. 安装 YOLO 检测框架和 OpenCV 库,这两个库可以使用 pip 安装。 2. 配置 YOLO 模型和标签文件,这些文件可以从 YOLO 官方网站下载。 3. 使用 OpenCV 库打开摄像头或者视频文件。 4. 在视频帧上运行 YOLO 模型,检测出其中的物体。 5. 在视频帧上标记出检测到的物体,并将结果实时推流到指定的服务器。 以下是一个简单的 Python 代码示例,可以实现 YOLO 实时检测并推流: ``` import cv2 import numpy as np import requests # 配置 YOLO 模型和标签文件位置 model_path = "path/to/yolo/model" label_path = "path/to/yolo/labels" # 加载 YOLO 模型和标签文件 net = cv2.dnn.readNetFromDarknet(model_path) labels = open(label_path).read().strip().split("\n") # 配置推流服务器地址 stream_url = "rtmp://your-streaming-server-address" # 打开摄像头 cap = cv2.VideoCapture(0) while True: # 读取视频帧 ret, image = cap.read() # 对视频帧进行 YOLO 检测 blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (416, 416), swapRB=True, crop=False) net.setInput(blob) layer_outputs = net.forward(net.getUnconnectedOutLayersNames()) 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: box = detection[:4] * np.array([image.shape[1], image.shape[0], image.shape[1], image.shape[0]]) (centerX, centerY, width, height) = box.astype("int") x = int(centerX - (width / 2)) y = int(centerY - (height / 2)) boxes.append([x, y, int(width), int(height)]) confidences.append(float(confidence)) class_ids.append(class_id) # 在视频帧上标记检测到的物体 idxs = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.3) if len(idxs) > 0: for i in idxs.flatten(): (x, y) = (boxes[i][0], boxes[i][1]) (w, h) = (boxes[i][2], boxes[i][3]) color = [int(c) for c in COLORS[class_ids[i]]] cv2.rectangle(image, (x, y), (x + w, y + h), color, 2) text = "{}: {:.4f}".format(labels[class_ids[i]], confidences[i]) cv2.putText(image, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) # 推流视频帧到指定的服务器 encoded, buffer = cv2.imencode('.jpg', image) req = requests.post(stream_url, data=buffer.tobytes()) # 按下 q 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放资源 cap.release() cv2.destroyAllWindows() ``` 这个代码示例使用 YOLO v3 模型对视频帧进行物体检测,并将检测结果实时推流到指定的服务器。你需要根据自己的实际情况,修改代码中的 YOLO 模型、标签文件和推流服务器地址等参数。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值