PaddlePaddle / Paddle.js

Paddle.js is a web project for Baidu PaddlePaddle, which is an open source deep learning framework running in the browser. Paddle.js can either load a pre-trained model, or transforming a model from paddle-hub with model transforming tools provided by Paddle.js. It could run in every browser with WebGL/WebGPU/WebAssembly supported. It could also run in Baidu Smartprogram and WX miniprogram.
https://paddlejs.baidu.com
Apache License 2.0
964 stars 136 forks source link

请问 paddlejs-models/detect/ 里用的是哪个模型,如何自己训练? #386

Open qiano opened 2 years ago

JingyuanZhang commented 2 years ago

是在 easydl 上训练的目标检测模型 ssd640

https://ai.baidu.com/easydl/

选择 js sdk 就对应到了具体模型

249a9ee358d8bd65b70e73435b340183
qiano commented 2 years ago

是否支持在 padddledetection 里训练,我试了几种模型都不能正常的使用

JingyuanZhang commented 2 years ago

是从paddle拿的开源模型 不过我们这边算法同学有做过调整 直接拿官方的训练的话 可能效果跟从dl上训的有差

qiano commented 2 years ago

我用 paddledetectin 训练了模型 然后用 paddlejs-converter 转换,跑不起来

JingyuanZhang commented 2 years ago

麻烦提供一下模型和报错信息吧

qiano commented 2 years ago

A、使用 paddledetection 的 picodet 训练 ,转换后模型地址:https://mp-assets.hofo.co/ai/receipt_model
在 paddlejs-models/detect 项目中运行,加载模型未报错,能返回结果,但全是NaN。。如下: 微信图片_20220307120554

B、使用 paddledetection 的 ssd 训练 ,转换后模型地址:https://mp-assets.hofo.co/ai/ssd 在 paddlejs-models/detect 项目中运行,加载模型报错。。如下:

微信图片_20220307120910

JingyuanZhang commented 2 years ago

收到 我们跟进一下

JingyuanZhang commented 2 years ago

已定位,需要 pool2d 算子升级,升级后 issue 回复,辛苦关注

JingyuanZhang commented 2 years ago

https://mp-assets.hofo.co/ai/ssd/model.json 这个模型转换的有问题,辛苦提供一下 原始模型

JingyuanZhang commented 2 years ago

https://mp-assets.hofo.co/ai/receipt_model 这个模型也提供一下 原始模型吧~ 我验证一下精度

qiano commented 2 years ago

https://mp-assets.hofo.co/ai/ssd/model.json 这个模型转换的有问题,辛苦提供一下 原始模型

inference_model: https://mp-assets.hofo.co/ai/ssd/inference/

下面有四个文件 : infer_cfg.yml
model.pdiparams
model.pdiparams.info
model.pdmodel

qiano commented 2 years ago

https://mp-assets.hofo.co/ai/receipt_model 这个模型也提供一下 原始模型吧~ 我验证一下精度

inference_model: https://mp-assets.hofo.co/ai/receipt_model /inference/

下面有四个文件 : infer_cfg.yml
model.pdiparams
model.pdiparams.info
model.pdmodel

JingyuanZhang commented 2 years ago

https://mp-assets.hofo.co/ai/receipt_model 这个模型也提供一下 原始模型吧~ 我验证一下精度

inference_model: https://mp-assets.hofo.co/ai/receipt_model /inference/

下面有四个文件 : infer_cfg.yml model.pdiparams model.pdiparams.info model.pdmodel

https://github.com/PaddlePaddle/Paddle.js/pull/395 使用最新版本 @paddlejs/paddlejs-backend-webgl@1.1.17 @paddlejs/paddlejs-core@2.1.16

JingyuanZhang commented 2 years ago

model.pdiparams

这个模型权重 90M,不适合放在 web上推理,单纯加载 模型文件时间 就非常长了;转换确实有问题,修复后issue 同步

qiano commented 2 years ago

model.pdiparams

这个模型权重 90M,不适合放在 web上推理,单纯加载 模型文件时间 就非常长了;转换确实有问题,修复后issue 同步

了解,谢谢

https://mp-assets.hofo.co/ai/receipt_model 这个模型也提供一下 原始模型吧~ 我验证一下精度

inference_model: https://mp-assets.hofo.co/ai/receipt_model /inference/ 下面有四个文件 : infer_cfg.yml model.pdiparams model.pdiparams.info model.pdmodel

395 使用最新版本 @paddlejs/paddlejs-backend-webgl@1.1.17 @paddlejs/paddlejs-core@2.1.16

现在返回的值不是NaN了。。还有一个问题请教,结果如何换成和demo模型一样的, 标签,置信度,坐标 的6位数组的形式?

qiano commented 2 years ago

model.pdiparams

这个模型权重 90M,不适合放在 web上推理,单纯加载 模型文件时间 就非常长了;转换确实有问题,修复后issue 同步 了解,谢谢

JingyuanZhang commented 2 years ago

model.pdiparams

这个模型权重 90M,不适合放在 web上推理,单纯加载 模型文件时间 就非常长了;转换确实有问题,修复后issue 同步

了解,谢谢

https://mp-assets.hofo.co/ai/receipt_model 这个模型也提供一下 原始模型吧~ 我验证一下精度

inference_model: https://mp-assets.hofo.co/ai/receipt_model /inference/ 下面有四个文件 : infer_cfg.yml model.pdiparams model.pdiparams.info model.pdmodel

395 使用最新版本 @paddlejs/paddlejs-backend-webgl@1.1.17 @paddlejs/paddlejs-core@2.1.16

现在返回的值不是NaN了。。还有一个问题请教,结果如何换成和demo模型一样的, 标签,置信度,坐标 的6位数组的形式? model.zip 试一下这个,然后参考 detect 模型后处理

qiano commented 2 years ago

model.pdiparams

这个模型权重 90M,不适合放在 web上推理,单纯加载 模型文件时间 就非常长了;转换确实有问题,修复后issue 同步

了解,谢谢

https://mp-assets.hofo.co/ai/receipt_model 这个模型也提供一下 原始模型吧~ 我验证一下精度

inference_model: https://mp-assets.hofo.co/ai/receipt_model /inference/ 下面有四个文件 : infer_cfg.yml model.pdiparams model.pdiparams.info model.pdmodel

395 使用最新版本 @paddlejs/paddlejs-backend-webgl@1.1.17 @paddlejs/paddlejs-core@2.1.16

现在返回的值不是NaN了。。还有一个问题请教,结果如何换成和demo模型一样的, 标签,置信度,坐标 的6位数组的形式? model.zip 试一下这个,然后参考 detect 模型后处理

可能 是我没说清楚吧。。。

在原demo中返回值格式如下,是包含 标签,置信度,坐标 的6位数组列表: 微信图片_20220309142927

其他模型的返回值格式是 微信图片_20220309142918

在demo 后续只有显示输出的处理,不太明白您指的模型后处理是哪部分?

JingyuanZhang commented 2 years ago

就是 你训练 paddleDetection 模型应该在 paddleDetect 里有对应的 模型预测数据处理,也就是怎么处理 你上图 输出的数据;这个模型和 detect 模型 输出的值结构不一样,所以需要从 paddleDetect 源码库里确认 处理方式

image

detect 模型最后会有一个 multiclass_nms 算子 你的模型里面没有

qiano commented 2 years ago

就是 你训练 paddleDetection 模型应该在 paddleDetect 里有对应的 模型预测数据处理,也就是怎么处理 你上图 输出的数据;这个模型和 detect 模型 输出的值结构不一样,所以需要从 paddleDetect 源码库里确认 处理方式

image

detect 模型最后会有一个 multiclass_nms 算子 你的模型里面没有

明白了,谢谢

luxu1220 commented 2 years ago

@qiano 是 picodet吗,我也遇到同样的问题,现在模型转换前后的精度对齐了,但是同一张图片输出的预测值还有有偏差,在js里面bbox画出来的预测框和 paddledetection预测的位置大致一致,但是明显边界上差很多,你有遇到吗

qiano commented 2 years ago

@qiano 是 picodet吗,我也遇到同样的问题,现在模型转换前后的精度对齐了,但是同一张图片输出的预测值还有有偏差,在js里面bbox画出来的预测框和 paddledetection预测的位置大致一致,但是明显边界上差很多,你有遇到吗

最近一段时间都在做别的项目,没有再跟进。。可以把你的项目git地址给我吗。。我测试一下是否有这个问题。 @luxu1220

sp-ljw commented 2 years ago

@qiano 是 picodet吗,我也遇到同样的问题,现在模型转换前后的精度对齐了,但是同一张图片输出的预测值还有有偏差,在js里面bbox画出来的预测框和 paddledetection预测的位置大致一致,但是明显边界上差很多,你有遇到吗

请问一下你的picodet模型的输出是带nms的后处理吗,还是后处理部分自己在工程里面实现的呀?