[PIDNet](GitHub - XuJiacong/PIDNet: This is the official repository for our recent work: PIDNet)
是22年新开源的实时语义分割算法,和DDRNet一样具有不错的性能
网络结构如下:
网络分为三个分支,如上图,整体结构和DDRNet比较类似,包括源代码也和DDRNet比较类似。
这里多的一个分支新增了分割边缘的信息。
这里采用tensorrtx方式将网络逐层转为TensorRT模型,项目具体不赘述,见:https://github.com/midasklr/PIDNet.TensorRT/blob/main/READMECH.md
需要注意的是实现中的一些细节:
-
Pytorch源码的cityscape数据集训练是:输入数据2048x1024,然后预处理,随机crop出1024x1024训练,测试时候输入是2048x1024,这里TensorRT模型采用输入数据resize成1024x1024然后推理,实测损失不大,主要原因在于做tensorrt和pytorch模型的精度矫正时候发现这种输入损失最小(非常小)。
-
训练时,读取图片=>1024x512=>随机crop出512x512训练。相比原操作训练提升3+倍速度,训练时间从一周降低到2天,代价是mIOU下降约1%。
-
源代码采用DP模式支持多卡训练,测试发现不如单卡训练速度。
-
PAPPM模块修改。原PAPPM中pooling的感受野用于适应2048x1024输入,到PAPPM模块输入时候变为(1, 512,32,64),对应kernel=5、9、17、global。当输入改为1024x512,spp输入(1,512,16,32),pooling kernel如何调整适合。
-
注意PAPPM模块中scale_process中卷积为group=4分组卷积!
TensorRT源码:GitHub - midasklr/PIDNet.TensorRT: TensorRT project of PIDNet