Closed yghstill closed 2 years ago
PaddlePaddle=2.2.0明天才发布对吧,找了半天好像没地方安装
PaddlePaddle=2.2.0明天才发布对吧,找了半天好像没地方安装
@Xwmiss 嗯嗯,今天刚打tag,这两天发布安装包后我再同步,可以先使用dev版本Paddle:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html
PaddlePaddle=2.2.0明天才发布对吧,找了半天好像没地方安装
@Xwmiss 嗯嗯,今天刚打tag,这两天发布安装包后我再同步,可以先使用dev版本Paddle:https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/develop/install/pip/linux-pip.html
好的好的👍
@Xwmiss
请问我在使用上诉命令进行训练时,如果同时给定了--slim_config,好像模型是不在训练的,这是因为训练和量化两个步骤要分开吗? 感谢你的回复!
@Xwmiss 应该先训练好模型,再配置slim_config中的pretain_weights为训好的fp32模型,再进行量化训练。 现在默认的指令会下载训好的COCO上的预训练模型 进行量化训练。
十分感谢您的回复!👍
训练报错 配置文件 python tools/train.py -c configs/picodet/picodet_l_416_coco.yml
报错行
File "PaddleDetection/ppdet/modeling/heads/simota_head.py", line 351, in
@yu937861 Fixed in #4438,拉取下最新代码试下吧
picodet有VOC格式配置文件吗
@ChinaRush ppdet支持的 这个和模型关系不是很大可以自己配一下的datasets 或者 转成coco跑 在tools里有工具
@yu937861 Fixed in #4438,拉取下最新代码试下吧
感谢
你好,下面问题可能是什么原因呢。按照third_engine/demo_openvino教程做的,电脑的openvino跑其他模型是可以的 问题:picodet third_engine/demo_openvino 模型输出为空,可视化无检测框,只有原图 描述: picodet_m_416.bin start init model success picodet min = 14.95 max = 15.65 avg = 15.47 找到原因了: resize_uniform(image, resized_img, cv::Size(320, 320), effect_roi); auto detector = PicoDet("../weight/picodet_m_416.xml"); 修改为416,不知道是模型精度问题,还是后处理映射的问题
训练后报错提示: AttributeError: 'list' object has no attribute 'shape'
@gaorui999 这个问题已解,请更新最新代码就行。
训练 python tools/train.py -c configs/picodet/picodet_l_416_coco.yml
自己的数据集,训练完后eval ap50精度只有0.224, 配置文件也只改了num_classes, 是还有哪里需要改的吗
@yu937861 您自己的数据集多大呢?默认的预训练只有Backbone在Imagenet上的,由于移动端模型收敛较慢,如果您数据集较小,建议pretrain_weights直接加载COCO上训好的权重,这样迁移学习会加快模型的收敛。
为什么 picodet_l 的 epoch=250,而 CosineDecay 的 max_epochs=300,二者不应该是相同的吗
@yu937861 您自己的数据集多大呢?默认的预训练只有Backbone在Imagenet上的,由于移动端模型收敛较慢,如果您数据集较小,建议pretrain_weights直接加载COCO上训好的权重,这样迁移学习会加快模型的收敛。
好的我再试一下,谢谢
为什么 picodet_l 的 epoch=250,而 CosineDecay 的 max_epochs=300,二者不应该是相同的吗
@Xiaoyw1998 PicoDet-l的模型较大,会提前收敛到最优mAP,所以总得epoch调小成250。
@ChinaRush PicoDet的VOC配置已发布,可以参考:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/configs/picodet/picodet_s_320_voc.yml
想问一下,cycle-epochs应该是一个经验值,那如果训练轮数不再是250,而是150或者更少的话,适合多少呢,这一设置是否有明显的影响对于结果?
你好,picodet_s_coco,转换为openvino成功,但是使用third_engine/demo_openvino调用,报错如下: start init model success begin inferenceterminate called after throwing an instance of 'InferenceEngine::GeneralError' what(): Cannot find blob with name: save_infer_model/scale_4.tmp_1 Aborted (core dumped)
想问一下,cycle-epochs应该是一个经验值,那如果训练轮数不再是250,而是150或者更少的话,适合多少呢,这一设置是否有明显的影响对于结果?
@zwhua006 cycle_epoch这个参数是控制Cycle-EMA中的reset的epoch间隔数,我们实验中证明40是一个不错的设置。训练轮数的话需要看模型的收敛情况,在COCO上我们默认设置了300或250epoch.
@thenighthunter0 我们openvino的问题再认真排查下~
请问,为什么会出现这个问题,上面显示coco数据都已经读进来了,但是下面显示没有coco数据。
@17076372880 先读入的是EvalReader中COCO 验证集,然后读入训练集,确认下dataset/coco/annotations/train_anno.json是否存在。
@17076372880 先读入的是EvalReader中COCO 验证集,然后读入训练集,确认下dataset/coco/annotations/train_anno.json是否存在。
这个是存在的,数据集和配置文件(coco_detection.yml)都是之前跑2.1版本的yolo v3的,之前是没啥问题的。
@17076372880 先读入的是EvalReader中COCO 验证集,然后读入训练集,确认下dataset/coco/annotations/train_anno.json是否存在。
这个是存在的,数据集和配置文件(coco_detection.yml)都是之前跑2.1版本的yolo v3的,之前是没啥问题的。
已解决,是coco中的Segmentation的问题。
关于学习率的设置是怎么设置的? 单卡训练的话,学习率如何修改? picodet_coco.yml 中的学习率和optimize.yml 中的学习率各自的效果是啥,如何设置呢?谢谢。
@17076372880
@17076372880 LR这块我们才用的是 线性伸缩准则
具体细节可以参考文献 https://arxiv.org/pdf/1706.02677.pdf
如果我想修改保存best的方式,请问在哪里修改,我想按照map0.5进行保存
你好,我按照PaddleInference demo Python部署,前后处理用时在10ms左右,请问怎么缩短这部分时间呢?
你好,我按照PaddleInference demo Python部署,前后处理用时在10ms左右,请问怎么缩短这部分时间呢?
@13857660548 前处理主要是图片读入耗时严重,可以改为直接输入numpy数据,后处理目前是对BBox的解码+NMS,这部分耗时可以通过调大相应NMS的阈值来解决。
你好,我按照PaddleInference demo Python部署,前后处理用时在10ms左右,请问怎么缩短这部分时间呢?
@13857660548 前处理主要是图片读入耗时严重,可以改为直接输入numpy数据,后处理目前是对BBox的解码+NMS,这部分耗时可以通过调大相应NMS的阈值来解决。
改为numpy输入后,预处理时间还是比较久,请问这一部分时间还能继续减少吗?
<__main__.Resize object at 0x7f39649ecc50> time: 0.001306295394897461 <__main__.NormalizeImage object at 0x7f3958062be0> time: 0.006364583969116211 <__main__.Permute object at 0x7f3958062a90> time: 0.0004088878631591797 <__main__.PadStride object at 0x7f39580625f8> time: 0.0004329681396484375
@13857660548 剩下的预处理的操作都是必须的了,去除不了。
@thenighthunter0 openvino问题已在 #4473 中修复,请拉取最新代码再试下吧。
ESNet中的channel_scales这个参数是用来做什么的?
首先我使用deploy/python/infer中的DetectorPicoDet进行推理时间为0.69s左右,然而使用yolov5s的pt进行推理时间为0.009s.对于DetectorPicoDet我指定了GPU进行推理,并未使用tensorrt进行推理,差别很大。 我的推理代码: img_path = 'demo/000002.jpg' input_image = cv2.imread(img_path) model_dir = 'inference_model/picodet_l_640_coco' pred_config = PredictConfig(model_dir) detect = DetectorPicoDet(pred_config,model_dir,device='GPU') results = detect.predict([input_image],0.8) 我在yolov5s前处理只使用了letterbox,但是我发现picodet前处理花费了大概0.01s,并不是主要的因素
之后我使用infer传入图片,不再是numpy数组,推理时间preprocess_time(ms): 38.90, inference_time(ms): 14.60, postprocess_time(ms): 14.90,依旧远远超过yolov5s的推理时间。 对于yolov5s,我使用的是相同的nms阈值,前处理部分仅仅使用letterbox,也是在gpu进行推理。 1.我想知道论文中所提到的速度超过yolov5s 44%是如何进行推理? 2.为什么我传入图片和numpy数组差别这么大?我该如何才能达到与yolov5s相同的推理时间8ms左右? 3.我尝试直接在infer_yaml修改尺寸,但是推理失败,我该如何修改推理时的尺寸。 4.关于propress部分,如果我想删除或者修改其操作,应该在哪一部分修改。直接修改infer_cfg文件一直报错
ESNet中的channel_scales这个参数是用来做什么的?
@gaorui999 channel_scales这个参数用来控制ESNet中NAS算法搜出来的每个block的channel裁剪率。
@zwhua006
@zwhua006
- 关于在GPU上的推理时间:PP-PicoDet是移动端模型,我们paper中的比较结果都是在骁龙865手机上实测速度对比,测试程序为:https://github.com/JiweiMaster/MobileDetBenchmark ,YOLOv5s和PP-PicoDet我们没有直接在GPU上比较过两者的差别,在CPU和GPU上的优化工作接下来也会进一步尝试。(比如dw5x5卷积等在GPU上支持不友好等问题)
- infer_yaml的尺寸和模型input是匹配的,只修改infer_yaml是不行的,在模型导出时需要设置,具体的,修改TestReader 中的image_shape 后再导出即可:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/configs/picodet/_base_/picodet_416_reader.yml#L32
请问导出onnx模型修改尺寸是否只修改TestReader的image_shape,是否需要修改Resize中的target_size
@songh11 只需要修改TestReader的image_shape即可。
@songh11 只需要修改TestReader的image_shape即可。
感谢回复,我目前在做高通845上的移植,发现在dsp推理耗时占yolov5s的2/3左右
感谢回复,我目前在做高通845上的移植,发现在dsp推理耗时占yolov5s的2/3左右
@songh11 是PicoDet-L-640模型吗?
在相同lr=0.01,epoch=100情况下,同样没有使用预训练参数在划分相同的数据集上开始训练。 yolov3_mobilenet_v3_large_270e_voc的mAP=83%,训练时长4个小时 PicoDet-L-640 的mAP=78%,训练时长6个小时
这是为什么呢,怎么能提高picodet的mAP?
感谢回复,我目前在做高通845上的移植,发现在dsp推理耗时占yolov5s的2/3左右
@songh11 是PicoDet-L-640模型吗?
是这个模型,只修改了一些高通snpe不支持的算子
@gaorui999 PicoDet采用lr cosine策略,会从base_lr开始逐渐下降,将起始学习率适当调大再试下呢?按照上面FAQ中的比例调整下。
PP-PicoDet是轻量级实时移动端目标检测模型,我们提出了从小到大的一系列模型,包括S、M、L等,超越现有SOTA模型。
模型特色:
链接:
欢迎大家试用,有疑问欢迎讨论盖楼~
和其他模型对比:
FAQ汇总: (持续更新中)
__base__
中配置,picodet_x_coco.yml中的所有设置会覆盖__base__
中配置,所以修改picodet_x_coco.yml的配置即可。为了方便大家交流沟通,欢迎扫码添加微信群,继续交流有关PP-PicoDet的使用及建议~