import paddle import math from x2paddle.op_mapper.pytorch2paddle import pytorch_custom_layer as x2paddle_nn class DetectionModel(paddle.nn.Layer): def __init__(self): super(DetectionModel, self).__init__() self.conv2d0 = paddle.nn.Conv2D(stride=2, padding=2, out_channels=32, kernel_size=(6, 6), in_channels=3) self.silu0 = paddle.nn.Silu() self.conv2d1 = paddle.nn.Conv2D(stride=2, padding=1, out_channels=64, kernel_size=(3, 3), in_channels=32) self.silu1 = paddle.nn.Silu() self.conv2d2 = paddle.nn.Conv2D(out_channels=32, kernel_size=(1, 1), in_channels=64) self.silu2 = paddle.nn.Silu() self.conv2d3 = paddle.nn.Conv2D(out_channels=32, kernel_size=(1, 1), in_channels=32) self.silu3 = paddle.nn.Silu() self.conv2d4 = paddle.nn.Conv2D(padding=1, out_channels=32, kernel_size=(3, 3), in_channels=32) self.silu4 = paddle.nn.Silu() self.conv2d5 = paddle.nn.Conv2D(out_channels=32, kernel_size=(1, 1), in_channels=64) self.silu5 = paddle.nn.Silu() self.conv2d6 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.silu6 = paddle.nn.Silu() self.conv2d7 = paddle.nn.Conv2D(stride=2, padding=1, out_channels=128, kernel_size=(3, 3), in_channels=64) self.silu7 = paddle.nn.Silu() self.conv2d8 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=128) self.silu8 = paddle.nn.Silu() self.conv2d9 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.silu9 = paddle.nn.Silu() self.conv2d10 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=64) self.silu10 = paddle.nn.Silu() self.conv2d11 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.silu11 = paddle.nn.Silu() self.conv2d12 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=64) self.silu12 = paddle.nn.Silu() self.conv2d13 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=128) self.silu13 = paddle.nn.Silu() self.conv2d14 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu14 = paddle.nn.Silu() self.conv2d15 = paddle.nn.Conv2D(stride=2, padding=1, out_channels=256, kernel_size=(3, 3), in_channels=128) self.silu15 = paddle.nn.Silu() self.conv2d16 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=256) self.silu16 = paddle.nn.Silu() self.conv2d17 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu17 = paddle.nn.Silu() self.conv2d18 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu18 = paddle.nn.Silu() self.conv2d19 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu19 = paddle.nn.Silu() self.conv2d20 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu20 = paddle.nn.Silu() self.conv2d21 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu21 = paddle.nn.Silu() self.conv2d22 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu22 = paddle.nn.Silu() self.conv2d23 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=256) self.silu23 = paddle.nn.Silu() self.conv2d24 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=256) self.silu24 = paddle.nn.Silu() self.conv2d25 = paddle.nn.Conv2D(stride=2, padding=1, out_channels=512, kernel_size=(3, 3), in_channels=256) self.silu25 = paddle.nn.Silu() self.conv2d26 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=512) self.silu26 = paddle.nn.Silu() self.conv2d27 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=256) self.silu27 = paddle.nn.Silu() self.conv2d28 = paddle.nn.Conv2D(padding=1, out_channels=256, kernel_size=(3, 3), in_channels=256) self.silu28 = paddle.nn.Silu() self.conv2d29 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=512) self.silu29 = paddle.nn.Silu() self.conv2d30 = paddle.nn.Conv2D(out_channels=512, kernel_size=(1, 1), in_channels=512) self.silu30 = paddle.nn.Silu() self.conv2d31 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=512) self.silu31 = paddle.nn.Silu() self.pool2d0 = paddle.nn.MaxPool2D(kernel_size=[5, 5], stride=1, padding=2) self.pool2d1 = paddle.nn.MaxPool2D(kernel_size=[5, 5], stride=1, padding=2) self.pool2d2 = paddle.nn.MaxPool2D(kernel_size=[5, 5], stride=1, padding=2) self.conv2d32 = paddle.nn.Conv2D(out_channels=512, kernel_size=(1, 1), in_channels=1024) self.silu32 = paddle.nn.Silu() self.conv2d33 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=512) self.silu33 = paddle.nn.Silu() self.conv2d34 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=512) self.silu34 = paddle.nn.Silu() self.conv2d35 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu35 = paddle.nn.Silu() self.conv2d36 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu36 = paddle.nn.Silu() self.conv2d37 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=512) self.silu37 = paddle.nn.Silu() self.conv2d38 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=256) self.silu38 = paddle.nn.Silu() self.conv2d39 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=256) self.silu39 = paddle.nn.Silu() self.conv2d40 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=256) self.silu40 = paddle.nn.Silu() self.conv2d41 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.silu41 = paddle.nn.Silu() self.conv2d42 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=64) self.silu42 = paddle.nn.Silu() self.conv2d43 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=256) self.silu43 = paddle.nn.Silu() self.conv2d44 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu44 = paddle.nn.Silu() self.conv2d45 = paddle.nn.Conv2D(stride=2, padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu45 = paddle.nn.Silu() self.conv2d46 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=256) self.silu46 = paddle.nn.Silu() self.conv2d47 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=128) self.silu47 = paddle.nn.Silu() self.conv2d48 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu48 = paddle.nn.Silu() self.conv2d49 = paddle.nn.Conv2D(out_channels=128, kernel_size=(1, 1), in_channels=256) self.silu49 = paddle.nn.Silu() self.conv2d50 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=256) self.silu50 = paddle.nn.Silu() self.conv2d51 = paddle.nn.Conv2D(stride=2, padding=1, out_channels=256, kernel_size=(3, 3), in_channels=256) self.silu51 = paddle.nn.Silu() self.conv2d52 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=512) self.silu52 = paddle.nn.Silu() self.conv2d53 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=256) self.silu53 = paddle.nn.Silu() self.conv2d54 = paddle.nn.Conv2D(padding=1, out_channels=256, kernel_size=(3, 3), in_channels=256) self.silu54 = paddle.nn.Silu() self.conv2d55 = paddle.nn.Conv2D(out_channels=256, kernel_size=(1, 1), in_channels=512) self.silu55 = paddle.nn.Silu() self.conv2d56 = paddle.nn.Conv2D(out_channels=512, kernel_size=(1, 1), in_channels=512) self.silu56 = paddle.nn.Silu() self.x731 = self.create_parameter(dtype='float32', shape=(1, 8400), default_initializer=paddle.nn.initializer.Constant(value=0.0)) self.conv2d57 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=128) self.silu57 = paddle.nn.Silu() self.conv2d58 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=64) self.silu58 = paddle.nn.Silu() self.conv2d59 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.conv2d60 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=256) self.silu59 = paddle.nn.Silu() self.conv2d61 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=64) self.silu60 = paddle.nn.Silu() self.conv2d62 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.conv2d63 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=512) self.silu61 = paddle.nn.Silu() self.conv2d64 = paddle.nn.Conv2D(padding=1, out_channels=64, kernel_size=(3, 3), in_channels=64) self.silu62 = paddle.nn.Silu() self.conv2d65 = paddle.nn.Conv2D(out_channels=64, kernel_size=(1, 1), in_channels=64) self.conv2d66 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu63 = paddle.nn.Silu() self.conv2d67 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu64 = paddle.nn.Silu() self.conv2d68 = paddle.nn.Conv2D(out_channels=80, kernel_size=(1, 1), in_channels=128) self.conv2d69 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=256) self.silu65 = paddle.nn.Silu() self.conv2d70 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu66 = paddle.nn.Silu() self.conv2d71 = paddle.nn.Conv2D(out_channels=80, kernel_size=(1, 1), in_channels=128) self.conv2d72 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=512) self.silu67 = paddle.nn.Silu() self.conv2d73 = paddle.nn.Conv2D(padding=1, out_channels=128, kernel_size=(3, 3), in_channels=128) self.silu68 = paddle.nn.Silu() self.conv2d74 = paddle.nn.Conv2D(out_channels=80, kernel_size=(1, 1), in_channels=128) self.softmax0 = paddle.nn.Softmax(axis=1) self.conv2d75 = paddle.nn.Conv2D(out_channels=1, kernel_size=(1, 1), bias_attr=False, in_channels=16) self.x949 = self.create_parameter(dtype='float32', shape=(1, 2, 8400), default_initializer=paddle.nn.initializer.Constant(value=0.0)) self.sigmoid0 = paddle.nn.Sigmoid() def forward(self, x0): x49 = self.conv2d0(x0) x50 = self.silu0(x49) x61 = self.conv2d1(x50) x62 = self.silu1(x61) x77 = self.conv2d2(x62) x78 = self.silu2(x77) x89 = self.conv2d3(x78) x90 = self.silu3(x89) x98 = self.conv2d4(x90) x99 = self.silu4(x98) x100 = x78 + x99 x108 = self.conv2d5(x62) x109 = self.silu5(x108) x110 = [x100, x109] x111 = paddle.concat(x=x110, axis=1) x119 = self.conv2d6(x111) x120 = self.silu6(x119) x131 = self.conv2d7(x120) x132 = self.silu7(x131) x147 = self.conv2d8(x132) x148 = self.silu8(x147) x160 = self.conv2d9(x148) x161 = self.silu9(x160) x169 = self.conv2d10(x161) x170 = self.silu10(x169) x171 = x148 + x170 x181 = self.conv2d11(x171) x182 = self.silu11(x181) x190 = self.conv2d12(x182) x191 = self.silu12(x190) x192 = x171 + x191 x200 = self.conv2d13(x132) x201 = self.silu13(x200) x202 = [x192, x201] x203 = paddle.concat(x=x202, axis=1) x211 = self.conv2d14(x203) x212 = self.silu14(x211) x223 = self.conv2d15(x212) x224 = self.silu15(x223) x239 = self.conv2d16(x224) x240 = self.silu16(x239) x253 = self.conv2d17(x240) x254 = self.silu17(x253) x262 = self.conv2d18(x254) x263 = self.silu18(x262) x264 = x240 + x263 x274 = self.conv2d19(x264) x275 = self.silu19(x274) x283 = self.conv2d20(x275) x284 = self.silu20(x283) x285 = x264 + x284 x295 = self.conv2d21(x285) x296 = self.silu21(x295) x304 = self.conv2d22(x296) x305 = self.silu22(x304) x306 = x285 + x305 x314 = self.conv2d23(x224) x315 = self.silu23(x314) x316 = [x306, x315] x317 = paddle.concat(x=x316, axis=1) x325 = self.conv2d24(x317) x326 = self.silu24(x325) x337 = self.conv2d25(x326) x338 = self.silu25(x337) x353 = self.conv2d26(x338) x354 = self.silu26(x353) x365 = self.conv2d27(x354) x366 = self.silu27(x365) x374 = self.conv2d28(x366) x375 = self.silu28(x374) x376 = x354 + x375 x384 = self.conv2d29(x338) x385 = self.silu29(x384) x386 = [x376, x385] x387 = paddle.concat(x=x386, axis=1) x395 = self.conv2d30(x387) x396 = self.silu30(x395) x409 = self.conv2d31(x396) x410 = self.silu31(x409) x415 = self.pool2d0(x410) x420 = self.pool2d1(x415) x425 = self.pool2d2(x420) x426 = [x410, x415, x420, x425] x427 = paddle.concat(x=x426, axis=1) x435 = self.conv2d32(x427) x436 = self.silu32(x435) x447 = self.conv2d33(x436) x448 = self.silu33(x447) x450 = [2.0, 2.0] x451 = paddle.nn.functional.interpolate(x=x448, scale_factor=x450, mode='nearest') x453 = [x451, x326] x454 = paddle.concat(x=x453, axis=1) x469 = self.conv2d34(x454) x470 = self.silu34(x469) x481 = self.conv2d35(x470) x482 = self.silu35(x481) x490 = self.conv2d36(x482) x491 = self.silu36(x490) x499 = self.conv2d37(x454) x500 = self.silu37(x499) x501 = [x491, x500] x502 = paddle.concat(x=x501, axis=1) x510 = self.conv2d38(x502) x511 = self.silu38(x510) x522 = self.conv2d39(x511) x523 = self.silu39(x522) x525 = [2.0, 2.0] x526 = paddle.nn.functional.interpolate(x=x523, scale_factor=x525, mode='nearest') x528 = [x526, x212] x529 = paddle.concat(x=x528, axis=1) x544 = self.conv2d40(x529) x545 = self.silu40(x544) x556 = self.conv2d41(x545) x557 = self.silu41(x556) x565 = self.conv2d42(x557) x566 = self.silu42(x565) x574 = self.conv2d43(x529) x575 = self.silu43(x574) x576 = [x566, x575] x577 = paddle.concat(x=x576, axis=1) x585 = self.conv2d44(x577) x586 = self.silu44(x585) x597 = self.conv2d45(x586) x598 = self.silu45(x597) x600 = [x598, x523] x601 = paddle.concat(x=x600, axis=1) x616 = self.conv2d46(x601) x617 = self.silu46(x616) x628 = self.conv2d47(x617) x629 = self.silu47(x628) x637 = self.conv2d48(x629) x638 = self.silu48(x637) x646 = self.conv2d49(x601) x647 = self.silu49(x646) x648 = [x638, x647] x649 = paddle.concat(x=x648, axis=1) x657 = self.conv2d50(x649) x658 = self.silu50(x657) x669 = self.conv2d51(x658) x670 = self.silu51(x669) x672 = [x670, x448] x673 = paddle.concat(x=x672, axis=1) x688 = self.conv2d52(x673) x689 = self.silu52(x688) x700 = self.conv2d53(x689) x701 = self.silu53(x700) x709 = self.conv2d54(x701) x710 = self.silu54(x709) x718 = self.conv2d55(x673) x719 = self.silu55(x718) x720 = [x710, x719] x721 = paddle.concat(x=x720, axis=1) x729 = self.conv2d56(x721) x730 = self.silu56(x729) x731 = self.x731 x732 = 2 x733 = 2 x736 = 1 x762 = self.conv2d57(x586) x763 = self.silu57(x762) x771 = self.conv2d58(x763) x772 = self.silu58(x771) x779 = self.conv2d59(x772) x781 = paddle.reshape(x=x779, shape=[1, 64, -1]) x792 = self.conv2d60(x658) x793 = self.silu59(x792) x801 = self.conv2d61(x793) x802 = self.silu60(x801) x809 = self.conv2d62(x802) x811 = paddle.reshape(x=x809, shape=[1, 64, -1]) x822 = self.conv2d63(x730) x823 = self.silu61(x822) x831 = self.conv2d64(x823) x832 = self.silu62(x831) x839 = self.conv2d65(x832) x841 = paddle.reshape(x=x839, shape=[1, 64, -1]) x842 = [x781, x811, x841] x843 = paddle.concat(x=x842, axis=-1) x854 = self.conv2d66(x586) x855 = self.silu63(x854) x863 = self.conv2d67(x855) x864 = self.silu64(x863) x871 = self.conv2d68(x864) x873 = paddle.reshape(x=x871, shape=[1, 80, -1]) x884 = self.conv2d69(x658) x885 = self.silu65(x884) x893 = self.conv2d70(x885) x894 = self.silu66(x893) x901 = self.conv2d71(x894) x903 = paddle.reshape(x=x901, shape=[1, 80, -1]) x914 = self.conv2d72(x730) x915 = self.silu67(x914) x923 = self.conv2d73(x915) x924 = self.silu68(x923) x931 = self.conv2d74(x924) x933 = paddle.reshape(x=x931, shape=[1, 80, -1]) x934 = [x873, x903, x933] x935 = paddle.concat(x=x934, axis=-1) x938 = paddle.reshape(x=x843, shape=[1, 4, 16, 8400]) x939_shape = x938.shape x939_len = len(x939_shape) x939_list = [] for i in range(x939_len): x939_list.append(i) if x733 < 0: x733_new = x733 + x939_len else: x733_new = x733 if x736 < 0: x736_new = x736 + x939_len else: x736_new = x736 x939_list[x733_new] = x736_new x939_list[x736_new] = x733_new x939 = paddle.transpose(x=x938, perm=x939_list) x940 = self.softmax0(x939) x946 = self.conv2d75(x940) x948 = paddle.reshape(x=x946, shape=[1, 4, 8400]) x949 = self.x949 x950 = paddle.split(x=x948, num_or_sections=2, axis=1) x951, x952 = x950 x953 = x949 - x951 x954 = x949 + x952 x955 = x953 + x954 x956 = x955 / x732 x957 = x954 - x953 x958 = [x956, x957] x959 = paddle.concat(x=x958, axis=1) x960 = x959 * x731 x961 = self.sigmoid0(x935) x962 = [x960, x961] x963 = paddle.concat(x=x962, axis=1) return x963 def main(x0): # There are 1 inputs. # x0: shape-[1, 3, 640, 640], type-float32. paddle.disable_static() params = paddle.load(r'/work/models/yolo/yolov5su_paddle_model/model.pdparams') model = DetectionModel() model.set_dict(params, use_structured_name=True) model.eval() out = model(x0) return out