当前位置:   article > 正文

使用Yolov4训练自己的数据集,呼呼呼,看就完了!!

yolov4训练自己的数据

 目录

一、配置环境

二、数据集准备

三、训练模型

结果解析

 四、测试模型

五、评估


一、配置环境

1、考虑到不同项目要求环境不同,直接在anaconda下重新创建一个虚拟环境,该环境起名为yolov4:

conda create -n yolov4 python=3.6


激活该环境:

conda activate yolo_env


如需关闭环境,可用如下命令:

conda deactivate

用惯了pycham我就直接在pycham统一搞搞搞了,pycham配置anaconda我就不写了,参考其他的网站吧~~

好人干到底!

在PyCharm中配置使用Anaconda环境_pycharm使用anaconda环境-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/TuckX/article/details/115681862

还有conda常用命令可以看这篇推文,觉得超详细

Anaconda conda常用命令:从入门到精通_conda命令-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/chenxy_bwave/article/details/119996001

2.安装pytorch

进入pytorch官网下载:PyTorchhttps://pytorch.org/注意:如果电脑无NVIDIA的话,不要直接复制链接下载下面的链接下载!!点击Previous versions of PyTorch >去下载历史版本(选择CPU Only,不建议选择最新版本,因为源更新不了那么快影响进度哈哈哈哈哈哈)

下面是我选择的(加了清华源的)

conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cpuonly -c pytorch -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

接下来就是等待~~

(ps:以前关于anaconda的包装什么都喜欢Anaconda Prompt那里下载,最近听冰万森冰万森-CSDN博客的话在pycham装,发现pycham的终端真的很爽很好用啊有人懂吗! 强烈安利!!!感兴趣请看pycharm的terminal怎么用 - CSDN文库

出现done就说明我们的pytorch已经安装好了 

3、安装其他包

文件里有一个.txt文件,直接用命令下载:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

当然,如果没安装完的话会出现如下情况的错误,此时只需要安装好tqdm这个库即可。

pip install -r tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple

二、数据集准备

1、新建文件夹存放自己的数据

新建一个文件夹命名为VOCdevkit/VOC2007,存放自己的数据
2、在该目录下新建三个文件夹,其中,

JPEGImages:用来存放图片
Annotations:图片对应的xml



3、在ImageSets下新建文件夹Main,用来存放txt文件,运行voc_annotation.py代码就可以生成用于训练和验证的数据集的txt文件,这些列出了数据集中包含的不同类别的数量。例如,| aeroplane | 69 | 表示aeroplane类在数据集中有69个实例。

运行代码后生成的三个文件:

如果你到这一步,恭喜你,已经把数据做好了!!!为自己鼓掌!!!!!!!!!!

三、训练模型

完成以上步骤以后,我就直接运行了train.py文件

发现还是需要下载一些包,下就完了!tensorboard

  1. pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. Collecting tensorboard

运行结果图

结果解析

  1. 加载权重:

    Load weights model_data/yolo4_weights.pth.
    

    代码开始加载模型权重,这些权重是之前训练好的模型参数,保存在文件model_data/yolo4_weights.pth中。

  2. 成功加载的键:

    1. Successful Load Key: ['backbone.conv1.conv.weight', 'backbone.conv1.bn.weight', 'backbone.conv1.bn.bias', ...]
    2. Successful Load Key Num: 642

    这里列出了成功加载的键,这些键代表了模型参数的路径。例如,backbone.conv1.conv.weight代表模型中的一个权重参数。总共成功加载了642个键,这可能意味着这些键对应的参数被成功加载到模型中。

  3. 未能加载的键:

    1. Fail To Load Key: ['yolo_head3.1.weight', 'yolo_head3.1.bias', 'yolo_head2.1.weight', ...]
    2. Fail To Load Key num: 6

    这里列出了未能加载的键,这些键代表了模型参数的路径。例如,yolo_head3.1.weightyolo_head3.1.bias是模型中的权重和偏置参数。总共未能加载6个键,这可能意味着这些键对应的参数未能成功加载到模型中。

    温馨提示:

    温馨提示,head部分没有载入是正常现象,Backbone部分没有载入是错误的。
    

    提示指出,头(head)部分没有载入是正常的,而骨干网络(backbone)部分没有载入是错误的。在YOLO模型中,头部分通常包含用于检测对象的参数,而骨干网络包含用于特征提取的参数。

  4. 配置信息:

    1. Configurations:
    2. ----------------------------------------------------------------------
    3. | keys | values|
    4. ----------------------------------------------------------------------
    5. | classes_path | model_data/voc_classes.txt|
    6. | anchors_path | model_data/yolo_anchors.txt|
    7. | anchors_mask | [[6, 7, 8], [3, 4, 5], [0, 1, 2]]|
    8. | model_path | model_data/yolo4_weights.pth|
    9. | input_shape | [416, 416]|
    10. | Init_Epoch | 0|
    11. | Freeze_Epoch | 50|
    12. | UnFreeze_Epoch | 300|
    13. | Freeze_batch_size | 8|
    14. | Unfreeze_batch_size | 4|
    15. | Freeze_Train | True|
    16. | Init_lr | 0.01|
    17. | Min_lr | 0.0001|
    18. | optimizer_type | sgd|
    19. | momentum | 0.937|
    20. | lr_decay_type | cos|
    21. | save_period | 10|
    22. | save_dir | logs|
    23. | num_workers | 4|
    24. | num_train | 810|
    25. | num_val | 90|
    26. ----------------------------------------------------------------------

    这里列出了模型的配置信息,包括类路径、锚点路径、锚点掩码、模型路径、输入形状、初始化epoch、冻结epoch、解冻epoch、冻结batch大小、解冻batch大小、是否冻结训练、初始学习率、最小学习率、优化器类型、动量、学习率衰减类型、保存周期、保存目录、工作线程数、训练样本数和验证样本数。

  5. 开始训练:

    1. Start Train
    2. Epoch 1/300: 100%|██████████| 101/101 [14:59<00:00,  8.91s/it, loss=6.37, lr=0.000125]
    3. Epoch 1/300:   0%|          | 0/11 [00:00<?, ?it/s]
    4. Finish Train

    开始训练模型的第一个epoch,并显示了进度和损失值。训练完成后,显示了训练时间、迭代数、损失值和当前学习率。

  6. 开始验证:

    1. Start Validation
    2. Epoch 1/300: 100%|██████████| 11/11 [01:32<00:00, 8.41s/it, val_loss=1.74]
    3. Finish Validation

    代码开始验证模型的第一个epoch,并显示了进度和验证损失值。验证完成后,显示了验证时间、迭代数、验证损失值。

  7. 保存最佳模型:

    Save best model to best_epoch_weights.pth
    

    代码将当前epoch中表现最佳的模型保存到best_epoch_weights.pth文件中。

  8. 继续训练:

    1. Start Train
    2. Epoch 2/300: 0%| | 0/101 [00:00<?, ?it/s]
    3. Epoch 2/300: 100%|██████████| 101/101 [14:50<00:00, 8.82s/it, loss=1.62, lr=0.00025]
    4. Epoch 2/300: 0%| | 0/11 [00:00<?, ?it/s]
    5. Finish Train

    代码开始训练模型的第二个epoch,并显示了进度和损失值。训练完成后,显示了训练时间、迭代数、损失值和当前学习率。

  9. 继续验证:

    1. Start Validation
    2. Epoch 2/300: 100%|██████████| 11/11 [01:18<00:00, 7.12s/it, val_loss=0.928]
    3. Finish Validation

    代码开始验证模型的第二个epoch,并显示了进度和验证损失值。验证完成后,显示了验证时间、迭代数、验证损失值。

  10. 保存最佳模型:

    Save best model to best_epoch_weights.pth
    

    代码将当前epoch中表现最佳的模型保存到best_epoch_weights.pth文件中。

因为耐心不足,就只展示了这一部分的结果

 四、测试模型

先跑一下代码,运行predict.py文件,看测试结果怎么样

问题!!第一次运行的时候发现出现了一个的问题,一开始是觉得自己路径中夹杂中文,然后就试了一下把图片放到无中文的路径下,发现还是不行,上网查了一下发现是Pillow用于支持字体渲染的。(好!听不懂这句话,我也听不懂)

知道解决办法就好啦!!重新安装Pillow:首先,尝试卸载当前的Pillow版本,并重新安装一个与您的Python版本兼容的版本。

  1. pip uninstall pillow
  2. pip install pillow

然后就运行出来一下结果啦~~

根据命令行可以看出,该代码输出了检测到的对象及其边界框坐标和置信度。这里,personbicycle是检测到的对象类别,而数字表示对象的置信度。

好像不太理想捏,太晚了,等明天看看今晚电脑关机前能不能有结果吧哈哈哈哈

p2

p3

p4

五、评估

运行get_map.py进行目标检测求目标检测模型的平均精度(mAP)评估结果,结果列出了不同类别的平均精度,以及每个类别的F1分数、召回率和精确度。最后一行显示了所有类别的平均mAP值,即89.41%。

图片直观展示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/819568
推荐阅读
  

闽ICP备14008679号