当前位置:   article > 正文

rt-detr的报错、训练、图片预测和debug_rt-detr运行错误

rt-detr运行错误
  1. conda create -n rtdetr python=3.8
  2. conda activate rtdetr
  3. conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
  4. cd /mnt/Vir_new/RT-DETR-main/rtdetr_pytorch
  5. pip install -r requirement.txt

安装环境,一定要按照官网版本的torch:

conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia

不然会报错:

AttributeError: module 'torchvision' has no attribute 'disable_beta_transforms_warning'

 训练指令:

python tools/train.py -c configs/rtdetr/rtdetr_r50vd_6x_coco.yml

不需要改类别,我以为像detr那样把data_loader的类别改了,就报错咯。不要用改直接训练就行。

数据集路径在:configs/dataset/coco_detection.yml,数据集是coco格式,官网也有格式示例;训练轮数和超参数:configs/rtdetr/include/optimizer.yml;配置文件:configs/rtdetr/rtdetr_r50vd_6x_coco.yml;

导出直接在/mnt/Vir_new/RT-DETR-main/rtdetr_pytorch/tools/export_onnx.py修改模型路径和配置文件路径就行,导出onnx

预测脚本:

  1. import torch
  2. import onnxruntime as ort
  3. from PIL import Image, ImageDraw
  4. from torchvision.transforms import ToTensor
  5. if __name__ == "__main__":
  6. ##################
  7. classes = ['','LicensePlate']
  8. ##################
  9. # print(onnx.helper.printable_graph(mm.graph))
  10. #############
  11. img_path = "/mnt/Vir_new/RT-DETR-main/rtdetr_pytorch/pictures/1.jpg"
  12. #############
  13. im = Image.open(img_path).convert('RGB')
  14. im = im.resize((640, 640))
  15. im_data = ToTensor()(im)[None]
  16. print(im_data.shape)
  17. size = torch.tensor([[640, 640]])
  18. sess = ort.InferenceSession("/mnt/Vir_new/RT-DETR-main/rtdetr_pytorch/onnx_output/model.onnx")
  19. output = sess.run(
  20. # output_names=['labels', 'boxes', 'scores'],
  21. output_names=None,
  22. input_feed={'images': im_data.data.numpy(), "orig_target_sizes": size.data.numpy()}
  23. )
  24. # print(type(output))
  25. # print([out.shape for out in output])
  26. labels, boxes, scores = output
  27. draw = ImageDraw.Draw(im)
  28. thrh = 0.6
  29. for i in range(im_data.shape[0]):
  30. scr = scores[i]
  31. lab = labels[i][scr > thrh]
  32. box = boxes[i][scr > thrh]
  33. print(i, sum(scr > thrh))
  34. #print(lab)
  35. print(f'box:{box}')
  36. for l, b in zip(lab, box):
  37. draw.rectangle(list(b), outline='red',)
  38. print(l.item())
  39. draw.text((b[0], b[1] - 10), text=str(classes[l.item()]), fill='blue', )
  40. #############
  41. im.save('/mnt/Vir_new/RT-DETR-main/rtdetr_pytorch/pictures/1.jpg')
  42. #############

DEDUG:直接在train.py上测试,记得pycharm要在2级目录rtdetr-pytorch打开,不然直接和paddle那个平级目录打开会报错找不到 utils这个模块的。

from .utils import get_activation

还有就是打开咯,还要修改导出的内容,像这样,把导出的包路径写详细一点,不然就会报错。具体就是你直接在文件架上搜索路径,加上去就行。

  1. # from .utils import get_activation 这样会报错
  2. from src.zoo.rtdetr.utils import get_activation 改成这样就行

    还有这样的报错也是导出的包路径不对

from .utils import deformable_attention_core_func, get_activation, inverse_sigmoid
ImportError: attempted relative import with no known parent package
 


更新报错:

Image size (2415329280 pixels) exceeds limit of 178956970 pixels, could be decompression bomb DOS attack.

这个错误我在:①/RT-DETR-main/rtdetr_pytorch/src/solver/solver.py;②/RT-DETR-main/rtdetr_pytorch/src/solver/det_solver.py;这2个文件下导包哪里添加下面代码就解决了。
 

  1. from PIL import ImageFile
  2. from PIL import Image
  3. ImageFile.LOAD_TRUNCATED_IMAGES = True
  4. Image.MAX_IMAGE_PIXELS = None

还有一个问题就是,我做的是文字检测,因为检测框是多边形并不是矩形,就会报错我的宽度低于我的x轴,不记得什么报错内容。这个解决的方法就是把检测框全部转化为矩形,然后每个图片的标注内容都要有单独的id,就是1,2,3这样。

另外一个就是训练时候精度是0 ,是因为我之前把我的类别设置为1,其实要加上背景的,RT-DETR-main/rtdetr_pytorch/configs/dataset/coco_detection.yml这里:
 

  1. num_classes: 2
  2. remap_mscoco_category: False

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

闽ICP备14008679号