AlibabaResearch / efficientteacher

A Supervised and Semi-Supervised Object Detection Library for YOLO Series
GNU General Public License v3.0
823 stars 149 forks source link

训练自己数据集过程中P/R成0了是哪里参数配错了吗? #98

Open guixuef opened 1 year ago

guixuef commented 1 year ago

QQ20230610-0

训练自己数据集过程中P/R成0了是哪里参数配错了吗? 1.我用yolov5,训练了5个epochs全监督学习,得到一个权重custom_best.pt; 2.我将这个权重通过 convert_pt_to_efficient.py 转换成 efficient-yolov5s.pt; 3.通过 find -name "*.jpg" >> unlabel.txt 生成对应的伪标签txt文件

  1. 参考 configs/ssod/custom/yolov5l_custom_ssod.yaml 自定义一份 yolov5s_custom_ssod.yaml 配置数据,weights是efficient-yolov5s.pt, epochs = 50 默认burn_epochs 为 10;
Shuixin-Li commented 1 year ago

请问这个burn-in 是有监督学习的吗

qqssffgg commented 1 year ago

请问第三步是怎么实现的,无标签数据之怎么弄的,这个不是太懂

Shuixin-Li commented 1 year ago

请问第三步是怎么实现的,无标签数据之怎么弄的,这个不是太懂

我是把所有无标签的图片的地址放到了一个txt里面,这也就是find命令在做的事情

qqssffgg commented 1 year ago

谢谢谢谢 那无标签数据可以是val吗 1686909626422 wo'xian'zai我现在在训练着我使用的是voc2007数据 1686909686575 刚开始和你的差不多基本都是零

Shuixin-Li commented 1 year ago

谢谢谢谢 那无标签数据可以是val吗

1686909626422

wo'xian'zai我现在在训练着我使用的是voc2007数据

1686909686575

刚开始和你的差不多基本都是零

我没有是0,0的应该是这个问题的提问者。我的理解是:无标签不能作为val...无标签就是无标签,train val都有标签

Shuixin-Li commented 1 year ago

嗯等一下,你说的0是fp那里吗,我一开始也是这样的诶!

qqssffgg commented 1 year ago

是的,无标签数据是我搞错了,我换一个数据集再试一下,谢谢啦

Shuixin-Li commented 1 year ago

是的,无标签数据是我搞错了,我换一个数据集再试一下,谢谢啦

我其实很想知道fp_cls=0是不是不好的意思,如果你弄明白了可以好心告诉我吗~提前谢谢你了 :)

qqssffgg commented 1 year ago

你可以问一下gpt,当在训练半监督目标检测模型时设置fp_cls=0,通常意味着不能有效利用未标注的数据来提高模型性能,这是不好的。半监督目标检测方法的一个关键目标是利用未标注的图像来提高模型性能,这是通过加入伪标签来实现的。如果fp_cls=0,则未标注数据中的所有预测都被视为负类,这会过滤掉很多有用的伪标签,导致未标注数据的信息未能充分利用,从而限制了模型的性能提升。因此,在使用半监督学习方法时,应该合理设置fp_cls的值以提高学习性能。这是gpt的答案  

1403038232 @.***

 

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年6月16日(星期五) 晚上6:12 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [AlibabaResearch/efficientteacher] 训练自己数据集过程中P/R成0了是哪里参数配错了吗? (Issue #98)

是的,无标签数据是我搞错了,我换一个数据集再试一下,谢谢啦

我其实很想知道fp_cls=0是不是不好的意思,如果你弄明白了可以好心告诉我吗~提前谢谢你了 :)

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

Shuixin-Li commented 1 year ago

我也遇到了这个问题,我另外还遇到了一个问题

Traceback (most recent call last):
  File "train.py", line 84, in <module>
    main(opt)
  File "train.py", line 76, in main
    trainer.train(callbacks, val)
  File "/home/sli/Documents/efficientteacher/trainer/trainer.py", line 539, in train
    results = self.after_train(callbacks, val)
  File "/home/sli/Documents/efficientteacher/trainer/ssod_trainer.py", line 560, in after_train
    val_kp=self.cfg.Dataset.val_kp)  # val best model with plots
  File "/home/sli/anaconda3/envs/yolov5/lib/python3.7/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/home/sli/Documents/efficientteacher/val.py", line 383, in run
    callbacks.run('on_val_image_end', pred, predn, path, names, img[si])
  File "/home/sli/Documents/efficientteacher/utils/callbacks.py", line 76, in run
    logger['callback'](*args, **kwargs)
  File "/home/sli/Documents/efficientteacher/utils/loggers/__init__.py", line 103, in on_val_image_end
    self.wandb.val_one_image(pred, predn, path, names, im)
  File "/home/sli/Documents/efficientteacher/utils/loggers/wandb/wandb_utils.py", line 472, in val_one_image
    self.bbox_media_panel_images.append(wandb.Image(im, boxes=boxes, caption=path.name))
  File "/home/sli/anaconda3/envs/yolov5/lib/python3.7/site-packages/wandb/sdk/data_types/image.py", line 164, in __init__
    self._set_initialization_meta(grouping, caption, classes, boxes, masks)
  File "/home/sli/anaconda3/envs/yolov5/lib/python3.7/site-packages/wandb/sdk/data_types/image.py", line 192, in _set_initialization_meta
    boxes_final[key] = BoundingBoxes2D(box_item, key)
  File "/home/sli/anaconda3/envs/yolov5/lib/python3.7/site-packages/wandb/sdk/data_types/helper_types/bounding_boxes_2d.py", line 181, in __init__
    super().__init__(val)
  File "/home/sli/anaconda3/envs/yolov5/lib/python3.7/site-packages/wandb/sdk/data_types/base_types/json_metadata.py", line 30, in __init__
    self.validate(val)
  File "/home/sli/anaconda3/envs/yolov5/lib/python3.7/site-packages/wandb/sdk/data_types/helper_types/bounding_boxes_2d.py", line 226, in validate
    "Class labels must be a dictionary of numbers to string"
TypeError: Class labels must be a dictionary of numbers to string

我的yaml file 对于class的定义格式是 names: ['-', 'a', 'b', 'c']

hecheng000 commented 2 months ago

请问我训练时的验证指标也都为0是什么情况