学习总结win10下yolov5使用GPU训练自己的模型,同时调用网络摄像头识别目标学习指南与踩坑经验

Posted 十七大人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习总结win10下yolov5使用GPU训练自己的模型,同时调用网络摄像头识别目标学习指南与踩坑经验相关的知识,希望对你有一定的参考价值。

目录

前言

一、准备工作

1、下载

1.下载yolov5源代码存放到桌面

2.下载anaconda用于配置环境

3.熟悉命令窗口简单指令

2、配置环境

3、测试环境是否正确配置

二、训练模型

1、标注图片

2、检查标签

3、更改运行文件

1.修改coco128.yaml

2.修改yolov5s.yaml

4、修改train.py

5、开始训练,运行mytrain.py

三、使用模型

1、调用摄像头

2、识别本地图片或者视频

3、识别网络摄像头或者流媒体

四、总结

五、找到我


前言

本人学的是机电自动化专业,但因为一些原因自学了yolov5。在半知半解的情况下,摸索着学习。

此文是我个人在学习yolov5的一些学习总结,可能有一些地方我还没有弄懂,所以本文如有错误,还请谅解,可以私信或者在评论里指出,万分感谢。

这是我学yolov5的看过的一些教程,也在此特别感谢各位大佬经验分享,没有你们的无偿分享,就没有今天的这份学习总结。

【一天搞定系列】垃圾分类设计!学不会up给你跪下!收藏不亏!_哔哩哔哩_bilibili

【Yolov5】1.认真总结6000字Yolov5保姆级教程_若oo尘的博客-CSDN博客_yolov5流程图

手把手教你使用YOLOV5训练自己的目标检测模型-口罩检测-视频教程_肆十二的博客-CSDN博客

YOLOv5训练自己的数据集(超详细完整版)_深度学习菜鸟的博客-CSDN博客_yolov5训练数据集

YOLOv5学习笔记_「已注销」的博客-CSDN博客

【深度学习】【YoloV5】单机多卡训练 多机多卡训练_XD742971636的博客-CSDN博客_yolov5 多卡训练


一、准备工作

1、下载

1.下载yolov5源代码存放到桌面

下载地址:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

 如果出现网络错误,使用 Steam++ 快速访问 Github_小飞飞¹²³的博客-CSDN博客

 点击code-Download ZIP下载并解压,文件夹重命名为yolov5

存放路径你可以自己设定也可以参照我的,我存放在C盘里

C:\\Users\\Administrator\\

2.下载anaconda用于配置环境

下载地址Anaconda | Anaconda Distribution 

推荐使用清华镜像下载Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

 安装

最新Anaconda3的安装配置及使用教程(详细过程)_HowieXue的博客-CSDN博客_anaconda3

注意,大部分Anaconda教程安装后会让你更改conda源或者pip源,这个与实际使用环境有关,个人使用官方源速度2m/s,反而使用清华源500k/s。所以换不换源取决你自己的网络环境。

建议先不用换源

Anaconda之conda换国内源_你的大数据学长的博客-CSDN博客_conda换源

pip 及 conda换源_uu_189340的博客-CSDN博客_conda pip换源

这里的pip以及conda是指下载器,换源是指在墙的情况下,改为从国内访问速度更快的网站下载软件包

3.熟悉命令窗口简单指令

conda简单指令

conda --version #查看conda版本,验证是否安装

conda env list #查看所有环境

conda create -n env_name package_name #创建名为env_name的新环境,并在该环境下安装名为package_name 的包,可以指定新环境的版本号
例如:conda create -n python2 python=python2.7 numpy pandas,创建了python2环境,python版本为2.7,同时还安装了numpy pandas包

conda activate env_name #进入env_name环境

conda deactivate #退出环境

conda create --name new_env_name --clone old_env_name #复制old_env_name为new_env_name

conda remove --name env_name –all #删除环境

conda list #查看所有已经安装的包

conda install package_name #在当前环境中安装包

conda install --name env_name package_name #在指定环境中安装包

conda remove – name env_name package #删除指定环境中的包

conda remove package #删除当前环境中的包
win命令窗口简单指令

dir #显示当前文件夹中的所有文件

cd   #文件夹名或者文件夹路径 #跳转到文件夹

cd ..  #移动到上一个文件夹

2、配置环境

在win开始目录里找到Anaconda3文件,打开Anaconda prompt 

 输入

conda create -n yolo python==3.8.5   #创建一个名字叫yolo的环境,使用python3.8.5
#下图环境的名称是yolo5,这是因为我已经有yolo的环境了,所以用yolo5的名称来做演示

 输入yes

耐心等待下载安装完成,半小时左右

conda activate yolo

 可以看到环境从base变成yolo了


除了环境空间,我们还需要安装软件包

打开pytorch官网PyTorch

 选择与电脑对于的版本与安装方式,我上面写的conda安装,也可以选择pip安装

如果你用的是独立显卡,你可以选cuda11.3或者cuda11.6,如果只用cpu那选择选cpu

显卡驱动务必更新到最新,具体安装参考

PyTorch 最新安装教程(2021-07-27)_ZSYL的博客-CSDN博客_pytorch安装教程

然后复制下方的安装代码,在yolo的环境下复制回车

 注意一定要先切换到yolo环境,在yolo的环境下安装

 输入yes

安装完成后进入py环境,输入指令验证

python

import torch 

print(torch.__version__) # pytorch版本
print(torch.version.cuda) # cuda版本
print(torch.cuda.is_available()) # 查看cuda是否可用

#crtl+z 回车  退出python环境

得到pytorch版本1.12.0+cu113,这个cu113表示是使用gpu的版本是正确的

注意,如果出现1.12.0+cpu 说明你安装错了,这是cpu版本,要卸载cpu版,重新安装gpu版的

后面的查看cuda是否可用是指,是否可以调用gpu,只有为ture才能调用gpu

conda uninstall pytorch #conda卸载
pip uninstall torch #pip卸载
#你用那个指令安装的就用那个指令卸载

具体看pytorch安装及卸载_翟羽嚄的博客-CSDN博客_卸载pytorch


然后是其他软件包的安装

先移动到yolov5源代码的位置 

cd \\Users\\Administrator\\yolov5 #你放在哪里就cd到你放的那个路径

在显示文件夹里的文件

dir

 可以看到有个叫requirements.txt的文件,里面放的是yolov5要安装的软件包和版本

我们在文件管理器中打开requirements.txt

找到这两行,在前面加#号注释掉或者直接删掉这两行

注意!!这两行其实就是pytorch的安装指令,但是这条指令执行后会默认安装cpu版本的pytorch,覆盖掉我们之前安装的gpu版本,这也是为什么大部分人装了半天gpu版本,最后一查是cpu版本的原因。

使用pip下载requirements.txt里所有软件包

pip install -r requirements.txt

 安装labelme,用于标注图片

pip install labelimg

 安装VScode,用于编辑python程序

VSCode安装教程(超详细)_牛哄哄的柯南的博客-CSDN博客_vscode安装

3、测试环境是否正确配置

打开VScode,找到yolov5文件目录,选择detect.py文件,在右下角选择编译器为yolo

 点击右上角运行

正常情况下运行后会在runs\\detect文件下出现一个以exp为前缀的新文件夹,找到最新的那个,打开可以看到两张被标注好的照片

但直接运行成功的情况太少了,大部分人的情况是遇到

ModuleNotFoundError: No module named requests

Unknown or unsupported command install

ModuleNotFoundError: No module named ‘tqdm‘

ModuleNotFoundError: No module named ‘seaborn‘

环境变量有中文导致的软件不能使用的问题

关于VS Code中“相对路径”异常的解决办法(windows系统)

ModuleNotFoundError: No module named ‘pandas’

WARNING:Ignore distutils configs in setup.cfg due to encoding errors

解决:python:ModuleNotFoundError: No module named requests与Unknown or unsupported command install报错_Aloeox的博客-CSDN博客

 ModuleNotFoundError: No module named ‘tqdm‘_长沙有肥鱼的博客-CSDN博客

ModuleNotFoundError: No module named ‘seaborn‘(缺少seaborn包)_Mr.小蔡的博客-CSDN博客

环境变量有中文导致的软件不能使用的问题_一抹烟霞的博客-CSDN博客

关于VS Code中“相对路径”异常的解决办法(windows系统)_恒木mh的博客-CSDN博客_vscode相对路径用不了

Jupyter Notebook报错 ModuleNotFoundError: No module named ‘pandas’_StefanJ的博客-CSDN博客【WARNING:Ignore distutils configs in setup.cfg due to encoding errors】完美解决_Youcai Zhang的博客-CSDN博客

 这些是我遇到的问题,所有你们大概率也会遇到,你们可以关注我,在我的收藏夹里可以看到深度学习的收藏夹,里面的内容你们可能用得到。

 

 当解决完所有问题,runs\\detect出现被标注好的照片后,即代表环境已经配置好了,接下来我们进行下一步训练模型

二、训练模型

1、标注图片

首先,对着要识别的物体拍一大堆照片

然后按照下图顺序新建文件夹

mydata
       ├─ images
       │    ├─ test # 下面放测试集图片
       │    ├─ train # 下面放训练集图片
       │    └─ val # 下面放验证集图片
       └─ labels
              ├─ test # 下面放测试集标签
              ├─ train # 下面放训练集标签
              ├─ val # 下面放验证集标签

如图,mydata 文件夹的位置可以随意放置,记住路径即可,但mydata的内部文件夹的名称与位置要与上面图片一致。

我这里存放在C:\\Users\\Administrator\\yolov5\\

将开始拍摄好的照片放在mydata/images/train下

注意,图片数量至少50张起步,越多越好,没有上限

注意,如果文件名字太乱可以用以下方法更改,不过不改也没有太大问题Python批量改变图片名字_怪&的博客-CSDN博客_python修改图片名称

回到Anaconda prompt 进入yolo环境

输入

labelimg

 可以看到弹出了一个界面

先打开,文件位置选择你存放图片的地方mydata\\images\\train,我这里是C:\\Users\\Administrator\\yolov5\\mydata\\images\\train

在打开,文件位置选择在你要保存标注文件的地方mydata\\labels\\train,我这里是

C:\\Users\\Administrator\\yolov5\\mydata\\labels\\train

注意,图片文件必须保存在mydata\\images\\train下,标注文件必须保存在mydata\\labels\\train文件下,必须在同一个mydata文件下,不然程序可能找不到

点击save按键下方的切换标注模式为yolo

在view中设置auto save mode自动保存

 labelimg的快捷键

实际只用w键创建标注框,使用d、a键切换上下图片

用w框选要识别的物体,输入标注物体名字标签,我标注的是剪刀scissors

然后按d键切换下一张,直到标注完所有图片的

注意,可以一次标注多个不同物体,这里演示所以只识别一种物体

2、检查标签

打开mydata\\labels\\train文件

我这里是C:\\Users\\Administrator\\yolov5\\mydata\\labels\\train

可以看到有很多txt文件,点开第一个classes.txt文件,显示只有scissors一种标签,如果你标注了几种这里就会有几种

标注完成后,打开mydata/images/train文件夹,将train里的图片挑选出大概10张(总图片的10%)特别清晰明显的图片,复制到images/val和images/test中。

val验证集用于调整训练曲线,比如当你的模型训练是遇到了模糊的图片或者其他玄学原因,导致模型出现了偏差,但是模型隔一段时间就会去跑一次验证集,这个时候验证集清晰的图片就会把这个偏差给去除,防止我们最后得到的模型精度偏差太大。

test测试集是最后模型训练完成了,测试一下模型的精度。

图片复制完后就要复制图片的标注文件

打开mydata/labels/train文件夹,复制你刚才挑选的图片的对应标注文件,复制到/labels/val与/labels/test

注意,实际这两个集可以直接为空,或者直接将训练集里复制所有文件都复制到测试集和验证集里,我这里是直接复制训练集里所有文件到另外两个集里

3、更改运行文件

 将运行文件中的数据位置改成我们文件实际位置

1.修改coco128.yaml

打开yolov5\\data 文件夹,找到coco128.yaml文件,复制一份,重命名为mydata.yaml

我的路径为C:\\Users\\Administrator\\yolov5\\data

打开mydata.yaml,

修改:注释path行,

修改为train:mydata//images/train,此项为训练集相对相对位置(相对于主程序train.py的位置)

修改val: mydata/images/val,此项为验证集的相对位置

修改test: mydata/images/test,此项为测试集的相对位置

修改nc:1  此项为标签种类数,我只标记了一种,所以此处为1

修改names: ['scissors'],更改你的标签名称,有几种写几种

注释download ,此项为下载yolov5的默认脚本,对我们没用

2.修改yolov5s.yaml

打开yolov5\\models,找到yolov5s.yaml,复制一份重命名为myyolov5s.yaml

我的路径为C:\\Users\\Administrator\\yolov5\\models\\

打开myyolov5s.yaml

只需要修改一项将nc改为1,此项为我们的标签种类数

注意,我们发现除了yolov5s.yaml,还有yolov5l.yaml、yolov5m.yaml、yolov5n.yaml、yolov5x.yaml

打开这些文件,仔细观察,发现只有这两项不一样

这两项是指神经网络的深度和宽度,在使用过程中这两项的数值越大,模型的精度越高,但所需要的时间也越多,模型精度从小到大依次为,yolov5n.yaml、yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml,如果你的显卡配置够好的话可以选择yolov5x.yaml,如果差一点的话可以选择yolov5n.yaml,我这里选择yolov5s.yaml

4、修改train.py

打开yolov5文件夹,找到 train.py文件,复制重命名为mytrain.py

我的文件路径为C:\\Users\\Administrator\\yolov5\\train.py

 打开mytrain.py,下滑到473行

 此部分代码详解请参照

yolov5的train文件代码含义解析(部分)_我有个想法~不,你不想的博客-CSDN博客_train文件

 我们只需要修改这一段代码中的少数几行中"default="字样之后的文字

parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default= 'yolov5s.pt', help='initial weights path')
#预训练模型,可不填,但效果会很差,默认为yolov5s.pt
    parser.add_argument('--cfg', type=str, default='models/myyolov5s.yaml', help='model.yaml path')
#必要修改
#修改地址为models/myyolov5s.yaml,训练模型文件位置
    parser.add_argument('--data', type=str, default='data/mydata.yaml', help='dataset.yaml path')
#必要修改
#修改地址为data/mydata.yaml,数据集文件位置
    parser.add_argument('--hyp', type=str, default= 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=100)
#修改训练轮数为100,轮数越高,精度越高,速度越慢,默认300
    parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch')
#线程数默认为16,越大越快,不能过大,
    parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)')
#图片大小,越小越快,但精度越差,一般图片多大填多大,不规则填最长边尺寸
    parser.add_argument('--rect', action='store_true', help='rectangular training')
    parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training')
#继续训练,如果上一次训练中止了,只要在这里填上Ture,就可以继续完成上一次训练
    parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
    parser.add_argument('--noval', action='store_true', help='only validate final epoch')
    parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor')
    parser.add_argument('--noplots', action='store_true', help='save no plot files')
    parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations')
    parser.add_argument('--bucket', type=str, default='', help='gsutil bucket')
    parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')
    parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training')
    parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
#必要修改
#修改为0,0的意思是调用gpu0,如果你的电脑有几块gpu可以填1,2,3,如果没有gpu可以在上面填cpu
    parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%')
    parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class')
    parser.add_argument('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer')
    parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode')
    parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)')
    parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name')
    parser.add_argument('--name', default='exp', help='save to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--quad', action='store_true', help='quad dataloader')
    parser.add_argument('--cos-lr', action='store_true', help='cosine LR scheduler')
    parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon')
    parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')
    parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2')
    parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')
    parser.add_argument('--seed', type=int, default=0, help='Global training seed')
    parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify')

注意,必须要修改 --data   --cfg    --batch-size   这三行代码

其他的可以稍微调整来提高精度或减少训练时间

注意!!修改好后,点击ctrl+s保存

5、开始训练,运行mytrain.py

 打开Anaconda prompt 

输入

conda activate yolo #切换到yolo环境

cd C:/Users/Administrator/yolov5 #移动到yolov5文件夹
#cd 后面改成你文件夹的位置

python mytrain.py  #运行程序,开始训练

 

等待程序运行完成,打开yolov5\\runs\\train,找到最新的exp前缀的文件夹,我这里是exp8,点击进入后,打开weights文件夹

我的路径为C:\\Users\\Administrator\\yolov5\\runs\\train\\exp8\\weights

可以看到

有best.pt和last.pt,这两个文件就是我们训练得到的模型。

best.pt的精度更高,但是识别率低,可能存在看到了目标,但因为阈值过高而无法识别,last.pt的精度低,但是识别率高,可能存在没看到目标,但因为阈值过低,将其他物体错误识别成目标物体

以上问题归根结底还是数据太少的原因导致,只要数据足够多,精度是可以保证的。

三、使用模型

打开yolov5文件夹,找到detect.py文件

我的路径 C:\\Users\\Administrator\\yolov5\\detect.py

 detect.py程序里集成了模型所有的使用情况

打开文件,找到第215行

注意,我们主要修改 --weights --source,这两行

1、调用摄像头

打开detect.py文件

修改  --weights 为  runs/train/exp8/weights/last.pt  修改使用模型的位置,我们使用last.pt模型

修改  --source 为 0    修改调用摄像头0,如果有多个可以改1、2、3

    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'runs/train/exp8/weights/last.pt', help='model path(s)')
    parser.add_argument('--source', type=str, default= '0', help='file/dir/URL/glob, 0 for webcam')
   

修改好后,点击ctrl+s保存

在vscode中选中yolo环境点击运行即可

或者在Anaconda prompt在yolo环境中,在文件路径下输入

python detect.py

2、识别本地图片或者视频

同样,打开detect.py文件

修改  --weights 为  runs/train/exp8/weights/last.pt  修改使用模型的位置,我们使用last.pt模型

当识别文件夹里的图片,修改  --source 为  mydata/images/test   识别相对路径里mydata/images/test里我们放的测试集里所有图片

如果识别单个视频或图片,修改 --source 为  video\\test.mp4    识别相对路径video/test.mp4   识别mp4视频文件 

修改好后,点击ctrl+s保存

    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'runs/train/exp8/weights/last.pt', help='model path(s)')
    parser.add_argument('--source', type=str, default= 'video/test.mp4', help='file/dir/URL/glob, 0 for webcam')
   

在vscode中选中yolo环境点击运行即可,或者在Anaconda prompt中,在yolo环境中,在文件路径下输入

python detect.py

 运行成功后看到输出路径为 runs\\detect\\exp11

 移动到该路径可以看到名字为test.mp4的文件,打开文件

 看到视频中已经标注好了目标物体

注意,这里是识别本地的文件,我们只要指定路径文件或者直接给文件夹路径就行

3、识别网络摄像头或者流媒体

先准备一台手机,和电脑连接同一个WiFi

手机下载IP摄像头app

 打开软件

   

点击打开ip摄像头服务器,记住账号密码,以及局域网访问地址

回到电脑

打开detect.py文件

修改  --weights 为  yolov5s.pt  修改使用模型的位置,我们使用在自带 yolov5s.pt  模型(放在yolov5根目录下)

修改  --source 为 http://admin:admin@192.168.31.166:8081    此项修改为你自己手机上的ip

修改好后,点击ctrl+s保存

    parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path(s)')
    parser.add_argument('--source', type=str, default= 'http://admin:admin@192.168.31.166:8081', help='file/dir/URL/glob, 0 for webcam')
    

 在vscode中选中yolo环境点击运行即可,或者在Anaconda prompt中,在yolo环境中,在文件路径下输入

python detect.py

可以看到界面上显示了手机拍摄到的照片,并正确识别了目标

四、总结

本文从一个新手的角度讲解了yolov5的环境安装与使用,此教程是我零零碎碎用上班摸鱼的时间写了快两个月完成的,一来记录我的学习历程,二来通过写教程的方式加强我对yolov5的使用,第三点也是最重要的一点,我是在别人教程的帮助下学会yolov5的,所以我希望我的教程也能帮助到更多人。敬此

五、找到我

CSDN   十七大人的博客

B站       十七大人的哔哩哔哩空间

知乎      十七大人 - 知乎

微信公众号  构建中

GitHub         构建中

Matlab实现YOLOV3对车辆进行检测--全程中文说明适合初学者学习

目录

前言

一、模型训练

1.1对训练图片进行预处理

1.2 对训练图片进行打标签

1.3 训练模型

 二、图像识别

总结

程序


前言

程序是基于Matlab实现的,对于初学者,通俗易懂,如果电脑的GPU性能不佳的情况下,利用Matlab可以实现YOLOV3的算法对目标识别。

程序全部都是通俗易懂的,并且如何使用此程序对图片识别,从修改图片大小到打标签再到训练模型和识别图像都一一的细说,因此只需要下载程序然后运行和学习即可。程序我放在最后的超链接里了,需要的自行去下载即可。

一、模型训练

1.1对训练图片进行预处理

为了节约训练图片的时间,我这里采用的是227*227的尺寸大小,因此,在对训练图片进行打标签之前,需要把图片的大小变成227*227。

如果不会对图片进行统一改变大小,这里有程序

1.2 对训练图片进行打标签

在训练之前首先要对训练照片进行打标签,具体打标签法如下:

1、打开Matlab应用Image Labeler

2、打开后,首先点击Load,然后选择添加训练的照片,然后点击Label进行标签设置,可以选择颜色,选择好后进行打标签,具体如图所示:

 3、打完全部图片的标签后,需要将标签数据保存,点击Export Labels,然后选择保存到文件,具体如图所示。

1.3 训练模型

 首先打开ATrainYOLOV3.mlx文件,然后对已打标签的数据文件进行加载,这里我的文件名字是gTruth.mat,如果你的名字不是这个,需要对应的修改好。

训练好后,在文件区域会出现YOLOV3.mat,这个就是已经训练好的模型。

 二、图像识别

 打开BTestmodel.mlx文件,然后点击运行,选择要检测的照片。

 识别结果如下所示。

总结

我训练的图片只有600张左右,因此精确度还是不够高,对于一些小目标和残缺目标的识别精度还是不够高。如果想要达到高识别率和高精度,需要训练的照片越多越好。最后程序我附录在最后了,超链接的形式,里面全是中文注释,超级可以看懂。

程序

以上是关于学习总结win10下yolov5使用GPU训练自己的模型,同时调用网络摄像头识别目标学习指南与踩坑经验的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow GPU训练模型时假卡死

零基础玩转yolov5yolov5训练自己的数据集(最新最全版)

GitHub YOLOv5 开源代码项目系列讲解------使用云端GPU训练Yolov5模型

Linux云GPU训练yolov5,conda开了一个虚拟的conda 环境,bypy使用,利用conda虚拟环境中的python

深度学习-YOLOV5学习

深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)