赞
踩
目录
1、考虑到不同项目要求环境不同,直接在anaconda下重新创建一个虚拟环境,该环境起名为yolov4:
conda create -n yolov4 python=3.6
激活该环境:
conda activate yolo_env
如需关闭环境,可用如下命令:
conda deactivate
用惯了pycham我就直接在pycham统一搞搞搞了,pycham配置anaconda我就不写了,参考其他的网站吧~~
好人干到底!
还有conda常用命令可以看这篇推文,觉得超详细
Anaconda conda常用命令:从入门到精通_conda命令-CSDN博客https://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
- pip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
- Collecting tensorboard
运行结果图
加载权重:
Load weights model_data/yolo4_weights.pth.
代码开始加载模型权重,这些权重是之前训练好的模型参数,保存在文件model_data/yolo4_weights.pth
中。
成功加载的键:
- Successful Load Key: ['backbone.conv1.conv.weight', 'backbone.conv1.bn.weight', 'backbone.conv1.bn.bias', ...]
- Successful Load Key Num: 642
这里列出了成功加载的键,这些键代表了模型参数的路径。例如,backbone.conv1.conv.weight
代表模型中的一个权重参数。总共成功加载了642个键,这可能意味着这些键对应的参数被成功加载到模型中。
未能加载的键:
- Fail To Load Key: ['yolo_head3.1.weight', 'yolo_head3.1.bias', 'yolo_head2.1.weight', ...]
- Fail To Load Key num: 6
这里列出了未能加载的键,这些键代表了模型参数的路径。例如,yolo_head3.1.weight
和yolo_head3.1.bias
是模型中的权重和偏置参数。总共未能加载6个键,这可能意味着这些键对应的参数未能成功加载到模型中。
温馨提示:
温馨提示,head部分没有载入是正常现象,Backbone部分没有载入是错误的。
提示指出,头(head)部分没有载入是正常的,而骨干网络(backbone)部分没有载入是错误的。在YOLO模型中,头部分通常包含用于检测对象的参数,而骨干网络包含用于特征提取的参数。
配置信息:
- Configurations:
- ----------------------------------------------------------------------
- | keys | values|
- ----------------------------------------------------------------------
- | classes_path | model_data/voc_classes.txt|
- | anchors_path | model_data/yolo_anchors.txt|
- | anchors_mask | [[6, 7, 8], [3, 4, 5], [0, 1, 2]]|
- | model_path | model_data/yolo4_weights.pth|
- | input_shape | [416, 416]|
- | Init_Epoch | 0|
- | Freeze_Epoch | 50|
- | UnFreeze_Epoch | 300|
- | Freeze_batch_size | 8|
- | Unfreeze_batch_size | 4|
- | Freeze_Train | True|
- | Init_lr | 0.01|
- | Min_lr | 0.0001|
- | optimizer_type | sgd|
- | momentum | 0.937|
- | lr_decay_type | cos|
- | save_period | 10|
- | save_dir | logs|
- | num_workers | 4|
- | num_train | 810|
- | num_val | 90|
- ----------------------------------------------------------------------
这里列出了模型的配置信息,包括类路径、锚点路径、锚点掩码、模型路径、输入形状、初始化epoch、冻结epoch、解冻epoch、冻结batch大小、解冻batch大小、是否冻结训练、初始学习率、最小学习率、优化器类型、动量、学习率衰减类型、保存周期、保存目录、工作线程数、训练样本数和验证样本数。
开始训练:
- Start Train
- Epoch 1/300: 100%|██████████| 101/101 [14:59<00:00, 8.91s/it, loss=6.37, lr=0.000125]
- Epoch 1/300: 0%| | 0/11 [00:00<?, ?it/s]
- Finish Train
开始训练模型的第一个epoch,并显示了进度和损失值。训练完成后,显示了训练时间、迭代数、损失值和当前学习率。
开始验证:
- Start Validation
- Epoch 1/300: 100%|██████████| 11/11 [01:32<00:00, 8.41s/it, val_loss=1.74]
- Finish Validation
代码开始验证模型的第一个epoch,并显示了进度和验证损失值。验证完成后,显示了验证时间、迭代数、验证损失值。
保存最佳模型:
Save best model to best_epoch_weights.pth
代码将当前epoch中表现最佳的模型保存到best_epoch_weights.pth
文件中。
继续训练:
- Start Train
- Epoch 2/300: 0%| | 0/101 [00:00<?, ?it/s]
- Epoch 2/300: 100%|██████████| 101/101 [14:50<00:00, 8.82s/it, loss=1.62, lr=0.00025]
- Epoch 2/300: 0%| | 0/11 [00:00<?, ?it/s]
- Finish Train
代码开始训练模型的第二个epoch,并显示了进度和损失值。训练完成后,显示了训练时间、迭代数、损失值和当前学习率。
继续验证:
- Start Validation
- Epoch 2/300: 100%|██████████| 11/11 [01:18<00:00, 7.12s/it, val_loss=0.928]
- Finish Validation
代码开始验证模型的第二个epoch,并显示了进度和验证损失值。验证完成后,显示了验证时间、迭代数、验证损失值。
保存最佳模型:
Save best model to best_epoch_weights.pth
代码将当前epoch中表现最佳的模型保存到best_epoch_weights.pth
文件中。
因为耐心不足,就只展示了这一部分的结果
先跑一下代码,运行predict.py文件,看测试结果怎么样
问题!!第一次运行的时候发现出现了一个的问题,一开始是觉得自己路径中夹杂中文,然后就试了一下把图片放到无中文的路径下,发现还是不行,上网查了一下发现是Pillow用于支持字体渲染的。(好!听不懂这句话,我也听不懂)
知道解决办法就好啦!!重新安装Pillow:首先,尝试卸载当前的Pillow版本,并重新安装一个与您的Python版本兼容的版本。
- pip uninstall pillow
- pip install pillow
然后就运行出来一下结果啦~~
根据命令行可以看出,该代码输出了检测到的对象及其边界框坐标和置信度。这里,person
和bicycle
是检测到的对象类别,而数字表示对象的置信度。
好像不太理想捏,太晚了,等明天看看今晚电脑关机前能不能有结果吧哈哈哈哈
p2
p3
p4
运行get_map.py进行目标检测求目标检测模型的平均精度(mAP)评估结果,结果列出了不同类别的平均精度,以及每个类别的F1分数、召回率和精确度。最后一行显示了所有类别的平均mAP值,即89.41%。
图片直观展示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。