yolov5实践

目标:采集数据,进行数据标注,使用自己的数据集训练yolo,实现目标检测(人脸)

一、数据采集以及标注

  1.数据采集

  (1)数据采集(摄像头)

"""
代码功能:调用摄像头,保存数据
2023.4.26
li
"""
import cv2

# 定义摄像头
# 参数为0是表示调用第一个摄像头,一般就是笔记本的内置摄像头
cap = cv2.VideoCapture(0)

save_img_path = "./data/" # 保存数据路径
save_img_yn = 1 # 是否保存数据, 1表示保存, 0表示不保存
img_counter = 1 
while(1):
    img_counter = img_counter + 1
    ret,frame = cap.read()#读取每一帧
    cv2.imshow('Camera',frame)#显示每一帧
    if save_img_yn == 1:
        cv2.imwrite(save_img_path + str(img_counter) +  '.jpg', frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break
cap.release()
cv2.destroyAllWindows()

   (2)选用网上的图片

 摄像头采集的数据每一帧都保存一张,数量太多,因此选择网上图片。

 2.数据标注

 使用make sense网站进行标注(也可以使用labeling,不过需要下载)

make sense网站:https://www.makesense.ai/

将标注好的数据导出(txt形式文件)

二、数据准备

1.数据需要分为train与val,文件夹格式如下

dataset #(数据集名字:例如fire) 
├── images      
       ├── train          
              ├── xx.jpg     
       ├── val         
              ├── xx.jpg 
├── labels      
       ├── train          
              ├── xx.txt     
       ├── val         
              ├── xx.txt 

2.修改配置文件

由于yolo默认训练coco128数据集,因此想要训练自己的数据集,需要给出训练数据位置,信息。

 在yolov5-master/data文件夹下添加xxxx.yaml文件,文件内容如下:(我这里设置的只检测人,因此类别只有1个people)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: E:\yolov5\data  # dataset root dir
train: images/train  # train images (relative to 'path')
val: images/val  # val images (relative to 'path')
test:  # test images (optional)

# Classes
nc: 1  # number of classes
names: ['people']  # class names

 三、训练模型——yolov5-master/train.py

1.修改模型参数

在pycharm右上角,点击train旁边的倒三角,选中Edit Configurations...

修改parameters信息为:

--weights yolov5s.pt --data data/people.yaml --workers 1 --batch-size 8 

2.运行模型

 3.结果

模型结果保存在yolov5-master/runs/train/exp中

其中results.png中显示模型训练的损失变化情况。

四、模型测试 ——yolov5-master/detect.py

1.使用测试图片进行目标检测

准备好测试图片后,修改detect的参数。选用上一步训练好的模型参数即best.py,其位置在下图

将best.py复制到yolov5-master文件夹下;同时修改测试图片来源source,如图测试图片位于yolov5-master/data/images。

--weights best.pt --source data/images  

 2.使用摄像头进行实时检测

修改detect.py文件

(修改前)

(修改后)

运行detect.py。 

五、报错以及解决方法

1. 修改detect参数后,报错:detect.py: error: unrecognized arguments

 原因:参数一开始按照教程模式设置:python detect.py --weights best.pt --source data/images

但实际不需要前缀(python detect.py)

正确写法:--weights best.pt --source data/images

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值