Giter Club home page Giter Club logo

yolov7-pytorch's Introduction

YOLOV7:You Only Look Once目标检测模型在pytorch当中的实现


目录

  1. 仓库更新 Top News
  2. 相关仓库 Related code
  3. 性能情况 Performance
  4. 所需环境 Environment
  5. 文件下载 Download
  6. 训练步骤 How2train
  7. 预测步骤 How2predict
  8. 评估步骤 How2eval
  9. 参考资料 Reference

Top News

2022-07:仓库创建,支持step、cos学习率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整、新增图片裁剪、支持多GPU训练、支持各个种类目标数量计算、支持heatmap、支持EMA。

相关仓库

模型 路径
YoloV3 https://github.com/bubbliiiing/yolo3-pytorch
Efficientnet-Yolo3 https://github.com/bubbliiiing/efficientnet-yolo3-pytorch
YoloV4 https://github.com/bubbliiiing/yolov4-pytorch
YoloV4-tiny https://github.com/bubbliiiing/yolov4-tiny-pytorch
Mobilenet-Yolov4 https://github.com/bubbliiiing/mobilenet-yolov4-pytorch
YoloV5-V5.0 https://github.com/bubbliiiing/yolov5-pytorch
YoloV5-V6.1 https://github.com/bubbliiiing/yolov5-v6.1-pytorch
YoloX https://github.com/bubbliiiing/yolox-pytorch
YoloV7 https://github.com/bubbliiiing/yolov7-pytorch
YoloV7-tiny https://github.com/bubbliiiing/yolov7-tiny-pytorch

性能情况

训练数据集 权值文件名称 测试数据集 输入图片大小 mAP 0.5:0.95 mAP 0.5
COCO-Train2017 yolov7_weights.pth COCO-Val2017 640x640 50.7 69.2
COCO-Train2017 yolov7_x_weights.pth COCO-Val2017 640x640 52.4 70.5

所需环境

torch==1.2.0
为了使用amp混合精度,推荐使用torch1.7.1以上的版本。

文件下载

训练所需的权值可在百度网盘中下载。
链接: https://pan.baidu.com/s/1uYpjWC1uOo3Q-klpUEy9LQ
提取码: pmua

VOC数据集下载地址如下,里面已经包括了训练集、测试集、验证集(与测试集一样),无需再次划分:
链接: https://pan.baidu.com/s/19Mw2u_df_nBzsC2lg20fQA
提取码: j5ge

训练步骤

a、训练VOC07+12数据集

  1. 数据集的准备
    本文使用VOC格式进行训练,训练前需要下载好VOC07+12的数据集,解压后放在根目录

  2. 数据集的处理
    修改voc_annotation.py里面的annotation_mode=2,运行voc_annotation.py生成根目录下的2007_train.txt和2007_val.txt。

  3. 开始网络训练
    train.py的默认参数用于训练VOC数据集,直接运行train.py即可开始训练。

  4. 训练结果预测
    训练结果预测需要用到两个文件,分别是yolo.py和predict.py。我们首先需要去yolo.py里面修改model_path以及classes_path,这两个参数必须要修改。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

b、训练自己的数据集

  1. 数据集的准备
    本文使用VOC格式进行训练,训练前需要自己制作好数据集,
    训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
    训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

  2. 数据集的处理
    在完成数据集的摆放之后,我们需要利用voc_annotation.py获得训练用的2007_train.txt和2007_val.txt。
    修改voc_annotation.py里面的参数。第一次训练可以仅修改classes_path,classes_path用于指向检测类别所对应的txt。
    训练自己的数据集时,可以自己建立一个cls_classes.txt,里面写自己所需要区分的类别。
    model_data/cls_classes.txt文件内容为:

cat
dog
...

修改voc_annotation.py中的classes_path,使其对应cls_classes.txt,并运行voc_annotation.py。

  1. 开始网络训练
    训练的参数较多,均在train.py中,大家可以在下载库后仔细看注释,其中最重要的部分依然是train.py里的classes_path。
    classes_path用于指向检测类别所对应的txt,这个txt和voc_annotation.py里面的txt一样!训练自己的数据集必须要修改!
    修改完classes_path后就可以运行train.py开始训练了,在训练多个epoch后,权值会生成在logs文件夹中。

  2. 训练结果预测
    训练结果预测需要用到两个文件,分别是yolo.py和predict.py。在yolo.py里面修改model_path以及classes_path。
    model_path指向训练好的权值文件,在logs文件夹里。
    classes_path指向检测类别所对应的txt。

    完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。

预测步骤

a、使用预训练权重

  1. 下载完库后解压,在百度网盘下载权值,放入model_data,运行predict.py,输入
img/street.jpg
  1. 在predict.py里面进行设置可以进行fps测试和video视频检测。

b、使用自己训练的权重

  1. 按照训练步骤训练。
  2. 在yolo.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类
_defaults = {
    #--------------------------------------------------------------------------#
    #   使用自己训练好的模型进行预测一定要修改model_path和classes_path!
    #   model_path指向logs文件夹下的权值文件,classes_path指向model_data下的txt
    #
    #   训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。
    #   验证集损失较低不代表mAP较高,仅代表该权值在验证集上泛化性能较好。
    #   如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改
    #--------------------------------------------------------------------------#
    "model_path"        : 'model_data/yolov7_weights.pth',
    "classes_path"      : 'model_data/coco_classes.txt',
    #---------------------------------------------------------------------#
    #   anchors_path代表先验框对应的txt文件,一般不修改。
    #   anchors_mask用于帮助代码找到对应的先验框,一般不修改。
    #---------------------------------------------------------------------#
    "anchors_path"      : 'model_data/yolo_anchors.txt',
    "anchors_mask"      : [[6, 7, 8], [3, 4, 5], [0, 1, 2]],
    #---------------------------------------------------------------------#
    #   输入图片的大小,必须为32的倍数。
    #---------------------------------------------------------------------#
    "input_shape"       : [640, 640],
    #------------------------------------------------------#
    #   所使用到的yolov7的版本,本仓库一共提供两个:
    #   l : 对应yolov7
    #   x : 对应yolov7_x
    #------------------------------------------------------#
    "phi"               : 'l',
    #---------------------------------------------------------------------#
    #   只有得分大于置信度的预测框会被保留下来
    #---------------------------------------------------------------------#
    "confidence"        : 0.5,
    #---------------------------------------------------------------------#
    #   非极大抑制所用到的nms_iou大小
    #---------------------------------------------------------------------#
    "nms_iou"           : 0.3,
    #---------------------------------------------------------------------#
    #   该变量用于控制是否使用letterbox_image对输入图像进行不失真的resize,
    #   在多次测试后,发现关闭letterbox_image直接resize的效果更好
    #---------------------------------------------------------------------#
    "letterbox_image"   : True,
    #-------------------------------#
    #   是否使用Cuda
    #   没有GPU可以设置成False
    #-------------------------------#
    "cuda"              : True,
}
  1. 运行predict.py,输入
img/street.jpg
  1. 在predict.py里面进行设置可以进行fps测试和video视频检测。

评估步骤

a、评估VOC07+12的测试集

  1. 本文使用VOC格式进行评估。VOC07+12已经划分好了测试集,无需利用voc_annotation.py生成ImageSets文件夹下的txt。
  2. 在yolo.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
  3. 运行get_map.py即可获得评估结果,评估结果会保存在map_out文件夹中。

b、评估自己的数据集

  1. 本文使用VOC格式进行评估。
  2. 如果在训练前已经运行过voc_annotation.py文件,代码会自动将数据集划分成训练集、验证集和测试集。如果想要修改测试集的比例,可以修改voc_annotation.py文件下的trainval_percent。trainval_percent用于指定(训练集+验证集)与测试集的比例,默认情况下 (训练集+验证集):测试集 = 9:1。train_percent用于指定(训练集+验证集)中训练集与验证集的比例,默认情况下 训练集:验证集 = 9:1。
  3. 利用voc_annotation.py划分测试集后,前往get_map.py文件修改classes_path,classes_path用于指向检测类别所对应的txt,这个txt和训练时的txt一样。评估自己的数据集必须要修改。
  4. 在yolo.py里面修改model_path以及classes_path。model_path指向训练好的权值文件,在logs文件夹里。classes_path指向检测类别所对应的txt。
  5. 运行get_map.py即可获得评估结果,评估结果会保存在map_out文件夹中。

Reference

https://github.com/WongKinYiu/yolov7

yolov7-pytorch's People

Contributors

bubbliiiing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

yolov7-pytorch's Issues

训练过程出错

您好 老师 我在训练100个epoch后会出现一个问题。
CPU: registered at aten\src\ATen\RegisterCPU.cpp:16286 [kernel]
CUDA: registered at aten\src\ATen\RegisterCUDA.cpp:20674 [kernel]
QuantizedCPU: registered at aten\src\ATen\RegisterQuantizedCPU.cpp:1025 [kernel]
BackendSelect: fallthrough registered at ..\aten\src\ATen\core\BackendSelectFallbackKernel.cpp:3 [backend fallback]
Named: registered at ..\aten\src\ATen\core\NamedRegistrations.cpp:7 [backend fallback]
ADInplaceOrView: fallthrough registered at ..\aten\src\ATen\core\VariableFallbackKernel.cpp:60 [backend fallback]
AutogradOther: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradCPU: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradCUDA: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradXLA: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
UNKNOWN_TENSOR_TYPE_ID: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradMLC: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradHPU: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradNestedTensor: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradPrivateUse1: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradPrivateUse2: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
AutogradPrivateUse3: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:9928 [autograd kernel]
Tracer: registered at ..\torch\csrc\autograd\generated\TraceType_2.cpp:9621 [kernel]
Autocast: registered at ..\aten\src\ATen\autocast_mode.cpp:259 [kernel]
Batched: registered at ..\aten\src\ATen\BatchingRegistrations.cpp:1019 [backend fallback]
VmapMode: fallthrough registered at ..\aten\src\ATen\VmapModeRegistrations.cpp:33 [backend fallback]

请问这是什么问题呢

special_aug_ratio

我想知道官方的yolov7有special_aug_ratio这个功能吗,就是在最后的30个epoch关闭数据增强

FPS问题

1658556090513
当我运行predict.py 预测video时 它的的fps很低,请问怎样可以提高呢

map恒为零

up你好,我再用这份代码训练我自己的数据集的时候出现map一直为零
使用Voc annoations可以检测到类别 想问一下是什么原因 是需要改动哪里吗
数据集在其他网络是可以正常检测到的

利用BDD100K数据集训练YOLOV7,loss经过2个epoch就下降到0.1。

B导好,我使用默认参数训练BDD100K数据集,LOSS起始值在4左右,在1个epoch(约8000个step)就下降到了0.1,随后一直维持在0.1不会继续下降。但是eval的结果很差。
当我使用同样的数据集训练之前您的YOLOX-pytorch时则不会有这样的问题,起始loss为20左右,1个epoch下降到5.7左右,并且会正常继续下降。
请问我需要怎么调整可以解决这一问题呢?

模型部署

请问大佬有没有尝试过 将yolov7的模型Tensorrt 直接部署在arm (eg:jeston) 上

泡泡老师,训练的时候出现一些疑问

  1. 用公开数据集也测试了泡泡老师的复现仓库和官方的仓库,训练最终收敛效果差不多,但复现的版本训练收敛速度比较慢
  2. 用自己的数据集在tiny版本上测试,一直没有收敛到官方仓库的效果(官方大概map40,复现仓库map10多)

sgd和adam都测试过了,训练了200多个epoch,看收敛曲线都已经收敛了,其他参数也是默认的,数据增强也和官方保持了一致,看了v7-tiny的loss计算都是和官方一致的,请问还有哪些点可以排查的。(同一个数据集用您复现的其他算法仓库跑都是没问题的,应该可以排除数据的问题)加不加载权重都测试过了,还是收敛的不好

泡泡老师,我使用adam优化的时候,报错

泡泡老师,我使用adam优化的时候,pytorch 版本是1.7.1 ,报错
RuntimeError: CUDA error: device-side assert triggered

C:/w/1/s/tmp_conda_3.7_055457/conda/conda-bld/pytorch_1565416617654/work/aten/src/ATen/native/cuda/IndexKernel.cu:60: block: [0,0,0], thread: [0,0,0] Assertion index >= -sizes[i] && index < sizes[i] && "index out of bounds" failed.
C:/w/1/s/tmp_conda_3.7_055457/conda/conda-bld/pytorch_1565416617654/work/aten/src/ATen/native/cuda/IndexKernel.cu:60: block: [0,0,0], thread: [1,0,0] Assertion index >= -sizes[i] && index < sizes[i] && "index out of bounds" failed.

预训练权重

up我想问下这预训练权重是在cooc数据集上的吗

预测会有问题,我图片大小为1400x120

RuntimeError: Error(s) in loading state_dict for YoloBody:
size mismatch for yolo_head_P3.weight: copying a param with shape torch.Size([18, 256, 1, 1]) from checkpoint, the shape in current model is torch.Size([255, 256, 1, 1]).
size mismatch for yolo_head_P3.bias: copying a param with shape torch.Size([18]) from checkpoint, the shape in current model is torch.Size([255]).
size mismatch for yolo_head_P4.weight: copying a param with shape torch.Size([18, 512, 1, 1]) from checkpoint, the shape in current model is torch.Size([255, 512, 1, 1]).
size mismatch for yolo_head_P4.bias: copying a param with shape torch.Size([18]) from checkpoint, the shape in current model is torch.Size([255]).
size mismatch for yolo_head_P5.weight: copying a param with shape torch.Size([18, 1024, 1, 1]) from checkpoint, the shape in current model is torch.Size([255, 1024, 1, 1]).
size mismatch for yolo_head_P5.bias: copying a param with shape torch.Size([18]) from checkpoint, the shape in current model is torch.Size([255]).
训练完进行预测会出现这种情况

train.py的时候报错,这个问题改如何解决

`Start Train
Epoch 1/300: 0%| | 0/168 [00:00<?, ?it/s<class 'dict'>]Traceback (most recent call last):
File "train.py", line 552, in
fit_one_epoch(model_train, model, ema, yolo_loss, loss_history, eval_callback, optimizer, epoch, epoch_step, epoch_step_val, gen, gen_val, UnFreeze_Epoch, Cuda, fp16, scaler, save_period, save_dir, local_rank)
File "D:\fod_tracking\pytorch-yolov7-deepsort-master\detector\yolov7\utils\utils_fit.py", line 34, in fit_one_epoch
loss_value = yolo_loss(outputs, targets, images)
File "D:\fod_tracking\pytorch-yolov7-deepsort-master\detector\yolov7\nets\yolo_training.py", line 104, in call
bs, as_, gjs, gis, targets, anchors = self.build_targets(predictions, targets, imgs)
File "D:\fod_tracking\pytorch-yolov7-deepsort-master\detector\yolov7\nets\yolo_training.py", line 406, in build_targets
matching_bs[i] = torch.cat(matching_bs[i], dim=0)
RuntimeError: There were no tensor arguments to this function (e.g., you passed an empty list of Tensors), but no fallback function is registered for schema aten::_cat. This usually means that this function requires a non-empty list of Tensors. Available functions are [CPU, CUDA, QuantizedCPU, BackendSelect, Named, AutogradOther, AutogradCPU, AutogradCUDA, AutogradXLA, AutogradPrivateUse1, AutogradPrivateUse2, AutogradPrivateUse3, Tracer, Autocast, Batched, VmapMode].

CPU: registered at aten\src\ATen\CPUType.cpp:2127 [kernel]
CUDA: registered at aten\src\ATen\CUDAType.cpp:2983 [kernel]
QuantizedCPU: registered at aten\src\ATen\QuantizedCPUType.cpp:297 [kernel]
BackendSelect: fallthrough registered at ..\aten\src\ATen\core\BackendSelectFallbackKernel.cpp:3 [backend fallback]
Named: registered at ..\aten\src\ATen\core\NamedRegistrations.cpp:7 [backend fallback]
AutogradOther: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
AutogradCPU: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
AutogradCUDA: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
AutogradXLA: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
AutogradPrivateUse1: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
AutogradPrivateUse2: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
AutogradPrivateUse3: registered at ..\torch\csrc\autograd\generated\VariableType_2.cpp:8078 [autograd kernel]
Tracer: registered at ..\torch\csrc\autograd\generated\TraceType_2.cpp:9654 [kernel]
Autocast: registered at ..\aten\src\ATen\autocast_mode.cpp:258 [kernel]
Batched: registered at ..\aten\src\ATen\BatchingRegistrations.cpp:511 [backend fallback]
VmapMode: fallthrough registered at ..\aten\src\ATen\VmapModeRegistrations.cpp:33 [backend fallback]

Epoch 1/300: 0%| | 0/168 [00:06<?, ?it/s<class 'dict'>]`

导出onnx问题

B导 你这个转成onnx的代码好像只能输出1class.size+520*20的那一层,好像转成onnx得在网络输出的时候把三个输出cat一下

检测结果出错

截屏2022-07-15 17 10 56

最后一步运行predict.py的时候终端里没有输入图片路径的地方,并且出来的图片上每个类别都有特别多的目标框,看起来像是没有进行nms一样 这是我限制类别之后生成的图片

求助!train.py报错!

求助!train.py始终跑不起来,报错内容为“RuntimeError: Expected a 'cpu' device type for generator but found 'cuda'”,请问大家有遇到类似问题吗,感谢指点!

low mAP

Hi b导!
请问下不管是否加载预训练模型,训练自己的voc数据集(900张)时,mAP都是0,怎么解决?
数据分类已经改了。
我看到很多人都提到这个问题了,不晓得咋解决撒。

a little problem

when i train the yolov7, pycharm show the flowing the text :
RuntimeError: Encountering a dict at the output of the tracer might cause the trace to be incorrect, this is only valid if the container structure does not change based on the module’s inputs. Consider using a constant container instead (e.g. for list, use a tuple instead. for dict, use a NamedTuple instead). If you absolutely need this and know the side effects, pass strict=False to trace() to allow this behavior.
But ,the traing dont stop ,so, what's the prolbem, and how i can improve the code?

No module named 'models'

python predict.py
/home/nano/.local/lib/python3.10/site-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: /home/nano/.local/lib/python3.10/site-packages/torchvision/image.so: undefined symbol: _ZNK3c1010TensorImpl36is_contiguous_nondefault_policy_implENS_12MemoryFormatE
warn(f"Failed to load image Python extension: {e}")
Traceback (most recent call last):
File "/home/nano/study/yolov7-pytorch/predict.py", line 14, in
yolo = YOLO()
File "/home/nano/study/yolov7-pytorch/yolo.py", line 95, in init
self.generate()
File "/home/nano/study/yolov7-pytorch/yolo.py", line 108, in generate
self.net.load_state_dict(torch.load(self.model_path, map_location=device))
File "/usr/lib/python3.10/site-packages/torch/serialization.py", line 712, in load
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
File "/usr/lib/python3.10/site-packages/torch/serialization.py", line 1049, in _load
result = unpickler.load()
File "/usr/lib/python3.10/site-packages/torch/serialization.py", line 1042, in find_class
return super().find_class(mod_name, name)
ModuleNotFoundError: No module named 'models'

网上搜的解决方法看不太懂,而且有很多是无效的。。。
这个怎么解决?

The .grad attribute of a Tensor that is not a leaf Tensor is being accessed.

C:\Users\presa\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\torch_tensor.py:1083: UserWarning: The .grad attribute of a Tensor that is not a leaf Tensor is being accessed. Its .grad attribute won't be populated during autograd.backward(). If you indeed want the .grad field to be populated for a non-leaf Tensor, use .retain_grad() on the non-leaf Tensor. If you access the non-leaf Tensor by mistake, make sure you access the leaf Tensor instead. See github.com/pytorch/pytorch/pull/30531 for more informations. (Triggered internally at C:\actions-runner_work\pytorch\pytorch\builder\windows\pytorch\build\aten\src\ATen/core/TensorBody.h:482.)
return self._grad

运行会出现这个警告,不影响正常推理,请问这个怎么可以解决呢?
版本1.12.1+cu116

train.py报错

导,自己的数据集和voc数据集都报这个错,是哪里出问题了呢
image

路径没改,我的问题

关于库中map的问题

up主,我对你YOLOv7库中的各个map值描述的对象不是很明白。①:train.py文件生成的epoch_map.png是基于train.txt 描述训练集的吗,运行过程中终端输出的map值描述的又是啥?②:get_map.py文件生成的map是基于测试集描述预测效果的吗?③:以上问题的回答是否适用于up主YOLO系列的其他库?

泡泡哥,想问一下多类别不收敛的问题(mAP较低)

123

比如人的行为,确实很难区分(毕竟这个人一直没变但是做出了不同的行为)。mAP的值很低,前天拿一样的数据集跑泡泡的yolox也是lie这个类别map比较高,但是别的类别map很差。是泡泡的版本和官方不同导致的吗,感觉不可能吧。求解答

执行predict.py报错size mismatch(使用预训练权重,并且将classes_path由您的默认coco_classes.txt改成了voc_classes.txt)

博主,您好。
使用这个项目中的predict.py时,我先检查了yolo.py中的classes_path这个参数:我发现您默认设置的是"classes_path" : 'model_data/coco_classes.txt'。因为我是使用您提供的预训练权重去做执行预测脚本,我看到README中说这个项目默认训练VOC数据集,所以我就想着把classes_path改成了'model_data/voc_classes.txt',改了以后执行predict.py,却出现报错:
size mismatch for yolo_head_P5.bias: copying a param with shape torch.Size([255]) from checkpoint, the shape in current model is torch.Size([75]).
......
就是报错了n条mismatch的error。

我只好将classes_path改回'model_data/coco_classes.txt',再运行predict.py,就能正常运行了。请问博主,这是为什么呢?难道是因为我现在执行预测脚本用的预训练权重是由COCO数据集得到的吗

v5和v7的性能差异

大佬你好,我用预训练好的权重在Exdark数据集上微调,3000张训练图片,1800测试图片,epoch=120,冻结轮数为0,优化器是adam。但是在v7上的结果比在v5上的差,大概低了5个点。这是为什么呢?

损失值变零

你好请问下训练第七次时,验证损失和训练损失都变成零了是什么原因呢

在跑NWPU-VHR-10数据集时出现的问题

Traceback (most recent call last):
File "E:/Python_3/yolov7-pytorch-master/train.py", line 552, in
fit_one_epoch(model_train, model, ema, yolo_loss, loss_history, eval_callback, optimizer, epoch, epoch_step, epoch_step_val, gen, gen_val, UnFreeze_Epoch, Cuda, fp16, scaler, save_period, save_dir, local_rank)
File "E:\Python_3\yolov7-pytorch-master\utils\utils_fit.py", line 48, in fit_one_epoch
loss_value = yolo_loss(outputs, targets, images)
File "E:\Python_3\yolov7-pytorch-master\nets\yolo_training.py", line 104, in call
bs, as_, gjs, gis, targets, anchors = self.build_targets(predictions, targets, imgs)
File "E:\Python_3\yolov7-pytorch-master\nets\yolo_training.py", line 406, in build_targets
matching_bs[i] = torch.cat(matching_bs[i], dim=0)
RuntimeError: torch.cat(): expected a non-empty list of Tensors
出现这样的问题会和数据集中尺寸大小数量有关系吗?我调了一下输入尺寸也还是会报同样错误。如果不是,请教一下有什么解决办法呢,因为看了一些博客但是里面都没有说明具体原因。谢谢

评估时候报错

ValueError: Cannot assign non-leaf Tensor to parameter 'weight'. Model parameters must be created explicitly. To express 'weight' as a function of another Tensor, compute the value in the forward() method.

权值问题

b导好,请问现在是只有yolov7的l和x的模型和骨干权值吗?比如s什么的都还没有是么

YOLOv6

您有考虑复现YOLOv6吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.