[ultralytics/yolov5]如何训练图片尺寸为(640,480)的模型

2024-03-05 775 views
9
问题

目前官方的模型训练的尺寸是托盘尺寸,如何训练修改为长方形(640,480)尺寸的模型?

回答

3

@xingjunhong 你好,

要训​​练矩形形状(例如(640, 480))的YOLOv5模型,可以修改训练配置文件中的输入大小。只需编辑文件部分--img中的参数即可指定所需的尺寸(例如,)。这将确保在训练期间将输入图像的大小调整为指定的尺寸。--hypyaml--img: '640, 480'

请注意,修改输入大小可能会影响模型的性能和准确性,因此尝试不同的大小并相应地评估结果非常重要。

如果您还有任何疑问或遇到任何问题,请随时询问。

最好的问候, 格伦·乔彻

2

修改这个参数后,会出现报错。 parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=[640, 480], help='train, val 图像大小(像素)')

回溯(最近一次调用最后一次):文件“train.py”,第 634 行,位于 main(opt) 文件“train.py”,第 528 行,在主列车中(opt.hyp、opt、设备、回调) 文件“train.py”,第 283 行,在火车 i 中,(imgs、目标、路径、 _) in pbar: # 批处理 ------------------------------------------------------ ------------------ 文件“/mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/tqdm/std.py ”,第 1195 行,在可迭代中的 obj 的iter中 :文件“/mnt/hdd2/extension/xingjh/02.work/yolov5/utils/dataloaders.py”,第 172 行,在iter中 产生 next(self.iterator) 文件“ /mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/utils/data/dataloader.py”,第 435 行,在下一个 数据 = self._next_data() 文件中” /mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/utils/data/dataloader.py”,第 1085 行,在 _next_data 返回 self._process_data(data) 文件“ /mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/utils/data/dataloader.py”,第 1111 行,在 _process_data data.reraise() 文件“/mnt /hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/_utils.py”,第 428 行,在重新引发中引发 self.exc_type(msg) TypeError:在 DataLoader 工作进程中捕获 TypeError 0.原始回溯(最近一次调用最后一次):文件“/mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/utils/data/_utils/worker.py” ,第 198 行,在 _worker_loop data = fetcher.fetch(index) 文件“/mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/torch/utils/data/_utils/fetch .py”,第 44 行,在获取数据 = [self.dataset[idx] for idx in possible_batched_index] 文件“/mnt/hdd/home/xingjh/anaconda3/envs/yolov5/lib/python3.8/site-packages/ torch/utils/data/_utils/fetch.py​​”,第 44 行,在 data = [self.dataset[idx] for idx in possible_batched_index] 文件“/mnt/hdd2/extension/xingjh/02.work/yolov5/utils/dataloaders.py”,第 669 行,在getitem img 中,(h0, w0) , (h, w) = self.load_image(index) 文件“/mnt/hdd2/extension/xingjh/02.work/yolov5/utils/dataloaders.py”,第 737 行,在 load_image r = self.img_size / max( h0, w0) # 比率 TypeError: 不支持的操作数类型 /: 'list' 和 'int'

2

@xingjunhong 对于造成的混乱,我深表歉意。您遇到的问题似乎与参数中的类型不匹配有关imgsz

要解决此错误,请确保将文件部分imgsz中的参数指定为单个整数(例如,)。参数应该是单个整数值,而不是列表。--hypyamlimgsz: 640img_size

进行此调整后,您应该能够使用所需的矩形形状(640, 480)成功训练模型。

如果您还有任何其他问题或需要其他帮助,请随时询问。

最好的问候, 格伦·乔彻

5

但是我想训练的是(640,480)尺寸的模型,而不是(640,640)尺寸的模型

3

@xingjunhong 对于我之前的回复中的混乱,我深表歉意。

要训​​练分辨率为 (640, 480) 而不是 (640, 640) 的 YOLOv5 模型,可以img_size直接在文件--hyp的 部分中修改参数yamlimg_size只需将的值更改为480。它应该看起来像这样:img_size: 480

通过将 设为img_size480,您将使用所需的矩形 (640, 480) 来训练模型。

如果您还有任何其他问题或需要任何其他帮助,请告诉我。

最好的问候, 格伦·乔彻

1

好家伙,跨语言交流,在训练的时候声明rect参数即可:python train.py --imgsz 640 --rect

6

@JiahuiSun 你好,

谢谢您的意见。是的,在训练 YOLOv5 模型时,您可以指定rect参数将输入图像调整为矩形长宽比。要指定矩形输入尺寸为 (640, 480),可以使用以下命令:

python train.py --imgsz 640 480 --rect

这将确保在训练期间将输入图像的大小调整为所需的尺寸。

如果您还有任何其他问题或需要其他帮助,请随时询问。

此致,

9

嗨@s2244521,

如果您正在训练具有矩形形状的 YOLOv5 模型并遇到较低的 AP 和 Recall,您可以尝试调整多个参数以改善模型的结果。以下是一些建议:

  1. 锚框:尝试更适合您的数据集的不同锚框配置。您可以修改该anchor.yaml文件以指定更能代表数据集的锚框大小和纵横比。

  2. 学习率:调整训练配置文件( )中的学习率--hyp.yaml。降低学习率可以帮助模型收敛得更慢,并有可能提高性能。

  3. 图像大小:在训练期间尝试使用不同的图像大小。您可以修改文件部分--img中的参数以指定不同的尺寸,并查看它是否可以提高模型的准确性。--hypyaml

  4. 数据增强:探索不同的数据增强技术以增加训练数据的多样性。这可以帮助模型更好地泛化到未见过的例子。您可以修改文件中的增强设置--data.yaml

请注意,这些建议可能需要一些实验和微调才能找到适合您的特定数据集的最佳配置。跟踪您的更改并使用 AP 和召回等指标评估结果始终是一个好主意。

如果您还有任何其他问题或需要额外指导,请告诉我。

最好的问候, 格伦·乔彻