Open Ma-Liang-hub opened 1 year ago
试试脚本里面的convert_efficient_to_yolov5函数,需要同时抓一下您训好的ET模型和您原来的那个yolov5模型,重新存成一份新的yolov5可以识别的模型
试试脚本里面的convert_efficient_to_yolov5函数,需要同时抓一下您训好的ET模型和您原来的那个yolov5模型,重新存成一份新的yolov5可以识别的模型
转换的时候报错:ModuleNotFoundError: No module named 'models.detector.yolo_ssod' 我传的参数convert_efficient_to_yolov5(mula_path='best.pt', map_path='map.txt', yolov5_path='/share/disk1/ml/code/yolov5-master/runs/train/exp3/weights/best.pt', save_path='./finish_model/yolov5x.pt') 第一个是训好的ET模型,第三个是原本的yolo模型
知道您的状态了,我来修一下代码 @Ma-Liang-hub
@Ma-Liang-hub 您好,我这边用我们上传的模型转出到标准YOLOv5的格式,用6.2版本的val.py推出来的coco mAP是一致的,您试试。
@Ma-Liang-hub 您好,我这边用我们上传的模型转出到标准YOLOv5的格式,用6.2版本的val.py推出来的coco mAP是一致的,您试试。
可以是可以了,但转出之后map[50:95]从0.618降到了0.478.。。。。。。。太惨了
@Ma-Liang-hub 您好,我这边用我们上传的模型转出到标准YOLOv5的格式,用6.2版本的val.py推出来的coco mAP是一致的,您试试。
我用的也是6.2版本的val.py测的
@Ma-Liang-hub 您好,我这边用我们上传的模型转出到标准YOLOv5的格式,用6.2版本的val.py推出来的coco mAP是一致的,您试试。
我用的也是6.2版本的val.py测的
@Ma-Liang-hub 可能是anchor没有转出来,我转的时候跳过anchor了,您的anchor是重新聚的么,因为我验过coco上的准确率是一模一样的
@Ma-Liang-hub 可能是anchor没有转出来,我转的时候跳过anchor了,您的anchor是重新聚的么,因为我验过coco上的准确率是一模一样的
我用的默认的anchor
@Ma-Liang-hub 可能是anchor没有转出来,我转的时候跳过anchor了,您的anchor是重新聚的么,因为我验过coco上的准确率是一模一样的
我用的默认的anchor
@Ma-Liang-hub 可能是anchor没有转出来,我转的时候跳过anchor了,您的anchor是重新聚的么,因为我验过coco上的准确率是一模一样的
您觉得还可能是因为什么原因呢?我训练测试ET模型和标准yolo模型的conda环境不一样(pytorch版本不一样),这会有影响吗
@Ma-Liang-hub 不太会有影响,我用了两个torch版本的容器分别测过,您两边用的验证时用的conf_thresh和iou_thresh是一样的吗?还有更多的细节能提供给我吗
@Ma-Liang-hub 您好,请问这个问题解决了吗?精度能对上吗
@Ma-Liang-hub 您好,请问这个问题解决了吗?精度能对上吗
您好,还是不太行,我说我的val过程: ET模型val命令:python val.py --cfg configs/ssod/custom/yolov5l_custom_ssod.yaml --weights yolov5_ssod/exp3/weights/best.pt --val-ssod 【参数为默认:nms_conf_thres: 0.1 nms_iou_thres: 0.65】 转出yolov5后val: python val.py --weights ..../yolov5x.pt --data ..../data/coco128.yaml --img 640 --conf-thres 0.1 --iou-thres 0.65 val结果:前者为61.8%;后者为50.2%
@Ma-Liang-hub 您好,我们val的默认参数conf是0.001,所以val.py里也需要加上--conf-thres 0.1 --iou-thres 0.65的命令,完整的命令 是 python val.py --cfg configs/ssod/custom/yolov5l_custom_ssod.yaml --weights yolov5_ssod/exp3/weights/best.pt --val-ssod --conf-thres 0.1 --iou-thres 0.65
您好想问一下您导出的时候出现过这样的情况吗?
您好,日志显示您用来存的那个yolov5模型有80个类,而efficientteacher的模型类别不是80,您需要用标准yolov5在自己数据集上训的pt作为导出时的引导pt
@BowieHsu 您好,我的训练后的类别是2类,我尝试了一下,如果nc=80那么转ET或者转pt都可以,但是目前我的模型只能是nc=2,想问一下这种情况如何转到pt
@Ma-Liang-hub 您好,我们val的默认参数conf是0.001,所以val.py里也需要加上--conf-thres 0.1 --iou-thres 0.65的命令,完整的命令 是 python val.py --cfg configs/ssod/custom/yolov5l_custom_ssod.yaml --weights yolov5_ssod/exp3/weights/best.pt --val-ssod --conf-thres 0.1 --iou-thres 0.65
这下差距变更大了,ET模型上升到64.5%的map
@Ma-Liang-hub 您好,请问这个问题解决了吗?精度能对上吗
当初转ET模型的时候,map转成ET上升了0.7%,半监督训练完成后,相比刚转完的ET模型map提升0.8%,最终转回yolo模型后map狂降13.6%............
@Ma-Liang-hub 您好,请问这个问题解决了吗?精度能对上吗
转出yolo模型这里有个疑惑: yolov5_ckpt['model'] = deepcopy(yolov5_model) yolov5_ckpt['ema'] = deepcopy(yolov5_model)
torch.save(yolov5_ckpt, save_path) 为啥要拷贝两份模型导出呢?
@Ma-Liang-hub 您好想问一下您ET转PT的是怎么操作的?
@Ma-Liang-hub 您好想问一下您ET转PT的是怎么操作的?
就是执行convert_pt_to_efficient.py:convert_efficient_to_yolov5(efficient_path='./best.pt', yolov5_path='./weights/best.pt', save_path='./yolov5x.pt')
您的这个yolov5_path='./weights/best.pt'是之前跑有监督的时候生成的模型吗?我导出之后发现直接放入yolov5的detect无法运行
@Ma-Liang-hub 您好,我参考的是运行完对ckpt的操作,在训练时,会存下每个epoch的model和ema,然后在训练结束后,会把ema的权重赋给model
@Ma-Liang-hub 您好,我参考的是运行完对ckpt的操作,在训练时,会存下每个epoch的model和ema,然后在训练结束后,会把ema的权重赋给model
目前这个代码中有伪标签阈值自适应的功能吗,动态计算的过程在哪里呀,我看了半天代码貌似没找到
请问我转换权重文件这里是不是理解有问题:best.py指官方v5转ET;yolov5s_custom.yaml指只修改过depth_multiple、width_multiple、nc和classes的此代码文件;efficient_v5.pt是转换成ET的权重文件
@delicate00 您好,您的理解是正确的
@delicate00 您好,您的理解是正确的
您好,我需要根据我在官方上改进后训练的配置文件去修改一下 下载et源码中的yolov5s_custom.yaml文件吗?还是说我只需要修改一下“depth_multiple、width_multiple、nc和classes”这些参数即可呢?因为我标准转ET后,用val.py文件验证,各项指标都为0,是跟我用标准训练出来的权重有关系吗?
@BowieHsu 您好,直接进行半监督训练,训练完成后转onxx, 1、直接使用 python export.py --weights yolov5_ssod/exp/weights/best.pt --imgsz 640 --simplify --opset 11 --device 1 --include 'onnx' 2、报错:ONNX: export failure: ONNX export failed: Couldn't export Python operator GradReverse,请问怎么解决? 3、et模型需要先转标准yolov5 然后转onnx?
试试脚本里面的convert_efficient_to_yolov5函数,需要同时抓一下您训好的ET模型和您原来的那个yolov5模型,重新存成一份新的yolov5可以识别的模型
转换的时候报错:ModuleNotFoundError: No module named 'models.detector.yolo_ssod' 我传的参数convert_efficient_to_yolov5(mula_path='best.pt', map_path='map.txt', yolov5_path='/share/disk1/ml/code/yolov5-master/runs/train/exp3/weights/best.pt', save_path='./finish_model/yolov5x.pt') 第一个是训好的ET模型,第三个是原本的yolo模型
老铁,这个报错你怎么解决的
试试脚本里面的convert_efficient_to_yolov5函数,需要同时抓一下您训好的ET模型和您原来的那个yolov5模型,重新存成一份新的yolov5可以识别的模型
转换的时候报错:ModuleNotFoundError: No module named 'models.detector.yolo_ssod' 我传的参数convert_efficient_to_yolov5(mula_path='best.pt', map_path='map.txt', yolov5_path='/share/disk1/ml/code/yolov5-master/runs/train/exp3/weights/best.pt', save_path='./finish_model/yolov5x.pt') 第一个是训好的ET模型,第三个是原本的yolo模型
大佬这个你怎么解决的
跑完半监督学习后,用生成的ET.pt模型跑预测是正常的,但是经过convert_efficient_to_yolov5转换后,在yolov5里跑出来就不对了,我核对了转换结构、权重赋值都没问题,这还有可能是什么造成的?
我用标准yolov5模型转成ET模型训练完成后,如何再转回yolov5模型呢?