PaddleOCR
PaddleOCR copied to clipboard
有关V2和V3版本ctc head的部分区别问题
注意到V2和V3版本ctc head部分的区别。
V2版本的ctc head中间加了一个mid_channels即增加了一个中间全连接层,当时发布的V2的技术文档也提到增加了这个中间全连接层的作用是,增强head的表达能力。
但V3版本ctc head部分又去掉了这个中间全连接层mid_channels,请问这么做的原因是什么,是因为这个中间全连接层会导致V3的精度降低吗?有做过这方面的实验吗?
v3的核心点是svtr,由于neck部分使用了svtr结构,导致模型有所增大,为了保证整体模型不太大,所以去掉了mid_channels,你也可以试一下加上的效果
我说怎么V3版本的CRNN精度不如V2版本的,原来是head这里默认去掉了中间全连接层啊!!!
我说怎么V3版本的CRNN精度不如V2版本的,原来是head这里默认去掉了中间全连接层啊!!!
我训练也是V3版本不如V2,但也不一定是这个问题,V3版本我调整一些参数是基本能训练到精度和V2差不多的。
V3版本整个模型的输出是比V2版本的输出特征维度少一半的,也可能是这个原因,我正在做实验验证
v3的核心点是svtr,由于neck部分使用了svtr结构,导致模型有所增大,为了保证整体模型不太大,所以去掉了mid_channels,你也可以试一下加上的效果
注意到相同的图片尺寸输入,V3版本是比V2版本要少一半特征,比如 32x96 尺度,V2版本最终输出结果是 (24x字典字符个数),而V3版本最终输出是(12x字典字符个数)。这是因为网络主干的backbone中加了参数 last_conv_stride:[1,2] 造成的吗?我看V2版本使用了默认的last_conv_stride:1
这样做也是为了保证模型不太大吗,感觉精度会有一定程度损失,最起码我输出的ctc解码定位的单个字符位置精度是不如V2版本的。
v3的核心点是svtr,由于neck部分使用了svtr结构,导致模型有所增大,为了保证整体模型不太大,所以去掉了mid_channels,你也可以试一下加上的效果
注意到相同的图片尺寸输入,V3版本是比V2版本要少一半特征,比如 32x96 尺度,V2版本最终输出结果是 (24x字典字符个数),而V3版本最终输出是(12x字典字符个数)。这是因为网络主干的backbone中加了参数 last_conv_stride:[1,2] 造成的吗?我看V2版本使用了默认的last_conv_stride:1
这样做也是为了保证模型不太大吗,感觉精度会有一定程度损失,最起码我输出的ctc解码定位的单个字符位置精度是不如V2版本的。
是的,都是为了保证模型不太大,如果对模型大小没要求,也可以修改这些参数试试效果
v3的核心点是svtr,由于neck部分使用了svtr结构,导致模型有所增大,为了保证整体模型不太大,所以去掉了mid_channels,你也可以试一下加上的效果
注意到相同的图片尺寸输入,V3版本是比V2版本要少一半特征,比如 32x96 尺度,V2版本最终输出结果是 (24x字典字符个数),而V3版本最终输出是(12x字典字符个数)。这是因为网络主干的backbone中加了参数 last_conv_stride:[1,2] 造成的吗?我看V2版本使用了默认的last_conv_stride:1 这样做也是为了保证模型不太大吗,感觉精度会有一定程度损失,最起码我输出的ctc解码定位的单个字符位置精度是不如V2版本的。
是的,都是为了保证模型不太大,如果对模型大小没要求,也可以修改这些参数试试效果
那V2版本在backbone网络之后使用的是默认maxpool最大池化,而V3版本在backbone之后则改为使用avgpool平均池化,这么做的理由是什么?两种池化策略有什么区别或者优劣吗?
avgpool会保留更多信息,效果会好一点点,可以做一下消融实验对比下哈