PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.65k stars 2.87k forks source link

PaddleDetection中大部分都是通用目标检测算法,是否会考虑增加最新旋转目标检测的算法,目前看只有s2a? #7210

Closed zgsxwsdxg closed 6 months ago

zgsxwsdxg commented 1 year ago

问题确认 Search before asking

请提出你的问题 Please ask your question

PaddleDetection中大部分都是通用目标检测算法,是否会考虑增加最新旋转目标检测的算法,目前看只有s2a? 谢谢

nemonameless commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

zgsxwsdxg commented 1 year ago

以及现在已有FCOSR,请关注develop分支

谢谢,目前fcosr支持 deploy不?

zgsxwsdxg commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

PP-YOLOE-R是基于PP-YOLOE还是PP-YOLOE+ 的改进?有paper否?谢谢!

wangxinxin08 commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

PP-YOLOE-R是基于PP-YOLOE还是PP-YOLOE+ 的改进?有paper否?谢谢!

PP-YOLOE-R基于PP-YOLOE进行改进,技术报告预计下周发布到arxiv,模型下月上旬之前发布,FCOSR/S2ANet支持PaddleInference部署,PP-YOLOE-R支持PaddleInference和Paddle-TRT部署(对于TRT版本和Paddle版本有要求)

zgsxwsdxg commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

PP-YOLOE-R是基于PP-YOLOE还是PP-YOLOE+ 的改进?有paper否?谢谢!

PP-YOLOE-R基于PP-YOLOE进行改进,技术报告预计下周发布到arxiv,模型下月上旬之前发布,FCOSR/S2ANet支持PaddleInference部署,PP-YOLOE-R支持PaddleInference和Paddle-TRT部署(对于TRT版本和Paddle版本有要求)

感谢,耐心解答!

zgsxwsdxg commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

PP-YOLOE-R是基于PP-YOLOE还是PP-YOLOE+ 的改进?有paper否?谢谢!

PP-YOLOE-R基于PP-YOLOE进行改进,技术报告预计下周发布到arxiv,模型下月上旬之前发布,FCOSR/S2ANet支持PaddleInference部署,PP-YOLOE-R支持PaddleInference和Paddle-TRT部署(对于TRT版本和Paddle版本有要求)

发现 develop分支中 fcosr和s2a 算法的速度对比,没有写在readme中

wangxinxin08 commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

PP-YOLOE-R是基于PP-YOLOE还是PP-YOLOE+ 的改进?有paper否?谢谢!

PP-YOLOE-R基于PP-YOLOE进行改进,技术报告预计下周发布到arxiv,模型下月上旬之前发布,FCOSR/S2ANet支持PaddleInference部署,PP-YOLOE-R支持PaddleInference和Paddle-TRT部署(对于TRT版本和Paddle版本有要求)

发现 develop分支中 fcosr和s2a 算法的速度对比,没有写在readme中

FCOSR速度是快于s2anet的,readme中目前没有包含速度信息,且s2anet难以使用TensorRT加速

zgsxwsdxg commented 1 year ago

近期会发布PP-YOLOE-R旋转框检测,以及现在已有FCOSR,请关注develop分支 https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate

PP-YOLOE-R是基于PP-YOLOE还是PP-YOLOE+ 的改进?有paper否?谢谢!

PP-YOLOE-R基于PP-YOLOE进行改进,技术报告预计下周发布到arxiv,模型下月上旬之前发布,FCOSR/S2ANet支持PaddleInference部署,PP-YOLOE-R支持PaddleInference和Paddle-TRT部署(对于TRT版本和Paddle版本有要求)

发现 develop分支中 fcosr和s2a 算法的速度对比,没有写在readme中

FCOSR速度是快于s2anet的,readme中目前没有包含速度信息,且s2anet难以使用TensorRT加速

你好,我最近看了您的PP-YOLOE-R 代码,但是我尝试训练自己的数据,格式是labelme的,有点疑惑。labelme标注的如何转coco,当然通用目标检测转换没问题,但是对于旋转目标,我想问coco格式bbox字段填啥?segmentation字段填啥?咱们PaddleDetection框架提供x2coco.py脚本是否支持旋转目标labelme的转换?期待您的解答,谢谢!

wangxinxin08 commented 1 year ago

x2coco.py脚本应该可以直接使用,旋转框使用的数据集严格遵守COCO格式,bbox字段填写水平框,segmentation字段填写标注结果(x1, y1, x2, y2, x3, y3, x4, y4)

zgsxwsdxg commented 1 year ago

x2coco.py脚本应该可以直接使用,旋转框使用的数据集严格遵守COCO格式,bbox字段填写水平框,segmentation字段填写标注结果(x1, y1, x2, y2, x3, y3, x4, y4)

再问下两个疑惑: 1.segmentation字段(x1, y1, x2, y2, x3, y3, x4, y4) 的点有没有顺序要求,从左上顶点开始顺时针?或者其他?

  1. 如果segmentation不为空,ppyoloer算法数据读取模块,会自动确认为走回归算法,不是走分割算法? 期待回复,谢谢!
zgsxwsdxg commented 1 year ago

x2coco.py脚本应该可以直接使用,旋转框使用的数据集严格遵守COCO格式,bbox字段填写水平框,segmentation字段填写标注结果(x1, y1, x2, y2, x3, y3, x4, y4)

再问下两个疑惑: 1.segmentation字段(x1, y1, x2, y2, x3, y3, x4, y4) 的点有没有顺序要求,从左上顶点开始顺时针?或者其他? 2. 如果segmentation不为空,ppyoloer算法数据读取模块,会自动确认为走回归算法,不是走分割算法? 期待回复,谢谢!

x2coco.py脚本应该可以直接使用,旋转框使用的数据集严格遵守COCO格式,bbox字段填写水平框,segmentation字段填写标注结果(x1, y1, x2, y2, x3, y3, x4, y4)

我觉得,是不是在数据说明readme那块,得明确说明下,要不有迷惑。这是另一个人解释和你不同得看法https://github.com/PaddlePaddle/PaddleDetection/issues/7326#issuecomment-1313542810

zgsxwsdxg commented 1 year ago

x2coco.py脚本应该可以直接使用,旋转框使用的数据集严格遵守COCO格式,bbox字段填写水平框,segmentation字段填写标注结果(x1, y1, x2, y2, x3, y3, x4, y4)

configs/datasets/spine_coco.yml 中训练自动下载得数据coco格式bbox是[x_center, y_center, width, height, angle] 有点疑惑? "annotations": [ { "area": 9453, "bbox": [ 380, 695, 137, 69, 2.544237 ], "category_id": 1, "id": 34, "ignore": 0, "image_id": 10004, "iscrowd": 0, "segmentation": [] }, { "area": 11925, "bbox": [ 342, 595, 159, 75, 2.915072 ], "category_id": 2, "id": 35, "ignore": 0, "image_id": 10004, "iscrowd": 0, "segmentation": [] },

wangxinxin08 commented 1 year ago

@zgsxwsdxg

  1. segmentation字段顺时针或者逆时针都行,不能为空,旋转框检测需要从segmentation中读取旋转框标注
  2. 旋转框使用4个点进行标注,本身可以看作是简化的segmentaion,但其实还是作的检测任务,没有分割任务这一说,另外分割任务也需要分割标注
  3. 你下载的spine_coco格式是老的格式,其coco格式不是严格按照coco的定义来的,我们在PaddleDetection 2.5之后重构了数据格式,使其完全遵循COCO标准,并使用segmentation字段存储旋转框的4个点的坐标,你可以使用PaddleDetection 2.5或者PaddleDetection develop运行以下命令重新获取新的数据
    cd dataset/spine_coco/
    python download_spine_coco.py
wangxinxin08 commented 1 year ago

我觉得,是不是在数据说明readme那块,得明确说明下,要不有迷惑。这是另一个人解释和你不同得看法#7326 (comment)

感谢你的建议,我们在数据README那块新增下数据格式的说明

zgsxwsdxg commented 1 year ago

@zgsxwsdxg

  1. segmentation字段顺时针或者逆时针都行,不能为空,旋转框检测需要从segmentation中读取旋转框标注
  2. 旋转框使用4个点进行标注,本身可以看作是简化的segmentaion,但其实还是作的检测任务,没有分割任务这一说,另外分割任务也需要分割标注
  3. 你下载的spine_coco格式是老的格式,其coco格式不是严格按照coco的定义来的,我们在PaddleDetection 2.5之后重构了数据格式,使其完全遵循COCO标准,并使用segmentation字段存储旋转框的4个点的坐标,你可以使用PaddleDetection 2.5或者PaddleDetection develop运行以下命令重新获取新的数据
cd dataset/spine_coco/
python download_spine_coco.py

感谢你的解释,豁然开朗。继续问下,那个数据标注的话是必须rotate rect 还是任意凸四边形的四个点就行?

wangxinxin08 commented 1 year ago

@zgsxwsdxg 建议rotate rect,其实任意凸四边形也可,不过凸四边形会被转换成rotate rect进行处理,输出的结果也是rotate rect的四个顶点

zgsxwsdxg commented 1 year ago

@zgsxwsdxg 建议rotate rect,其实任意凸四边形也可,不过凸四边形会被转换成rotate rect进行处理,输出的结果也是rotate rect的四个顶点

那我基于labelme标注旋转数据的话,只能polygon模式标注,那就是任意凸四边的四个点,目前好像也没什么好的标注工具支持rotate rect

wangxinxin08 commented 1 year ago

@zgsxwsdxg 可以直接使用四个点的polygon,我们在做数据预处理时,是把polygon转换成rotate rect

zgsxwsdxg commented 1 year ago

四个点的polygon,我们在做数据预处理时,是把polygon转换成rotate rec

ok,好的

zgsxwsdxg commented 1 year ago

@wangxinxin08 你好,我看了你的ppyoloe-r readme,可以使用Paddle模式或者Paddle-TRT模式进行测速。当使用Paddle-TRT模式测速时,需要确保TensorRT版本大于8.2, PaddlePaddle版本大于2.4.0rc0。但是paddle框架官网readme好像:Latest PaddlePaddle Release: [v2.3] https://github.com/PaddlePaddle/Paddle/tree/release/2.4 还有飞桨开发文档也只给到 2.3.2 文档版,我该怎么装 2.4?需要自己编译么?没有pip包?paddle2.3.2版本是否可以在PaddleDetection 的develop分支中训练ppyoloe-r?

wangxinxin08 commented 1 year ago

@zgsxwsdxg Paddle 2.4版本可以从https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html 下载,这个只是在使用Paddle-TRT推理的时候有限制,训练无版本限制,只使用Paddle不使用TRT也无版本限制

zgsxwsdxg commented 1 year ago

@zgsxwsdxg Paddle 2.4版本可以从https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html 下载,这个只是在使用Paddle-TRT推理的时候有限制,训练无版本限制,只使用Paddle不使用TRT也无版本限制

感谢!再问下您,学习率设置这块,如果GPU卡数或者batch size发生了改变,你需要按照公式 lrnew = lrdefault (batch_sizenew GPU_numbernew) / (batch_sizedefault * GPU_numberdefault) 调整学习率。 就是训练的时候,不知道GPU_number从哪里设置,我是一机两卡。GPU_number是通过那个参数改了?配置文件中没发现。export CUDA_VISIBLE_DEVICES=0,1就可以了?还需要改别的地方么?

调整学习率公式,我懂重新计算,就是不知道gpu数量在那块设置为2

wangxinxin08 commented 1 year ago

@zgsxwsdxg 多机的启动命令是python -m paddle.distributed.launch --gpus 0,1 tools/train.py xxxx,--gpus指定卡叔

zgsxwsdxg commented 1 year ago

@zgsxwsdxg 多机的启动命令是python -m paddle.distributed.launch --gpus 0,1 tools/train.py xxxx,--gpus指定卡叔

感谢你耐心解答!继续请教你,两个问题: 1.这个公式中batch_size 是总的batch_size, 还是每个卡上的batch_size?

  1. 训练配置文件(https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rotate/ppyoloe_r/_base_/ppyoloe_r_reader.yml) 中的bath_size 是每卡的数据数量,除了这个地方修改, 在python tools/train.py 训练时能指定每个gpu卡的batch_size不?
jerrywgz commented 1 year ago

配置中都是单张卡的batch size, 能使用-o TrainReader.batch_size=2这种方式来进行修改

zgsxwsdxg commented 1 year ago

配置中都是单张卡的batch size, 能使用-o TrainReader.batch_size=2这种方式来进行修改

有没有指定总batch_size, PaddleDetection框架会自动均分每卡数量的方式?

wangxinxin08 commented 1 year ago

配置中都是单张卡的batch size, 能使用-o TrainReader.batch_size=2这种方式来进行修改

有没有指定总batch_size, PaddleDetection框架会自动均分每卡数量的方式?

目前是没有的

zgsxwsdxg commented 1 year ago

配置中都是单张卡的batch size, 能使用-o TrainReader.batch_size=2这种方式来进行修改

有没有指定总batch_size, PaddleDetection框架会自动均分每卡数量的方式?

目前是没有的

ok,谢谢

zgsxwsdxg commented 1 year ago

-o TrainReader.batch_size=2

你好,我想请教你两个问题:

  1. 如何通过 python tools/train.py 传入学习率设置参数?只能通过yml文件配置吗?
  2. https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota_ms.yml和 https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota.yml 这两个的训练配置文件有些疑惑,对于多尺度训练ms版本yml只是配置的数据是ms还是训练时和非ms版本配置文件https://github.com/PaddlePaddle/PaddleDetection/blob/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota.yml 有本质的区别?
wangxinxin08 commented 1 year ago

@zgsxwsdxg

  1. 可以通过 -o LearningRate.base_lr=0.001来设置
  2. DOTA是使用离线切图,多尺度训练在切图的时候已经把数据处理了,多尺度训练的配置文件以_ms结尾
zgsxwsdxg commented 1 year ago

@zgsxwsdxg

  1. 可以通过 -o LearningRate.base_lr=0.001来设置
  2. DOTA是使用离线切图,多尺度训练在切图的时候已经把数据处理了,多尺度训练的配置文件以_ms结尾

那你的意思是ms和非ms版本yml文件配置,只是在离线数据路径配置那块不同是吧?

wangxinxin08 commented 1 year ago

@zgsxwsdxg 是的,配置是一样的,数据不一样,多尺度训练和测试的数据集是离线处理得到的

zgsxwsdxg commented 1 year ago

@zgsxwsdxg 是的,配置是一样的,数据不一样,多尺度训练和测试的数据集是离线处理得到的

谢谢你的回答,还有个问题,我看你们的Train和Eval数据集都是一份,那你们怎么挑出准确率最好的模型?是拿训练最后的模型?并且这个训练集很大,如果开启eval选项的话,训练时间会很长。 `TrainDataset: !COCODataSet image_dir: trainval1024/images anno_path: trainval1024/DOTA_trainval1024.json dataset_dir: dataset/dota_ms/ data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd', 'gt_poly']

EvalDataset: !COCODataSet image_dir: trainval1024/images anno_path: trainval1024/DOTA_trainval1024.json dataset_dir: dataset/dota_ms/ data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd', 'gt_poly']

TestDataset: !ImageFolder anno_path: test1024/DOTA_test1024.json dataset_dir: dataset/dota_ms/`

训练集和eval数据集是一份,这样基于一份数据集挑选准确率最好的模型不太合适,因为训练集和它是一样的?谢谢!

wangxinxin08 commented 1 year ago

@zgsxwsdxg 没有选择模型,直接使用的最后一个模型,没有开启--eval选项,也就是没有选择模型

zgsxwsdxg commented 1 year ago

@zgsxwsdxg 没有选择模型,直接使用的最后一个模型,没有开启--eval选项,也就是没有选择模型

好的,知道了,谢谢你的耐心回答。

zgsxwsdxg commented 1 year ago

@zgsxwsdxg 建议rotate rect,其实任意凸四边形也可,不过凸四边形会被转换成rotate rect进行处理,输出的结果也是rotate rect的四个顶点

你好,再次请教你,标注为coco格式,segmentation字段存储的点多于4以上,是一个ploygon,想做rotate object detect。咨询两点:

  1. 是否支持4个点以上的polygon标注做旋转目标检测训练?
  2. 你们数据解析polygon为rotate rect在那块?我想看下代码怎么实现的?

谢谢,期待回复!

wangxinxin08 commented 1 year ago

@zgsxwsdxg

  1. 不支持4个点以上的polygon标注
  2. 详见Poly2Rbox的预处理函数 简单的问题可以尝试自行解决
zgsxwsdxg commented 1 year ago

2. Poly2Rbox

@zgsxwsdxg

  1. 不支持4个点以上的polygon标注
  2. 详见Poly2Rbox的预处理函数 简单的问题可以尝试自行解决

我 看了你们的Poly2Rbox代码 `def poly2rbox_oc_np(poly): """convert poly to rbox (0, pi / 2]

Args:
    poly: [x1, y1, x2, y2, x3, y3, x4, y4]

Returns:
    rbox: [cx, cy, w, h, angle]
"""
points = np.array(poly, dtype=np.float32).reshape((-1, 2))
(cx, cy), (w, h), angle = cv2.minAreaRect(points)
# using the new OpenCV Rotated BBox definition since 4.5.1
# if angle < 0, opencv is older than 4.5.1, angle is in [-90, 0)
if angle < 0:
    angle += 90
    w, h = h, w

# convert angle to [0, 90)
if angle == -0.0:
    angle = 0.0
if angle == 90.0:
    angle = 0.0
    w, h = h, w

angle = angle / 180 * np.pi
return [cx, cy, w, h, angle]`

其中 (cx, cy), (w, h), angle = cv2.minAreaRect(points) 函数传入的是一个轮廓polygon,返回的是一个轮廓的最小外接矩形(roate rect)。那么points参数 应该是一个轮廓就行,没有四个点限制,是不是那块有限制必须的4点?谢谢!

zgsxwsdxg commented 1 year ago

@zgsxwsdxg

  1. 不支持4个点以上的polygon标注
  2. 详见Poly2Rbox的预处理函数 简单的问题可以尝试自行解决

有个训练中报错的问题请教你,我训练自己的数据 不开--eval选项 可以正常训完,模型可以正常预测。 开了--eval 想挑选最好的模型,训练在一个epoch后报错,帮忙看看,报错如下: `loading annotations into memory... Done (t=0.11s) creating index... index created! W1215 16:19:22.622738 554162 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 11.2 W1215 16:19:22.629261 554162 gpu_resources.cc:91] device: 0, cuDNN Version: 8.1. [12/15 16:19:24] ppdet.utils.checkpoint INFO: Finish loading model weights: /home/developer/.cache/paddle/weights/CSPResNetb_s_pretrained.pdparams [12/15 16:19:26] ppdet.engine INFO: Epoch: [0] [ 0/188] learning_rate: 0.000000 loss: 7.044613 loss_cls: 5.257792 loss_iou: 0.534507 loss_dfl: 9.011045 eta: 3:45:27 batch_cost: 1.9987 data_cost: 0.0004 ips: 2.0013 images/s [12/15 16:19:41] ppdet.engine INFO: Epoch: [0] [ 50/188] learning_rate: 0.000200 loss: 3.195375 loss_cls: 1.462456 loss_iou: 0.514252 loss_dfl: 8.853580 eta: 0:31:16 batch_cost: 0.2449 data_cost: 0.0002 ips: 16.3309 images/s [12/15 16:19:56] ppdet.engine INFO: Epoch: [0] [100/188] learning_rate: 0.000400 loss: 2.780653 loss_cls: 1.465402 loss_iou: 0.374744 loss_dfl: 7.299526 eta: 0:29:24 batch_cost: 0.2495 data_cost: 0.0002 ips: 16.0305 images/s [12/15 16:20:12] ppdet.engine INFO: Epoch: [0] [150/188] learning_rate: 0.000600 loss: 2.631783 loss_cls: 1.407633 loss_iou: 0.362150 loss_dfl: 5.920934 eta: 0:28:33 batch_cost: 0.2473 data_cost: 0.0002 ips: 16.1748 images/s [12/15 16:20:24] ppdet.utils.checkpoint INFO: Save checkpoint: output/ppyoloe_r_crn_s_3x_ucas_aod loading annotations into memory... Done (t=0.02s) creating index... index created! loading annotations into memory... Done (t=0.18s) creating index... index created! Traceback (most recent call last): File "tools/train.py", line 188, in main() File "tools/train.py", line 184, in main run(FLAGS, cfg) File "tools/train.py", line 132, in run trainer.train(FLAGS.eval) File "/data/duxiaogang/PaddleDetection-dev/ppdet/engine/trainer.py", line 578, in train Exception in thread Thread-3: Traceback (most recent call last): File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/threading.py", line 926, in _bootstrap_inner self.run() File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/threading.py", line 870, in run

File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/site-packages/paddle/fluid/dataloader/worker.py", line 169, in reraise raise self.exc_type(msg) ValueError: DataLoader worker(0) caught ValueError with message: Traceback (most recent call last): File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/site-packages/paddle/fluid/dataloader/worker.py", line 336, in _worker_loop batch = fetcher.fetch(indices) File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/site-packages/paddle/fluid/dataloader/fetcher.py", line 134, in fetch data = self.collate_fn(data) File "/data/duxiaogang/PaddleDetection-dev/ppdet/data/reader.py", line 91, in call batch_data = default_collate_fn(data) File "/data/duxiaogang/PaddleDetection-dev/ppdet/data/utils.py", line 62, in default_collate_fn for key in sample File "/data/duxiaogang/PaddleDetection-dev/ppdet/data/utils.py", line 62, in for key in sample File "/data/duxiaogang/PaddleDetection-dev/ppdet/data/utils.py", line 52, in default_collate_fn batch = np.stack(batch, axis=0) File "<__array_function__ internals>", line 6, in stack File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/site-packages/numpy/core/shape_base.py", line 426, in stack raise ValueError('all input arrays must have the same shape') ValueError: all input arrays must have the same shape

self._eval_with_loader(self._eval_loader)

File "/data/duxiaogang/PaddleDetection-dev/ppdet/engine/trainer.py", line 598, in _eval_with_loader for step_id, data in enumerate(loader): File "/data/duxiaogang/PaddleDetection-dev/ppdet/data/reader.py", line 209, in next return next(self.loader) File "/data/duxiaogang/anaconda3/envs/pdet-dev/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 746, in next data = self._reader.read_next_varlist() SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception. [Hint: Expected killed != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:166)`

是不是yml EvalReader那块配置有问题?我是用的官方的,我需要改什么才能--eval选项,跑起来?期待你的回答 如下是:我的yml配置 `worker_num: 4 image_height: &image_height 1024 image_width: &image_width 1024 image_size: &image_size [image_height, image_width]

TrainReader: sample_transforms:

EvalReader: sample_transforms:

TestReader: sample_transforms:

wangxinxin08 commented 1 year ago
  1. 其他的预处理函数要求必须是4个点的Polygon,详见Poly2Array
  2. EvalReader配置错误,缺少collate_batch: false
zgsxwsdxg commented 1 year ago
  1. 其他的预处理函数要求必须是4个点的Polygon,详见Poly2Array
  2. EvalReader配置错误,缺少collate_batch: false

谢谢,明白了

zgsxwsdxg commented 1 year ago
  1. 其他的预处理函数要求必须是4个点的Polygon,详见Poly2Array
  2. EvalReader配置错误,缺少collate_batch: false

你好,请教下,如何在开启--eval选项时,将评估的iou设置为0.75? 就是打印的这个信息 [12/27 16:05:11] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 86.82%中0.5如何配置为0.75,在那个地方配置?谢谢!期待老师的答复!

zgsxwsdxg commented 1 year ago
  1. 其他的预处理函数要求必须是4个点的Polygon,详见Poly2Array
  2. EvalReader配置错误,缺少collate_batch: false

还有一个问题 ppyoloer 中的配置 LearningRate: base_lr: 0.008 # 由于总的batch_size不变,不需要修改学习率 schedulers:

这个epochs一般怎么设置?有没有经验公式? 原始dota数据设置的steps参数,现在是epochs?