-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
修改后的LPRNet代码 #1
Comments
您说的“重新定义LPRNet”,是修改原始LPRNet里的哪个模块的结构呢? |
即按你项目 https://github.com/hpc203/license-plate-detect-recoginition-pytorch 里的my_lprnet定义,用它来加载原 https://github.com/sirius-ai/LPRNet_Pytorch 里的训练好的模型,应该是不行吧? |
在我的项目 https://github.com/hpc203/license-plate-detect-recoginition-pytorch 里的my_lprnet定义里,我把池化层用F.max_pool3d的方式做计算的,而在原 https://github.com/sirius-ai/LPRNet_Pytorch 里,它把池化层用nn.MaxPool3d的方式定义在nn.Sequential,用原模型加载到my_lprnet里肯定会出错的。其次,在我的my_lprnet里,你仔细看torch.div里的除数多了一个.item(),为什么要这么做,可以参考我的博文 https://blog.csdn.net/nihate/article/details/115504611 |
池化层里没有训练学习的参数,因此我觉得池化层没必要使用nn.MaxPool这种方式定义在__init__构造函数里,直接使用F.max_pool更简洁 |
你可以设断点调时运行程序,比较一下out1 = torch.div(out1, f.item())和out1 = torch.div(out1, f)里的除数的区别 |
我用 onnxruntime 在python上测试了一下转换后onnx模型,没加.item()时,同样的输入数据,和pytorch的输出是一致的,但加了后,就不一致了(因为转换到onnx模型时,把 torch.div()的除数强制转换成一个固定常数吧?)。 |
你那边在没加.item()时生成的onnx文件,用OpenCV加载这个onnx文件做前向推理,运行程序会报错吗? |
我把您项目 https://github.com/hpc203/license-plate-detect-recoginition-pytorch里自带的 my_lprnet_model.pth 模型转换到onnx, 放到这个项目里去跑,在 this->net = readNet 这里程序就崩溃了(不管有没有.item()都奔溃),提示如下: |
看样子是concat层出问题的,https://github.com/hpc203/license-plate-detect-recoginition-pytorch 这套程序跑通了吗?在转换onnx文件时,要把网络里的3维池化层拆分成两个2维池化层 |
https://github.com/hpc203/license-plate-detect-recoginition-pytorch 这套程序我在python上能跑通,输出结果也正常。就是转成onnx在OpenCV上跑出上述问题。 |
这套程序里使用了两个深度学习模型,一个是使用retinaface做车牌检测,另一个是使用LPRNet做车牌识别,在把LPRNet生成onnx文件时,检查一下输入参数,是否跟pyorch版本的一致 |
我把刚才在OpenCV加载时崩溃的onnx模型(没加.item()的)转成MNN模型,输出的结果和pytorch版一致。 |
那从这个实验,可以看出opencv里的深度学习模块对onnx文件的兼容性不如MNN的好 |
在pytorch转onnx后,加载onnx文件做前向计算的方式有很多种,比如opencv,onnxruntime等等的,只是我习惯使用opencv,如果加载出错,那可以换一种方式 |
您好,按 https://github.com/hpc203/license-plate-detect-recoginition-pytorch 重新定义LPRNet,是否需要重新训练模型呢,还是直接加载原模型 Final_LPRNet_model.pth 就可以了?还是要重新训练吧?
谢谢。
The text was updated successfully, but these errors were encountered: