YOLO Relay 推理#
参考:ultralytics
import torch
torch.cuda.empty_cache()
测试 YOLO PyTorch 前端#
from PIL import Image
import numpy as np
from ultralytics import YOLO
input_path = "images/vehicle-jaguar-f-type-car-red-cars-wallpaper.jpg"
im = Image.open(input_path)
yolo = YOLO("yolo11n.pt")
results = yolo(np.array(im), conf=0.25)
Image.fromarray(results[0].plot()).resize((320, 208))
0: 416x640 1 car, 275.3ms
Speed: 320.7ms preprocess, 275.3ms inference, 1217.7ms postprocess per image at shape (1, 3, 416, 640)
YOLO 输入预处理#
from PIL import Image
import numpy as np
import torch
from ultralytics.data.augment import LetterBox
imgsz = 640, 640
strides = yolo.model.stride
mean = (0,)
std = (255,)
letterbox = LetterBox(new_shape=imgsz, auto=False, scaleFill=False, scaleup=True, stride=32)
origin_image = np.asanyarray(Image.open(input_path))
letterbox_image = letterbox(image=origin_image)
xs = np.stack([letterbox_image - mean])
print(f"数据内存的连续性:{xs.flags["C_CONTIGUOUS"]}")
xs = xs.transpose((0, 3, 1, 2)) # BHWC to BCHW, (n, 3, h, w)
print(f"数据内存的连续性(transpose):{xs.flags["C_CONTIGUOUS"]}")
xs = np.ascontiguousarray(xs) # contiguous
print(f"数据内存的连续性:{xs.flags["C_CONTIGUOUS"]}")
xs = xs.astype("float32") / std # 归一化值域范围为 0.0 - 1.0
Image.fromarray(
np.concatenate([letterbox_image, (xs[0]*std).astype("uint8").transpose((1, 2, 0))], axis=1)
).resize((640, 320,))
数据内存的连续性:True
数据内存的连续性(transpose):False
数据内存的连续性:True
测试 YOLO ONNX Relay 前端#
导出 ONNX 模型:
yolo.export(format="onnx")
Ultralytics 8.3.58 🚀 Python-3.12.2 torch-2.5.1 CPU (Intel Xeon E5-2678 v3 2.50GHz)
PyTorch: starting from 'yolo11n.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 84, 8400) (5.4 MB)
ONNX: starting export with onnx 1.17.0 opset 19...
ONNX: slimming with onnxslim 0.1.46...
ONNX: export success ✅ 1.7s, saved as 'yolo11n.onnx' (10.2 MB)
Export complete (1.9s)
Results saved to /media/pc/data/lxw/ai/tvm-book/doc/topics/other/ultralytics
Predict: yolo predict task=detect model=yolo11n.onnx imgsz=640
Validate: yolo val task=detect model=yolo11n.onnx imgsz=640 data=/usr/src/ultralytics/ultralytics/cfg/datasets/coco.yaml
Visualize: https://netron.app
'yolo11n.onnx'
前端导入:
import onnx
from tvm import relay
input_name = "images"
onnx_model = onnx.load('yolo11n.onnx')
mod, params = relay.frontend.from_onnx(onnx_model, {input_name: xs.shape}, freeze_params=True)
mod.show()
Show code cell output
def @main(%images: Tensor[(1, 3, 640, 640), float32] /* ty=Tensor[(1, 3, 640, 640), float32] span=/model.0/conv/Conv.images:0:0 */) -> Tensor[(1, 84, 8400), float32] {
%0 = nn.conv2d(%images, meta[relay.Constant][1] /* ty=Tensor[(16, 3, 3, 3), float32] span=/model.0/conv/Conv.model.0.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 320, 320), float32] span=/model.0/conv/Conv:0:0 */;
%1 = nn.bias_add(%0, meta[relay.Constant][2] /* ty=Tensor[(16), float32] span=/model.0/conv/Conv.model.0.conv.bias:0:0 */) /* ty=Tensor[(1, 16, 320, 320), float32] span=/model.0/conv/Conv:0:0 */;
%2 = sigmoid(%1) /* ty=Tensor[(1, 16, 320, 320), float32] span=/model.0/act/Sigmoid:0:0 */;
%3 = multiply(%1, %2) /* ty=Tensor[(1, 16, 320, 320), float32] span=/model.0/act/Mul:0:0 */;
%4 = nn.conv2d(%3, meta[relay.Constant][3] /* ty=Tensor[(32, 16, 3, 3), float32] span=/model.1/conv/Conv.model.1.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.1/conv/Conv:0:0 */;
%5 = nn.bias_add(%4, meta[relay.Constant][4] /* ty=Tensor[(32), float32] span=/model.1/conv/Conv.model.1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.1/conv/Conv:0:0 */;
%6 = sigmoid(%5) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.1/act/Sigmoid:0:0 */;
%7 = multiply(%5, %6) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.1/act/Mul:0:0 */;
%8 = nn.conv2d(%7, meta[relay.Constant][5] /* ty=Tensor[(32, 32, 1, 1), float32] span=/model.2/cv1/conv/Conv.model.2.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.2/cv1/conv/Conv:0:0 */;
%9 = nn.bias_add(%8, meta[relay.Constant][6] /* ty=Tensor[(32), float32] span=/model.2/cv1/conv/Conv.model.2.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.2/cv1/conv/Conv:0:0 */;
%10 = sigmoid(%9) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.2/cv1/act/Sigmoid:0:0 */;
%11 = multiply(%9, %10) /* ty=Tensor[(1, 32, 160, 160), float32] span=/model.2/cv1/act/Mul:0:0 */;
%12 = split(%11, indices_or_sections=[meta[runtime.BoxInt][0]], axis=1) /* ty=(Tensor[(1, 16, 160, 160), float32], Tensor[(1, 16, 160, 160), float32]) span=/model.2/Split:0:0 */;
%13 = %12.1 /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/Split:0:0 */;
%14 = nn.conv2d(%13, meta[relay.Constant][7] /* ty=Tensor[(8, 16, 3, 3), float32] span=/model.2/m.0/cv1/conv/Conv.model.2.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=8, kernel_size=[3, 3]) /* ty=Tensor[(1, 8, 160, 160), float32] span=/model.2/m.0/cv1/conv/Conv:0:0 */;
%15 = nn.bias_add(%14, meta[relay.Constant][8] /* ty=Tensor[(8), float32] span=/model.2/m.0/cv1/conv/Conv.model.2.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 8, 160, 160), float32] span=/model.2/m.0/cv1/conv/Conv:0:0 */;
%16 = sigmoid(%15) /* ty=Tensor[(1, 8, 160, 160), float32] span=/model.2/m.0/cv1/act/Sigmoid:0:0 */;
%17 = multiply(%15, %16) /* ty=Tensor[(1, 8, 160, 160), float32] span=/model.2/m.0/cv1/act/Mul:0:0 */;
%18 = nn.conv2d(%17, meta[relay.Constant][9] /* ty=Tensor[(16, 8, 3, 3), float32] span=/model.2/m.0/cv2/conv/Conv.model.2.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/m.0/cv2/conv/Conv:0:0 */;
%19 = nn.bias_add(%18, meta[relay.Constant][10] /* ty=Tensor[(16), float32] span=/model.2/m.0/cv2/conv/Conv.model.2.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/m.0/cv2/conv/Conv:0:0 */;
%20 = sigmoid(%19) /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/m.0/cv2/act/Sigmoid:0:0 */;
%21 = multiply(%19, %20) /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/m.0/cv2/act/Mul:0:0 */;
%22 = %12.0 /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/Split:0:0 */;
%23 = add(%13, %21) /* ty=Tensor[(1, 16, 160, 160), float32] span=/model.2/m.0/Add:0:0 */;
%24 = (%22, %13, %23) /* ty=(Tensor[(1, 16, 160, 160), float32], Tensor[(1, 16, 160, 160), float32], Tensor[(1, 16, 160, 160), float32]) span=/model.2/Concat:0:0 */;
%25 = concatenate(%24, axis=1) /* ty=Tensor[(1, 48, 160, 160), float32] span=/model.2/Concat:0:0 */;
%26 = nn.conv2d(%25, meta[relay.Constant][11] /* ty=Tensor[(64, 48, 1, 1), float32] span=/model.2/cv2/conv/Conv.model.2.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 160, 160), float32] span=/model.2/cv2/conv/Conv:0:0 */;
%27 = nn.bias_add(%26, meta[relay.Constant][12] /* ty=Tensor[(64), float32] span=/model.2/cv2/conv/Conv.model.2.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 160, 160), float32] span=/model.2/cv2/conv/Conv:0:0 */;
%28 = sigmoid(%27) /* ty=Tensor[(1, 64, 160, 160), float32] span=/model.2/cv2/act/Sigmoid:0:0 */;
%29 = multiply(%27, %28) /* ty=Tensor[(1, 64, 160, 160), float32] span=/model.2/cv2/act/Mul:0:0 */;
%30 = nn.conv2d(%29, meta[relay.Constant][13] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.3/conv/Conv.model.3.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.3/conv/Conv:0:0 */;
%31 = nn.bias_add(%30, meta[relay.Constant][14] /* ty=Tensor[(64), float32] span=/model.3/conv/Conv.model.3.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.3/conv/Conv:0:0 */;
%32 = sigmoid(%31) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.3/act/Sigmoid:0:0 */;
%33 = multiply(%31, %32) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.3/act/Mul:0:0 */;
%34 = nn.conv2d(%33, meta[relay.Constant][15] /* ty=Tensor[(64, 64, 1, 1), float32] span=/model.4/cv1/conv/Conv.model.4.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.4/cv1/conv/Conv:0:0 */;
%35 = nn.bias_add(%34, meta[relay.Constant][16] /* ty=Tensor[(64), float32] span=/model.4/cv1/conv/Conv.model.4.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.4/cv1/conv/Conv:0:0 */;
%36 = sigmoid(%35) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.4/cv1/act/Sigmoid:0:0 */;
%37 = multiply(%35, %36) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.4/cv1/act/Mul:0:0 */;
%38 = split(%37, indices_or_sections=[meta[runtime.BoxInt][1]], axis=1) /* ty=(Tensor[(1, 32, 80, 80), float32], Tensor[(1, 32, 80, 80), float32]) span=/model.4/Split:0:0 */;
%39 = %38.1 /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/Split:0:0 */;
%40 = nn.conv2d(%39, meta[relay.Constant][17] /* ty=Tensor[(16, 32, 3, 3), float32] span=/model.4/m.0/cv1/conv/Conv.model.4.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.4/m.0/cv1/conv/Conv:0:0 */;
%41 = nn.bias_add(%40, meta[relay.Constant][18] /* ty=Tensor[(16), float32] span=/model.4/m.0/cv1/conv/Conv.model.4.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.4/m.0/cv1/conv/Conv:0:0 */;
%42 = sigmoid(%41) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.4/m.0/cv1/act/Sigmoid:0:0 */;
%43 = multiply(%41, %42) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.4/m.0/cv1/act/Mul:0:0 */;
%44 = nn.conv2d(%43, meta[relay.Constant][19] /* ty=Tensor[(32, 16, 3, 3), float32] span=/model.4/m.0/cv2/conv/Conv.model.4.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/m.0/cv2/conv/Conv:0:0 */;
%45 = nn.bias_add(%44, meta[relay.Constant][20] /* ty=Tensor[(32), float32] span=/model.4/m.0/cv2/conv/Conv.model.4.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/m.0/cv2/conv/Conv:0:0 */;
%46 = sigmoid(%45) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/m.0/cv2/act/Sigmoid:0:0 */;
%47 = multiply(%45, %46) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/m.0/cv2/act/Mul:0:0 */;
%48 = %38.0 /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/Split:0:0 */;
%49 = add(%39, %47) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.4/m.0/Add:0:0 */;
%50 = (%48, %39, %49) /* ty=(Tensor[(1, 32, 80, 80), float32], Tensor[(1, 32, 80, 80), float32], Tensor[(1, 32, 80, 80), float32]) span=/model.4/Concat:0:0 */;
%51 = concatenate(%50, axis=1) /* ty=Tensor[(1, 96, 80, 80), float32] span=/model.4/Concat:0:0 */;
%52 = nn.conv2d(%51, meta[relay.Constant][21] /* ty=Tensor[(128, 96, 1, 1), float32] span=/model.4/cv2/conv/Conv.model.4.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 80, 80), float32] span=/model.4/cv2/conv/Conv:0:0 */;
%53 = nn.bias_add(%52, meta[relay.Constant][22] /* ty=Tensor[(128), float32] span=/model.4/cv2/conv/Conv.model.4.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 80, 80), float32] span=/model.4/cv2/conv/Conv:0:0 */;
%54 = sigmoid(%53) /* ty=Tensor[(1, 128, 80, 80), float32] span=/model.4/cv2/act/Sigmoid:0:0 */;
%55 = multiply(%53, %54) /* ty=Tensor[(1, 128, 80, 80), float32] span=/model.4/cv2/act/Mul:0:0 */;
%56 = nn.conv2d(%55, meta[relay.Constant][23] /* ty=Tensor[(128, 128, 3, 3), float32] span=/model.5/conv/Conv.model.5.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.5/conv/Conv:0:0 */;
%57 = nn.bias_add(%56, meta[relay.Constant][24] /* ty=Tensor[(128), float32] span=/model.5/conv/Conv.model.5.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.5/conv/Conv:0:0 */;
%58 = sigmoid(%57) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.5/act/Sigmoid:0:0 */;
%59 = multiply(%57, %58) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.5/act/Mul:0:0 */;
%60 = nn.conv2d(%59, meta[relay.Constant][25] /* ty=Tensor[(128, 128, 1, 1), float32] span=/model.6/cv1/conv/Conv.model.6.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv1/conv/Conv:0:0 */;
%61 = nn.bias_add(%60, meta[relay.Constant][26] /* ty=Tensor[(128), float32] span=/model.6/cv1/conv/Conv.model.6.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv1/conv/Conv:0:0 */;
%62 = sigmoid(%61) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv1/act/Sigmoid:0:0 */;
%63 = multiply(%61, %62) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv1/act/Mul:0:0 */;
%64 = split(%63, indices_or_sections=[meta[runtime.BoxInt][2]], axis=1) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32]) span=/model.6/Split:0:0 */;
%65 = %64.1 /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/Split:0:0 */;
%66 = nn.conv2d(%65, meta[relay.Constant][27] /* ty=Tensor[(32, 64, 1, 1), float32] span=/model.6/m.0/cv1/conv/Conv.model.6.m.0.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv1/conv/Conv:0:0 */;
%67 = nn.bias_add(%66, meta[relay.Constant][28] /* ty=Tensor[(32), float32] span=/model.6/m.0/cv1/conv/Conv.model.6.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv1/conv/Conv:0:0 */;
%68 = sigmoid(%67) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv1/act/Sigmoid:0:0 */;
%69 = multiply(%67, %68) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv1/act/Mul:0:0 */;
%70 = nn.conv2d(%69, meta[relay.Constant][29] /* ty=Tensor[(32, 32, 3, 3), float32] span=/model.6/m.0/m/m.0/cv1/conv/Conv.model.6.m.0.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv1/conv/Conv:0:0 */;
%71 = nn.bias_add(%70, meta[relay.Constant][30] /* ty=Tensor[(32), float32] span=/model.6/m.0/m/m.0/cv1/conv/Conv.model.6.m.0.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv1/conv/Conv:0:0 */;
%72 = sigmoid(%71) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv1/act/Sigmoid:0:0 */;
%73 = multiply(%71, %72) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv1/act/Mul:0:0 */;
%74 = nn.conv2d(%73, meta[relay.Constant][31] /* ty=Tensor[(32, 32, 3, 3), float32] span=/model.6/m.0/m/m.0/cv2/conv/Conv.model.6.m.0.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv2/conv/Conv:0:0 */;
%75 = nn.bias_add(%74, meta[relay.Constant][32] /* ty=Tensor[(32), float32] span=/model.6/m.0/m/m.0/cv2/conv/Conv.model.6.m.0.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv2/conv/Conv:0:0 */;
%76 = sigmoid(%75) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv2/act/Sigmoid:0:0 */;
%77 = multiply(%75, %76) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/cv2/act/Mul:0:0 */;
%78 = add(%69, %77) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.0/Add:0:0 */;
%79 = nn.conv2d(%78, meta[relay.Constant][33] /* ty=Tensor[(32, 32, 3, 3), float32] span=/model.6/m.0/m/m.1/cv1/conv/Conv.model.6.m.0.m.1.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv1/conv/Conv:0:0 */;
%80 = nn.bias_add(%79, meta[relay.Constant][34] /* ty=Tensor[(32), float32] span=/model.6/m.0/m/m.1/cv1/conv/Conv.model.6.m.0.m.1.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv1/conv/Conv:0:0 */;
%81 = sigmoid(%80) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv1/act/Sigmoid:0:0 */;
%82 = multiply(%80, %81) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv1/act/Mul:0:0 */;
%83 = nn.conv2d(%82, meta[relay.Constant][35] /* ty=Tensor[(32, 32, 3, 3), float32] span=/model.6/m.0/m/m.1/cv2/conv/Conv.model.6.m.0.m.1.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv2/conv/Conv:0:0 */;
%84 = nn.bias_add(%83, meta[relay.Constant][36] /* ty=Tensor[(32), float32] span=/model.6/m.0/m/m.1/cv2/conv/Conv.model.6.m.0.m.1.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv2/conv/Conv:0:0 */;
%85 = sigmoid(%84) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv2/act/Sigmoid:0:0 */;
%86 = multiply(%84, %85) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/cv2/act/Mul:0:0 */;
%87 = nn.conv2d(%65, meta[relay.Constant][37] /* ty=Tensor[(32, 64, 1, 1), float32] span=/model.6/m.0/cv2/conv/Conv.model.6.m.0.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv2/conv/Conv:0:0 */;
%88 = nn.bias_add(%87, meta[relay.Constant][38] /* ty=Tensor[(32), float32] span=/model.6/m.0/cv2/conv/Conv.model.6.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv2/conv/Conv:0:0 */;
%89 = sigmoid(%88) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv2/act/Sigmoid:0:0 */;
%90 = add(%78, %86) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/m/m.1/Add:0:0 */;
%91 = multiply(%88, %89) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.6/m.0/cv2/act/Mul:0:0 */;
%92 = (%90, %91) /* ty=(Tensor[(1, 32, 40, 40), float32], Tensor[(1, 32, 40, 40), float32]) span=/model.6/m.0/Concat:0:0 */;
%93 = concatenate(%92, axis=1) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/m.0/Concat:0:0 */;
%94 = nn.conv2d(%93, meta[relay.Constant][39] /* ty=Tensor[(64, 64, 1, 1), float32] span=/model.6/m.0/cv3/conv/Conv.model.6.m.0.cv3.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/m.0/cv3/conv/Conv:0:0 */;
%95 = nn.bias_add(%94, meta[relay.Constant][40] /* ty=Tensor[(64), float32] span=/model.6/m.0/cv3/conv/Conv.model.6.m.0.cv3.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/m.0/cv3/conv/Conv:0:0 */;
%96 = sigmoid(%95) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/m.0/cv3/act/Sigmoid:0:0 */;
%97 = %64.0 /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/Split:0:0 */;
%98 = multiply(%95, %96) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.6/m.0/cv3/act/Mul:0:0 */;
%99 = (%97, %65, %98) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32]) span=/model.6/Concat:0:0 */;
%100 = concatenate(%99, axis=1) /* ty=Tensor[(1, 192, 40, 40), float32] span=/model.6/Concat:0:0 */;
%101 = nn.conv2d(%100, meta[relay.Constant][41] /* ty=Tensor[(128, 192, 1, 1), float32] span=/model.6/cv2/conv/Conv.model.6.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv2/conv/Conv:0:0 */;
%102 = nn.bias_add(%101, meta[relay.Constant][42] /* ty=Tensor[(128), float32] span=/model.6/cv2/conv/Conv.model.6.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv2/conv/Conv:0:0 */;
%103 = sigmoid(%102) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv2/act/Sigmoid:0:0 */;
%104 = multiply(%102, %103) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.6/cv2/act/Mul:0:0 */;
%105 = nn.conv2d(%104, meta[relay.Constant][43] /* ty=Tensor[(256, 128, 3, 3), float32] span=/model.7/conv/Conv.model.7.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.7/conv/Conv:0:0 */;
%106 = nn.bias_add(%105, meta[relay.Constant][44] /* ty=Tensor[(256), float32] span=/model.7/conv/Conv.model.7.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.7/conv/Conv:0:0 */;
%107 = sigmoid(%106) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.7/act/Sigmoid:0:0 */;
%108 = multiply(%106, %107) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.7/act/Mul:0:0 */;
%109 = nn.conv2d(%108, meta[relay.Constant][45] /* ty=Tensor[(256, 256, 1, 1), float32] span=/model.8/cv1/conv/Conv.model.8.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv1/conv/Conv:0:0 */;
%110 = nn.bias_add(%109, meta[relay.Constant][46] /* ty=Tensor[(256), float32] span=/model.8/cv1/conv/Conv.model.8.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv1/conv/Conv:0:0 */;
%111 = sigmoid(%110) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv1/act/Sigmoid:0:0 */;
%112 = multiply(%110, %111) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv1/act/Mul:0:0 */;
%113 = split(%112, indices_or_sections=[meta[runtime.BoxInt][3]], axis=1) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.8/Split:0:0 */;
%114 = %113.1 /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/Split:0:0 */;
%115 = nn.conv2d(%114, meta[relay.Constant][47] /* ty=Tensor[(64, 128, 1, 1), float32] span=/model.8/m.0/cv1/conv/Conv.model.8.m.0.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv1/conv/Conv:0:0 */;
%116 = nn.bias_add(%115, meta[relay.Constant][48] /* ty=Tensor[(64), float32] span=/model.8/m.0/cv1/conv/Conv.model.8.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv1/conv/Conv:0:0 */;
%117 = sigmoid(%116) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv1/act/Sigmoid:0:0 */;
%118 = multiply(%116, %117) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv1/act/Mul:0:0 */;
%119 = nn.conv2d(%118, meta[relay.Constant][49] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.8/m.0/m/m.0/cv1/conv/Conv.model.8.m.0.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv1/conv/Conv:0:0 */;
%120 = nn.bias_add(%119, meta[relay.Constant][50] /* ty=Tensor[(64), float32] span=/model.8/m.0/m/m.0/cv1/conv/Conv.model.8.m.0.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv1/conv/Conv:0:0 */;
%121 = sigmoid(%120) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv1/act/Sigmoid:0:0 */;
%122 = multiply(%120, %121) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv1/act/Mul:0:0 */;
%123 = nn.conv2d(%122, meta[relay.Constant][51] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.8/m.0/m/m.0/cv2/conv/Conv.model.8.m.0.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv2/conv/Conv:0:0 */;
%124 = nn.bias_add(%123, meta[relay.Constant][52] /* ty=Tensor[(64), float32] span=/model.8/m.0/m/m.0/cv2/conv/Conv.model.8.m.0.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv2/conv/Conv:0:0 */;
%125 = sigmoid(%124) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv2/act/Sigmoid:0:0 */;
%126 = multiply(%124, %125) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/cv2/act/Mul:0:0 */;
%127 = add(%118, %126) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.0/Add:0:0 */;
%128 = nn.conv2d(%127, meta[relay.Constant][53] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.8/m.0/m/m.1/cv1/conv/Conv.model.8.m.0.m.1.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv1/conv/Conv:0:0 */;
%129 = nn.bias_add(%128, meta[relay.Constant][54] /* ty=Tensor[(64), float32] span=/model.8/m.0/m/m.1/cv1/conv/Conv.model.8.m.0.m.1.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv1/conv/Conv:0:0 */;
%130 = sigmoid(%129) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv1/act/Sigmoid:0:0 */;
%131 = multiply(%129, %130) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv1/act/Mul:0:0 */;
%132 = nn.conv2d(%131, meta[relay.Constant][55] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.8/m.0/m/m.1/cv2/conv/Conv.model.8.m.0.m.1.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv2/conv/Conv:0:0 */;
%133 = nn.bias_add(%132, meta[relay.Constant][56] /* ty=Tensor[(64), float32] span=/model.8/m.0/m/m.1/cv2/conv/Conv.model.8.m.0.m.1.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv2/conv/Conv:0:0 */;
%134 = sigmoid(%133) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv2/act/Sigmoid:0:0 */;
%135 = multiply(%133, %134) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/cv2/act/Mul:0:0 */;
%136 = nn.conv2d(%114, meta[relay.Constant][57] /* ty=Tensor[(64, 128, 1, 1), float32] span=/model.8/m.0/cv2/conv/Conv.model.8.m.0.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv2/conv/Conv:0:0 */;
%137 = nn.bias_add(%136, meta[relay.Constant][58] /* ty=Tensor[(64), float32] span=/model.8/m.0/cv2/conv/Conv.model.8.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv2/conv/Conv:0:0 */;
%138 = sigmoid(%137) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv2/act/Sigmoid:0:0 */;
%139 = add(%127, %135) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/m/m.1/Add:0:0 */;
%140 = multiply(%137, %138) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.8/m.0/cv2/act/Mul:0:0 */;
%141 = (%139, %140) /* ty=(Tensor[(1, 64, 20, 20), float32], Tensor[(1, 64, 20, 20), float32]) span=/model.8/m.0/Concat:0:0 */;
%142 = concatenate(%141, axis=1) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/m.0/Concat:0:0 */;
%143 = nn.conv2d(%142, meta[relay.Constant][59] /* ty=Tensor[(128, 128, 1, 1), float32] span=/model.8/m.0/cv3/conv/Conv.model.8.m.0.cv3.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/m.0/cv3/conv/Conv:0:0 */;
%144 = nn.bias_add(%143, meta[relay.Constant][60] /* ty=Tensor[(128), float32] span=/model.8/m.0/cv3/conv/Conv.model.8.m.0.cv3.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/m.0/cv3/conv/Conv:0:0 */;
%145 = sigmoid(%144) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/m.0/cv3/act/Sigmoid:0:0 */;
%146 = %113.0 /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/Split:0:0 */;
%147 = multiply(%144, %145) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.8/m.0/cv3/act/Mul:0:0 */;
%148 = (%146, %114, %147) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.8/Concat:0:0 */;
%149 = concatenate(%148, axis=1) /* ty=Tensor[(1, 384, 20, 20), float32] span=/model.8/Concat:0:0 */;
%150 = nn.conv2d(%149, meta[relay.Constant][61] /* ty=Tensor[(256, 384, 1, 1), float32] span=/model.8/cv2/conv/Conv.model.8.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv2/conv/Conv:0:0 */;
%151 = nn.bias_add(%150, meta[relay.Constant][62] /* ty=Tensor[(256), float32] span=/model.8/cv2/conv/Conv.model.8.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv2/conv/Conv:0:0 */;
%152 = sigmoid(%151) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv2/act/Sigmoid:0:0 */;
%153 = multiply(%151, %152) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.8/cv2/act/Mul:0:0 */;
%154 = nn.conv2d(%153, meta[relay.Constant][63] /* ty=Tensor[(128, 256, 1, 1), float32] span=/model.9/cv1/conv/Conv.model.9.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/cv1/conv/Conv:0:0 */;
%155 = nn.bias_add(%154, meta[relay.Constant][64] /* ty=Tensor[(128), float32] span=/model.9/cv1/conv/Conv.model.9.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/cv1/conv/Conv:0:0 */;
%156 = sigmoid(%155) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/cv1/act/Sigmoid:0:0 */;
%157 = multiply(%155, %156) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/cv1/act/Mul:0:0 */;
%158 = nn.max_pool2d(%157, pool_size=[5, 5], padding=[2, 2, 2, 2]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/m/MaxPool:0:0 */;
%159 = nn.max_pool2d(%158, pool_size=[5, 5], padding=[2, 2, 2, 2]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/m_1/MaxPool:0:0 */;
%160 = nn.max_pool2d(%159, pool_size=[5, 5], padding=[2, 2, 2, 2]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.9/m_2/MaxPool:0:0 */;
%161 = (%157, %158, %159, %160) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.9/Concat:0:0 */;
%162 = concatenate(%161, axis=1) /* ty=Tensor[(1, 512, 20, 20), float32] span=/model.9/Concat:0:0 */;
%163 = nn.conv2d(%162, meta[relay.Constant][65] /* ty=Tensor[(256, 512, 1, 1), float32] span=/model.9/cv2/conv/Conv.model.9.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.9/cv2/conv/Conv:0:0 */;
%164 = nn.bias_add(%163, meta[relay.Constant][66] /* ty=Tensor[(256), float32] span=/model.9/cv2/conv/Conv.model.9.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.9/cv2/conv/Conv:0:0 */;
%165 = sigmoid(%164) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.9/cv2/act/Sigmoid:0:0 */;
%166 = multiply(%164, %165) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.9/cv2/act/Mul:0:0 */;
%167 = nn.conv2d(%166, meta[relay.Constant][67] /* ty=Tensor[(256, 256, 1, 1), float32] span=/model.10/cv1/conv/Conv.model.10.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv1/conv/Conv:0:0 */;
%168 = nn.bias_add(%167, meta[relay.Constant][68] /* ty=Tensor[(256), float32] span=/model.10/cv1/conv/Conv.model.10.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv1/conv/Conv:0:0 */;
%169 = sigmoid(%168) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv1/act/Sigmoid:0:0 */;
%170 = multiply(%168, %169) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv1/act/Mul:0:0 */;
%171 = split(%170, indices_or_sections=[meta[runtime.BoxInt][4]], axis=1) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.10/Split:0:0 */;
%172 = %171.1 /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/Split:0:0 */;
%173 = nn.conv2d(%172, meta[relay.Constant][69] /* ty=Tensor[(256, 128, 1, 1), float32] span=/model.10/m/m.0/attn/qkv/conv/Conv.model.10.m.0.attn.qkv.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/m/m.0/attn/qkv/conv/Conv:0:0 */;
%174 = nn.bias_add(%173, meta[relay.Constant][70] /* ty=Tensor[(256), float32] span=/model.10/m/m.0/attn/qkv/conv/Conv.model.10.m.0.attn.qkv.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/m/m.0/attn/qkv/conv/Conv:0:0 */;
%175 = reshape(%174, newshape=[1, 2, 128, 400]) /* ty=Tensor[(1, 2, 128, 400), float32] span=/model.10/m/m.0/attn/Reshape:0:0 */;
%176 = split(%175, indices_or_sections=[meta[runtime.BoxInt][5], meta[runtime.BoxInt][6]], axis=2) /* ty=(Tensor[(1, 2, 32, 400), float32], Tensor[(1, 2, 32, 400), float32], Tensor[(1, 2, 64, 400), float32]) span=/model.10/m/m.0/attn/Split:0:0 */;
%177 = %176.2 /* ty=Tensor[(1, 2, 64, 400), float32] span=/model.10/m/m.0/attn/Split:0:0 */;
%178 = %176.0 /* ty=Tensor[(1, 2, 32, 400), float32] span=/model.10/m/m.0/attn/Split:0:0 */;
%179 = transpose(%178, axes=[0, 1, 3, 2]) /* ty=Tensor[(1, 2, 400, 32), float32] span=/model.10/m/m.0/attn/Transpose:0:0 */;
%180 = %176.1 /* ty=Tensor[(1, 2, 32, 400), float32] span=/model.10/m/m.0/attn/Split:0:0 */;
%181 = reshape(%180, newshape=[-1, 32, 400]) /* ty=Tensor[(2, 32, 400), float32] span=/model.10/m/m.0/attn/MatMul:0:0 */;
%182 = reshape(%179, newshape=[-1, 400, 32]) /* ty=Tensor[(2, 400, 32), float32] span=/model.10/m/m.0/attn/MatMul:0:0 */;
%183 = transpose(%181, axes=[0, 2, 1]) /* ty=Tensor[(2, 400, 32), float32] span=/model.10/m/m.0/attn/MatMul:0:0 */;
%184 = nn.batch_matmul(%182, %183, out_dtype="float32", transpose_b=True) /* ty=Tensor[(2, 400, 400), float32] span=/model.10/m/m.0/attn/MatMul:0:0 */;
%185 = reshape(%184, newshape=[1, 2, 400, 400]) /* ty=Tensor[(1, 2, 400, 400), float32] span=/model.10/m/m.0/attn/MatMul:0:0 */;
%186 = multiply(%185, 0.176777f /* ty=float32 span=/model.10/m/m.0/attn/Mul./model.10/m/m.0/attn/Constant_1_output_0:0:0 */) /* ty=Tensor[(1, 2, 400, 400), float32] span=/model.10/m/m.0/attn/Mul:0:0 */;
%187 = nn.softmax(%186, axis=3) /* ty=Tensor[(1, 2, 400, 400), float32] span=/model.10/m/m.0/attn/Softmax:0:0 */;
%188 = transpose(%187, axes=[0, 1, 3, 2]) /* ty=Tensor[(1, 2, 400, 400), float32] span=/model.10/m/m.0/attn/Transpose_1:0:0 */;
%189 = reshape(%188, newshape=[-1, 400, 400]) /* ty=Tensor[(2, 400, 400), float32] span=/model.10/m/m.0/attn/MatMul_1:0:0 */;
%190 = reshape(%177, newshape=[-1, 64, 400]) /* ty=Tensor[(2, 64, 400), float32] span=/model.10/m/m.0/attn/MatMul_1:0:0 */;
%191 = transpose(%189, axes=[0, 2, 1]) /* ty=Tensor[(2, 400, 400), float32] span=/model.10/m/m.0/attn/MatMul_1:0:0 */;
%192 = nn.batch_matmul(%190, %191, out_dtype="float32", transpose_b=True) /* ty=Tensor[(2, 64, 400), float32] span=/model.10/m/m.0/attn/MatMul_1:0:0 */;
%193 = reshape(%192, newshape=[1, 2, 64, 400]) /* ty=Tensor[(1, 2, 64, 400), float32] span=/model.10/m/m.0/attn/MatMul_1:0:0 */;
%194 = reshape(%177, newshape=[1, 128, 20, 20]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/Reshape_2:0:0 */;
%195 = nn.conv2d(%194, meta[relay.Constant][71] /* ty=Tensor[(128, 1, 3, 3), float32] span=/model.10/m/m.0/attn/pe/conv/Conv.model.10.m.0.attn.pe.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=128, channels=128, kernel_size=[3, 3]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/pe/conv/Conv:0:0 */;
%196 = reshape(%193, newshape=[1, 128, 20, 20]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/Reshape_1:0:0 */;
%197 = nn.bias_add(%195, meta[relay.Constant][72] /* ty=Tensor[(128), float32] span=/model.10/m/m.0/attn/pe/conv/Conv.model.10.m.0.attn.pe.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/pe/conv/Conv:0:0 */;
%198 = add(%196, %197) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/Add:0:0 */;
%199 = nn.conv2d(%198, meta[relay.Constant][73] /* ty=Tensor[(128, 128, 1, 1), float32] span=/model.10/m/m.0/attn/proj/conv/Conv.model.10.m.0.attn.proj.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/proj/conv/Conv:0:0 */;
%200 = nn.bias_add(%199, meta[relay.Constant][74] /* ty=Tensor[(128), float32] span=/model.10/m/m.0/attn/proj/conv/Conv.model.10.m.0.attn.proj.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/attn/proj/conv/Conv:0:0 */;
%201 = add(%172, %200) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/Add:0:0 */;
%202 = nn.conv2d(%201, meta[relay.Constant][75] /* ty=Tensor[(256, 128, 1, 1), float32] span=/model.10/m/m.0/ffn/ffn.0/conv/Conv.model.10.m.0.ffn.0.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/m/m.0/ffn/ffn.0/conv/Conv:0:0 */;
%203 = nn.bias_add(%202, meta[relay.Constant][76] /* ty=Tensor[(256), float32] span=/model.10/m/m.0/ffn/ffn.0/conv/Conv.model.10.m.0.ffn.0.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/m/m.0/ffn/ffn.0/conv/Conv:0:0 */;
%204 = sigmoid(%203) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/m/m.0/ffn/ffn.0/act/Sigmoid:0:0 */;
%205 = multiply(%203, %204) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/m/m.0/ffn/ffn.0/act/Mul:0:0 */;
%206 = nn.conv2d(%205, meta[relay.Constant][77] /* ty=Tensor[(128, 256, 1, 1), float32] span=/model.10/m/m.0/ffn/ffn.1/conv/Conv.model.10.m.0.ffn.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/ffn/ffn.1/conv/Conv:0:0 */;
%207 = nn.bias_add(%206, meta[relay.Constant][78] /* ty=Tensor[(128), float32] span=/model.10/m/m.0/ffn/ffn.1/conv/Conv.model.10.m.0.ffn.1.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/ffn/ffn.1/conv/Conv:0:0 */;
%208 = %171.0 /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/Split:0:0 */;
%209 = add(%201, %207) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.10/m/m.0/Add_1:0:0 */;
%210 = (%208, %209) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.10/Concat:0:0 */;
%211 = concatenate(%210, axis=1) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/Concat:0:0 */;
%212 = nn.conv2d(%211, meta[relay.Constant][79] /* ty=Tensor[(256, 256, 1, 1), float32] span=/model.10/cv2/conv/Conv.model.10.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv2/conv/Conv:0:0 */;
%213 = nn.bias_add(%212, meta[relay.Constant][80] /* ty=Tensor[(256), float32] span=/model.10/cv2/conv/Conv.model.10.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv2/conv/Conv:0:0 */;
%214 = sigmoid(%213) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv2/act/Sigmoid:0:0 */;
%215 = multiply(%213, %214) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.10/cv2/act/Mul:0:0 */;
%216 = image.resize2d(%215, size=[40, 40], roi=[0f, 0f, 0f, 0f], method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="floor", cubic_alpha=-0.75f) /* ty=Tensor[(1, 256, 40, 40), float32] span=/model.11/Resize:0:0 */;
%217 = (%216, %104) /* ty=(Tensor[(1, 256, 40, 40), float32], Tensor[(1, 128, 40, 40), float32]) span=/model.12/Concat:0:0 */;
%218 = concatenate(%217, axis=1) /* ty=Tensor[(1, 384, 40, 40), float32] span=/model.12/Concat:0:0 */;
%219 = nn.conv2d(%218, meta[relay.Constant][81] /* ty=Tensor[(128, 384, 1, 1), float32] span=/model.13/cv1/conv/Conv.model.13.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv1/conv/Conv:0:0 */;
%220 = nn.bias_add(%219, meta[relay.Constant][82] /* ty=Tensor[(128), float32] span=/model.13/cv1/conv/Conv.model.13.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv1/conv/Conv:0:0 */;
%221 = sigmoid(%220) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv1/act/Sigmoid:0:0 */;
%222 = multiply(%220, %221) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv1/act/Mul:0:0 */;
%223 = split(%222, indices_or_sections=[meta[runtime.BoxInt][7]], axis=1) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32]) span=/model.13/Split:0:0 */;
%224 = %223.1 /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/Split:0:0 */;
%225 = nn.conv2d(%224, meta[relay.Constant][83] /* ty=Tensor[(32, 64, 3, 3), float32] span=/model.13/m.0/cv1/conv/Conv.model.13.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.13/m.0/cv1/conv/Conv:0:0 */;
%226 = nn.bias_add(%225, meta[relay.Constant][84] /* ty=Tensor[(32), float32] span=/model.13/m.0/cv1/conv/Conv.model.13.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.13/m.0/cv1/conv/Conv:0:0 */;
%227 = sigmoid(%226) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.13/m.0/cv1/act/Sigmoid:0:0 */;
%228 = multiply(%226, %227) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.13/m.0/cv1/act/Mul:0:0 */;
%229 = nn.conv2d(%228, meta[relay.Constant][85] /* ty=Tensor[(64, 32, 3, 3), float32] span=/model.13/m.0/cv2/conv/Conv.model.13.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/m.0/cv2/conv/Conv:0:0 */;
%230 = nn.bias_add(%229, meta[relay.Constant][86] /* ty=Tensor[(64), float32] span=/model.13/m.0/cv2/conv/Conv.model.13.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/m.0/cv2/conv/Conv:0:0 */;
%231 = sigmoid(%230) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/m.0/cv2/act/Sigmoid:0:0 */;
%232 = multiply(%230, %231) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/m.0/cv2/act/Mul:0:0 */;
%233 = %223.0 /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/Split:0:0 */;
%234 = add(%224, %232) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.13/m.0/Add:0:0 */;
%235 = (%233, %224, %234) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32]) span=/model.13/Concat:0:0 */;
%236 = concatenate(%235, axis=1) /* ty=Tensor[(1, 192, 40, 40), float32] span=/model.13/Concat:0:0 */;
%237 = nn.conv2d(%236, meta[relay.Constant][87] /* ty=Tensor[(128, 192, 1, 1), float32] span=/model.13/cv2/conv/Conv.model.13.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv2/conv/Conv:0:0 */;
%238 = nn.bias_add(%237, meta[relay.Constant][88] /* ty=Tensor[(128), float32] span=/model.13/cv2/conv/Conv.model.13.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv2/conv/Conv:0:0 */;
%239 = sigmoid(%238) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv2/act/Sigmoid:0:0 */;
%240 = multiply(%238, %239) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.13/cv2/act/Mul:0:0 */;
%241 = image.resize2d(%240, size=[80, 80], roi=[0f, 0f, 0f, 0f], method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="floor", cubic_alpha=-0.75f) /* ty=Tensor[(1, 128, 80, 80), float32] span=/model.14/Resize:0:0 */;
%242 = (%241, %55) /* ty=(Tensor[(1, 128, 80, 80), float32], Tensor[(1, 128, 80, 80), float32]) span=/model.15/Concat:0:0 */;
%243 = concatenate(%242, axis=1) /* ty=Tensor[(1, 256, 80, 80), float32] span=/model.15/Concat:0:0 */;
%244 = nn.conv2d(%243, meta[relay.Constant][89] /* ty=Tensor[(64, 256, 1, 1), float32] span=/model.16/cv1/conv/Conv.model.16.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv1/conv/Conv:0:0 */;
%245 = nn.bias_add(%244, meta[relay.Constant][90] /* ty=Tensor[(64), float32] span=/model.16/cv1/conv/Conv.model.16.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv1/conv/Conv:0:0 */;
%246 = sigmoid(%245) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv1/act/Sigmoid:0:0 */;
%247 = multiply(%245, %246) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv1/act/Mul:0:0 */;
%248 = split(%247, indices_or_sections=[meta[runtime.BoxInt][8]], axis=1) /* ty=(Tensor[(1, 32, 80, 80), float32], Tensor[(1, 32, 80, 80), float32]) span=/model.16/Split:0:0 */;
%249 = %248.1 /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/Split:0:0 */;
%250 = nn.conv2d(%249, meta[relay.Constant][91] /* ty=Tensor[(16, 32, 3, 3), float32] span=/model.16/m.0/cv1/conv/Conv.model.16.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.16/m.0/cv1/conv/Conv:0:0 */;
%251 = nn.bias_add(%250, meta[relay.Constant][92] /* ty=Tensor[(16), float32] span=/model.16/m.0/cv1/conv/Conv.model.16.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.16/m.0/cv1/conv/Conv:0:0 */;
%252 = sigmoid(%251) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.16/m.0/cv1/act/Sigmoid:0:0 */;
%253 = multiply(%251, %252) /* ty=Tensor[(1, 16, 80, 80), float32] span=/model.16/m.0/cv1/act/Mul:0:0 */;
%254 = nn.conv2d(%253, meta[relay.Constant][93] /* ty=Tensor[(32, 16, 3, 3), float32] span=/model.16/m.0/cv2/conv/Conv.model.16.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/m.0/cv2/conv/Conv:0:0 */;
%255 = nn.bias_add(%254, meta[relay.Constant][94] /* ty=Tensor[(32), float32] span=/model.16/m.0/cv2/conv/Conv.model.16.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/m.0/cv2/conv/Conv:0:0 */;
%256 = sigmoid(%255) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/m.0/cv2/act/Sigmoid:0:0 */;
%257 = multiply(%255, %256) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/m.0/cv2/act/Mul:0:0 */;
%258 = %248.0 /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/Split:0:0 */;
%259 = add(%249, %257) /* ty=Tensor[(1, 32, 80, 80), float32] span=/model.16/m.0/Add:0:0 */;
%260 = (%258, %249, %259) /* ty=(Tensor[(1, 32, 80, 80), float32], Tensor[(1, 32, 80, 80), float32], Tensor[(1, 32, 80, 80), float32]) span=/model.16/Concat:0:0 */;
%261 = concatenate(%260, axis=1) /* ty=Tensor[(1, 96, 80, 80), float32] span=/model.16/Concat:0:0 */;
%262 = nn.conv2d(%261, meta[relay.Constant][95] /* ty=Tensor[(64, 96, 1, 1), float32] span=/model.16/cv2/conv/Conv.model.16.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv2/conv/Conv:0:0 */;
%263 = nn.bias_add(%262, meta[relay.Constant][96] /* ty=Tensor[(64), float32] span=/model.16/cv2/conv/Conv.model.16.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv2/conv/Conv:0:0 */;
%264 = sigmoid(%263) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv2/act/Sigmoid:0:0 */;
%265 = multiply(%263, %264) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.16/cv2/act/Mul:0:0 */;
%266 = nn.conv2d(%265, meta[relay.Constant][97] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.23/cv2.0/cv2.0.0/conv/Conv.model.23.cv2.0.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.0/conv/Conv:0:0 */;
%267 = nn.bias_add(%266, meta[relay.Constant][98] /* ty=Tensor[(64), float32] span=/model.23/cv2.0/cv2.0.0/conv/Conv.model.23.cv2.0.0.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.0/conv/Conv:0:0 */;
%268 = sigmoid(%267) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.0/act/Sigmoid:0:0 */;
%269 = multiply(%267, %268) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.0/act/Mul:0:0 */;
%270 = nn.conv2d(%269, meta[relay.Constant][99] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.23/cv2.0/cv2.0.1/conv/Conv.model.23.cv2.0.1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.1/conv/Conv:0:0 */;
%271 = nn.bias_add(%270, meta[relay.Constant][100] /* ty=Tensor[(64), float32] span=/model.23/cv2.0/cv2.0.1/conv/Conv.model.23.cv2.0.1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.1/conv/Conv:0:0 */;
%272 = sigmoid(%271) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.1/act/Sigmoid:0:0 */;
%273 = multiply(%271, %272) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.1/act/Mul:0:0 */;
%274 = nn.conv2d(%273, meta[relay.Constant][101] /* ty=Tensor[(64, 64, 1, 1), float32] span=/model.23/cv2.0/cv2.0.2/Conv.model.23.cv2.0.2.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.2/Conv:0:0 */;
%275 = nn.conv2d(%265, meta[relay.Constant][103] /* ty=Tensor[(64, 1, 3, 3), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.0/conv/Conv.model.23.cv3.0.0.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=64, channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.0/conv/Conv:0:0 */;
%276 = nn.bias_add(%275, meta[relay.Constant][104] /* ty=Tensor[(64), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.0/conv/Conv.model.23.cv3.0.0.0.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.0/conv/Conv:0:0 */;
%277 = sigmoid(%276) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.0/act/Sigmoid:0:0 */;
%278 = multiply(%276, %277) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.0/act/Mul:0:0 */;
%279 = nn.conv2d(%278, meta[relay.Constant][105] /* ty=Tensor[(80, 64, 1, 1), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.1/conv/Conv.model.23.cv3.0.0.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.1/conv/Conv:0:0 */;
%280 = nn.bias_add(%279, meta[relay.Constant][106] /* ty=Tensor[(80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.1/conv/Conv.model.23.cv3.0.0.1.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.1/conv/Conv:0:0 */;
%281 = sigmoid(%280) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.1/act/Sigmoid:0:0 */;
%282 = multiply(%280, %281) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.0/cv3.0.0.1/act/Mul:0:0 */;
%283 = nn.conv2d(%282, meta[relay.Constant][107] /* ty=Tensor[(80, 1, 3, 3), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.0/conv/Conv.model.23.cv3.0.1.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=80, channels=80, kernel_size=[3, 3]) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.0/conv/Conv:0:0 */;
%284 = nn.bias_add(%283, meta[relay.Constant][108] /* ty=Tensor[(80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.0/conv/Conv.model.23.cv3.0.1.0.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.0/conv/Conv:0:0 */;
%285 = sigmoid(%284) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.0/act/Sigmoid:0:0 */;
%286 = multiply(%284, %285) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.0/act/Mul:0:0 */;
%287 = nn.conv2d(%286, meta[relay.Constant][109] /* ty=Tensor[(80, 80, 1, 1), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.1/conv/Conv.model.23.cv3.0.1.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.1/conv/Conv:0:0 */;
%288 = nn.bias_add(%287, meta[relay.Constant][110] /* ty=Tensor[(80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.1/conv/Conv.model.23.cv3.0.1.1.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.1/conv/Conv:0:0 */;
%289 = sigmoid(%288) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.1/act/Sigmoid:0:0 */;
%290 = multiply(%288, %289) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.1/cv3.0.1.1/act/Mul:0:0 */;
%291 = nn.conv2d(%290, meta[relay.Constant][111] /* ty=Tensor[(80, 80, 1, 1), float32] span=/model.23/cv3.0/cv3.0.2/Conv.model.23.cv3.0.2.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.2/Conv:0:0 */;
%292 = nn.bias_add(%274, meta[relay.Constant][102] /* ty=Tensor[(64), float32] span=/model.23/cv2.0/cv2.0.2/Conv.model.23.cv2.0.2.bias:0:0 */) /* ty=Tensor[(1, 64, 80, 80), float32] span=/model.23/cv2.0/cv2.0.2/Conv:0:0 */;
%293 = nn.bias_add(%291, meta[relay.Constant][112] /* ty=Tensor[(80), float32] span=/model.23/cv3.0/cv3.0.2/Conv.model.23.cv3.0.2.bias:0:0 */) /* ty=Tensor[(1, 80, 80, 80), float32] span=/model.23/cv3.0/cv3.0.2/Conv:0:0 */;
%294 = (%292, %293) /* ty=(Tensor[(1, 64, 80, 80), float32], Tensor[(1, 80, 80, 80), float32]) span=/model.23/Concat:0:0 */;
%295 = concatenate(%294, axis=1) /* ty=Tensor[(1, 144, 80, 80), float32] span=/model.23/Concat:0:0 */;
%296 = nn.conv2d(%265, meta[relay.Constant][113] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.17/conv/Conv.model.17.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.17/conv/Conv:0:0 */;
%297 = nn.bias_add(%296, meta[relay.Constant][114] /* ty=Tensor[(64), float32] span=/model.17/conv/Conv.model.17.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.17/conv/Conv:0:0 */;
%298 = sigmoid(%297) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.17/act/Sigmoid:0:0 */;
%299 = multiply(%297, %298) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.17/act/Mul:0:0 */;
%300 = (%299, %240) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 128, 40, 40), float32]) span=/model.18/Concat:0:0 */;
%301 = concatenate(%300, axis=1) /* ty=Tensor[(1, 192, 40, 40), float32] span=/model.18/Concat:0:0 */;
%302 = nn.conv2d(%301, meta[relay.Constant][115] /* ty=Tensor[(128, 192, 1, 1), float32] span=/model.19/cv1/conv/Conv.model.19.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv1/conv/Conv:0:0 */;
%303 = nn.bias_add(%302, meta[relay.Constant][116] /* ty=Tensor[(128), float32] span=/model.19/cv1/conv/Conv.model.19.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv1/conv/Conv:0:0 */;
%304 = sigmoid(%303) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv1/act/Sigmoid:0:0 */;
%305 = multiply(%303, %304) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv1/act/Mul:0:0 */;
%306 = split(%305, indices_or_sections=[meta[runtime.BoxInt][9]], axis=1) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32]) span=/model.19/Split:0:0 */;
%307 = %306.1 /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/Split:0:0 */;
%308 = nn.conv2d(%307, meta[relay.Constant][117] /* ty=Tensor[(32, 64, 3, 3), float32] span=/model.19/m.0/cv1/conv/Conv.model.19.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.19/m.0/cv1/conv/Conv:0:0 */;
%309 = nn.bias_add(%308, meta[relay.Constant][118] /* ty=Tensor[(32), float32] span=/model.19/m.0/cv1/conv/Conv.model.19.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.19/m.0/cv1/conv/Conv:0:0 */;
%310 = sigmoid(%309) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.19/m.0/cv1/act/Sigmoid:0:0 */;
%311 = multiply(%309, %310) /* ty=Tensor[(1, 32, 40, 40), float32] span=/model.19/m.0/cv1/act/Mul:0:0 */;
%312 = nn.conv2d(%311, meta[relay.Constant][119] /* ty=Tensor[(64, 32, 3, 3), float32] span=/model.19/m.0/cv2/conv/Conv.model.19.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/m.0/cv2/conv/Conv:0:0 */;
%313 = nn.bias_add(%312, meta[relay.Constant][120] /* ty=Tensor[(64), float32] span=/model.19/m.0/cv2/conv/Conv.model.19.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/m.0/cv2/conv/Conv:0:0 */;
%314 = sigmoid(%313) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/m.0/cv2/act/Sigmoid:0:0 */;
%315 = multiply(%313, %314) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/m.0/cv2/act/Mul:0:0 */;
%316 = %306.0 /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/Split:0:0 */;
%317 = add(%307, %315) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.19/m.0/Add:0:0 */;
%318 = (%316, %307, %317) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32], Tensor[(1, 64, 40, 40), float32]) span=/model.19/Concat:0:0 */;
%319 = concatenate(%318, axis=1) /* ty=Tensor[(1, 192, 40, 40), float32] span=/model.19/Concat:0:0 */;
%320 = nn.conv2d(%319, meta[relay.Constant][121] /* ty=Tensor[(128, 192, 1, 1), float32] span=/model.19/cv2/conv/Conv.model.19.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv2/conv/Conv:0:0 */;
%321 = nn.bias_add(%320, meta[relay.Constant][122] /* ty=Tensor[(128), float32] span=/model.19/cv2/conv/Conv.model.19.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv2/conv/Conv:0:0 */;
%322 = sigmoid(%321) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv2/act/Sigmoid:0:0 */;
%323 = multiply(%321, %322) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.19/cv2/act/Mul:0:0 */;
%324 = nn.conv2d(%323, meta[relay.Constant][123] /* ty=Tensor[(64, 128, 3, 3), float32] span=/model.23/cv2.1/cv2.1.0/conv/Conv.model.23.cv2.1.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.0/conv/Conv:0:0 */;
%325 = nn.bias_add(%324, meta[relay.Constant][124] /* ty=Tensor[(64), float32] span=/model.23/cv2.1/cv2.1.0/conv/Conv.model.23.cv2.1.0.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.0/conv/Conv:0:0 */;
%326 = sigmoid(%325) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.0/act/Sigmoid:0:0 */;
%327 = multiply(%325, %326) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.0/act/Mul:0:0 */;
%328 = nn.conv2d(%327, meta[relay.Constant][125] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.23/cv2.1/cv2.1.1/conv/Conv.model.23.cv2.1.1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.1/conv/Conv:0:0 */;
%329 = nn.bias_add(%328, meta[relay.Constant][126] /* ty=Tensor[(64), float32] span=/model.23/cv2.1/cv2.1.1/conv/Conv.model.23.cv2.1.1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.1/conv/Conv:0:0 */;
%330 = sigmoid(%329) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.1/act/Sigmoid:0:0 */;
%331 = multiply(%329, %330) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.1/act/Mul:0:0 */;
%332 = nn.conv2d(%331, meta[relay.Constant][127] /* ty=Tensor[(64, 64, 1, 1), float32] span=/model.23/cv2.1/cv2.1.2/Conv.model.23.cv2.1.2.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.2/Conv:0:0 */;
%333 = nn.conv2d(%323, meta[relay.Constant][129] /* ty=Tensor[(128, 1, 3, 3), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.0/conv/Conv.model.23.cv3.1.0.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=128, channels=128, kernel_size=[3, 3]) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.0/conv/Conv:0:0 */;
%334 = nn.bias_add(%333, meta[relay.Constant][130] /* ty=Tensor[(128), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.0/conv/Conv.model.23.cv3.1.0.0.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.0/conv/Conv:0:0 */;
%335 = sigmoid(%334) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.0/act/Sigmoid:0:0 */;
%336 = multiply(%334, %335) /* ty=Tensor[(1, 128, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.0/act/Mul:0:0 */;
%337 = nn.conv2d(%336, meta[relay.Constant][131] /* ty=Tensor[(80, 128, 1, 1), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.1/conv/Conv.model.23.cv3.1.0.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.1/conv/Conv:0:0 */;
%338 = nn.bias_add(%337, meta[relay.Constant][132] /* ty=Tensor[(80), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.1/conv/Conv.model.23.cv3.1.0.1.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.1/conv/Conv:0:0 */;
%339 = sigmoid(%338) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.1/act/Sigmoid:0:0 */;
%340 = multiply(%338, %339) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.0/cv3.1.0.1/act/Mul:0:0 */;
%341 = nn.conv2d(%340, meta[relay.Constant][133] /* ty=Tensor[(80, 1, 3, 3), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.0/conv/Conv.model.23.cv3.1.1.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=80, channels=80, kernel_size=[3, 3]) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.0/conv/Conv:0:0 */;
%342 = nn.bias_add(%341, meta[relay.Constant][134] /* ty=Tensor[(80), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.0/conv/Conv.model.23.cv3.1.1.0.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.0/conv/Conv:0:0 */;
%343 = sigmoid(%342) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.0/act/Sigmoid:0:0 */;
%344 = multiply(%342, %343) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.0/act/Mul:0:0 */;
%345 = nn.conv2d(%344, meta[relay.Constant][135] /* ty=Tensor[(80, 80, 1, 1), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.1/conv/Conv.model.23.cv3.1.1.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.1/conv/Conv:0:0 */;
%346 = nn.bias_add(%345, meta[relay.Constant][136] /* ty=Tensor[(80), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.1/conv/Conv.model.23.cv3.1.1.1.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.1/conv/Conv:0:0 */;
%347 = sigmoid(%346) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.1/act/Sigmoid:0:0 */;
%348 = multiply(%346, %347) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.1/cv3.1.1.1/act/Mul:0:0 */;
%349 = nn.conv2d(%348, meta[relay.Constant][137] /* ty=Tensor[(80, 80, 1, 1), float32] span=/model.23/cv3.1/cv3.1.2/Conv.model.23.cv3.1.2.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.2/Conv:0:0 */;
%350 = nn.bias_add(%332, meta[relay.Constant][128] /* ty=Tensor[(64), float32] span=/model.23/cv2.1/cv2.1.2/Conv.model.23.cv2.1.2.bias:0:0 */) /* ty=Tensor[(1, 64, 40, 40), float32] span=/model.23/cv2.1/cv2.1.2/Conv:0:0 */;
%351 = nn.bias_add(%349, meta[relay.Constant][138] /* ty=Tensor[(80), float32] span=/model.23/cv3.1/cv3.1.2/Conv.model.23.cv3.1.2.bias:0:0 */) /* ty=Tensor[(1, 80, 40, 40), float32] span=/model.23/cv3.1/cv3.1.2/Conv:0:0 */;
%352 = (%350, %351) /* ty=(Tensor[(1, 64, 40, 40), float32], Tensor[(1, 80, 40, 40), float32]) span=/model.23/Concat_1:0:0 */;
%353 = concatenate(%352, axis=1) /* ty=Tensor[(1, 144, 40, 40), float32] span=/model.23/Concat_1:0:0 */;
%354 = nn.conv2d(%323, meta[relay.Constant][139] /* ty=Tensor[(128, 128, 3, 3), float32] span=/model.20/conv/Conv.model.20.conv.weight:0:0 */, strides=[2, 2], padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.20/conv/Conv:0:0 */;
%355 = nn.bias_add(%354, meta[relay.Constant][140] /* ty=Tensor[(128), float32] span=/model.20/conv/Conv.model.20.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.20/conv/Conv:0:0 */;
%356 = sigmoid(%355) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.20/act/Sigmoid:0:0 */;
%357 = multiply(%355, %356) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.20/act/Mul:0:0 */;
%358 = (%357, %215) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 256, 20, 20), float32]) span=/model.21/Concat:0:0 */;
%359 = concatenate(%358, axis=1) /* ty=Tensor[(1, 384, 20, 20), float32] span=/model.21/Concat:0:0 */;
%360 = nn.conv2d(%359, meta[relay.Constant][141] /* ty=Tensor[(256, 384, 1, 1), float32] span=/model.22/cv1/conv/Conv.model.22.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv1/conv/Conv:0:0 */;
%361 = nn.bias_add(%360, meta[relay.Constant][142] /* ty=Tensor[(256), float32] span=/model.22/cv1/conv/Conv.model.22.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv1/conv/Conv:0:0 */;
%362 = sigmoid(%361) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv1/act/Sigmoid:0:0 */;
%363 = multiply(%361, %362) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv1/act/Mul:0:0 */;
%364 = split(%363, indices_or_sections=[meta[runtime.BoxInt][10]], axis=1) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.22/Split:0:0 */;
%365 = %364.1 /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/Split:0:0 */;
%366 = nn.conv2d(%365, meta[relay.Constant][143] /* ty=Tensor[(64, 128, 1, 1), float32] span=/model.22/m.0/cv1/conv/Conv.model.22.m.0.cv1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv1/conv/Conv:0:0 */;
%367 = nn.bias_add(%366, meta[relay.Constant][144] /* ty=Tensor[(64), float32] span=/model.22/m.0/cv1/conv/Conv.model.22.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv1/conv/Conv:0:0 */;
%368 = sigmoid(%367) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv1/act/Sigmoid:0:0 */;
%369 = multiply(%367, %368) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv1/act/Mul:0:0 */;
%370 = nn.conv2d(%369, meta[relay.Constant][145] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.22/m.0/m/m.0/cv1/conv/Conv.model.22.m.0.m.0.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv1/conv/Conv:0:0 */;
%371 = nn.bias_add(%370, meta[relay.Constant][146] /* ty=Tensor[(64), float32] span=/model.22/m.0/m/m.0/cv1/conv/Conv.model.22.m.0.m.0.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv1/conv/Conv:0:0 */;
%372 = sigmoid(%371) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv1/act/Sigmoid:0:0 */;
%373 = multiply(%371, %372) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv1/act/Mul:0:0 */;
%374 = nn.conv2d(%373, meta[relay.Constant][147] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.22/m.0/m/m.0/cv2/conv/Conv.model.22.m.0.m.0.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv2/conv/Conv:0:0 */;
%375 = nn.bias_add(%374, meta[relay.Constant][148] /* ty=Tensor[(64), float32] span=/model.22/m.0/m/m.0/cv2/conv/Conv.model.22.m.0.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv2/conv/Conv:0:0 */;
%376 = sigmoid(%375) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv2/act/Sigmoid:0:0 */;
%377 = multiply(%375, %376) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/cv2/act/Mul:0:0 */;
%378 = add(%369, %377) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.0/Add:0:0 */;
%379 = nn.conv2d(%378, meta[relay.Constant][149] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.22/m.0/m/m.1/cv1/conv/Conv.model.22.m.0.m.1.cv1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv1/conv/Conv:0:0 */;
%380 = nn.bias_add(%379, meta[relay.Constant][150] /* ty=Tensor[(64), float32] span=/model.22/m.0/m/m.1/cv1/conv/Conv.model.22.m.0.m.1.cv1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv1/conv/Conv:0:0 */;
%381 = sigmoid(%380) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv1/act/Sigmoid:0:0 */;
%382 = multiply(%380, %381) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv1/act/Mul:0:0 */;
%383 = nn.conv2d(%382, meta[relay.Constant][151] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.22/m.0/m/m.1/cv2/conv/Conv.model.22.m.0.m.1.cv2.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv2/conv/Conv:0:0 */;
%384 = nn.bias_add(%383, meta[relay.Constant][152] /* ty=Tensor[(64), float32] span=/model.22/m.0/m/m.1/cv2/conv/Conv.model.22.m.0.m.1.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv2/conv/Conv:0:0 */;
%385 = sigmoid(%384) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv2/act/Sigmoid:0:0 */;
%386 = multiply(%384, %385) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/cv2/act/Mul:0:0 */;
%387 = nn.conv2d(%365, meta[relay.Constant][153] /* ty=Tensor[(64, 128, 1, 1), float32] span=/model.22/m.0/cv2/conv/Conv.model.22.m.0.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv2/conv/Conv:0:0 */;
%388 = nn.bias_add(%387, meta[relay.Constant][154] /* ty=Tensor[(64), float32] span=/model.22/m.0/cv2/conv/Conv.model.22.m.0.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv2/conv/Conv:0:0 */;
%389 = sigmoid(%388) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv2/act/Sigmoid:0:0 */;
%390 = add(%378, %386) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/m/m.1/Add:0:0 */;
%391 = multiply(%388, %389) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.22/m.0/cv2/act/Mul:0:0 */;
%392 = (%390, %391) /* ty=(Tensor[(1, 64, 20, 20), float32], Tensor[(1, 64, 20, 20), float32]) span=/model.22/m.0/Concat:0:0 */;
%393 = concatenate(%392, axis=1) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/m.0/Concat:0:0 */;
%394 = nn.conv2d(%393, meta[relay.Constant][155] /* ty=Tensor[(128, 128, 1, 1), float32] span=/model.22/m.0/cv3/conv/Conv.model.22.m.0.cv3.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/m.0/cv3/conv/Conv:0:0 */;
%395 = nn.bias_add(%394, meta[relay.Constant][156] /* ty=Tensor[(128), float32] span=/model.22/m.0/cv3/conv/Conv.model.22.m.0.cv3.conv.bias:0:0 */) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/m.0/cv3/conv/Conv:0:0 */;
%396 = sigmoid(%395) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/m.0/cv3/act/Sigmoid:0:0 */;
%397 = %364.0 /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/Split:0:0 */;
%398 = multiply(%395, %396) /* ty=Tensor[(1, 128, 20, 20), float32] span=/model.22/m.0/cv3/act/Mul:0:0 */;
%399 = (%397, %365, %398) /* ty=(Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32], Tensor[(1, 128, 20, 20), float32]) span=/model.22/Concat:0:0 */;
%400 = concatenate(%399, axis=1) /* ty=Tensor[(1, 384, 20, 20), float32] span=/model.22/Concat:0:0 */;
%401 = nn.conv2d(%400, meta[relay.Constant][157] /* ty=Tensor[(256, 384, 1, 1), float32] span=/model.22/cv2/conv/Conv.model.22.cv2.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv2/conv/Conv:0:0 */;
%402 = nn.bias_add(%401, meta[relay.Constant][158] /* ty=Tensor[(256), float32] span=/model.22/cv2/conv/Conv.model.22.cv2.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv2/conv/Conv:0:0 */;
%403 = sigmoid(%402) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv2/act/Sigmoid:0:0 */;
%404 = multiply(%402, %403) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.22/cv2/act/Mul:0:0 */;
%405 = nn.conv2d(%404, meta[relay.Constant][159] /* ty=Tensor[(64, 256, 3, 3), float32] span=/model.23/cv2.2/cv2.2.0/conv/Conv.model.23.cv2.2.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.0/conv/Conv:0:0 */;
%406 = nn.bias_add(%405, meta[relay.Constant][160] /* ty=Tensor[(64), float32] span=/model.23/cv2.2/cv2.2.0/conv/Conv.model.23.cv2.2.0.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.0/conv/Conv:0:0 */;
%407 = sigmoid(%406) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.0/act/Sigmoid:0:0 */;
%408 = multiply(%406, %407) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.0/act/Mul:0:0 */;
%409 = nn.conv2d(%408, meta[relay.Constant][161] /* ty=Tensor[(64, 64, 3, 3), float32] span=/model.23/cv2.2/cv2.2.1/conv/Conv.model.23.cv2.2.1.conv.weight:0:0 */, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.1/conv/Conv:0:0 */;
%410 = nn.bias_add(%409, meta[relay.Constant][162] /* ty=Tensor[(64), float32] span=/model.23/cv2.2/cv2.2.1/conv/Conv.model.23.cv2.2.1.conv.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.1/conv/Conv:0:0 */;
%411 = sigmoid(%410) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.1/act/Sigmoid:0:0 */;
%412 = multiply(%410, %411) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.1/act/Mul:0:0 */;
%413 = nn.conv2d(%412, meta[relay.Constant][163] /* ty=Tensor[(64, 64, 1, 1), float32] span=/model.23/cv2.2/cv2.2.2/Conv.model.23.cv2.2.2.weight:0:0 */, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.2/Conv:0:0 */;
%414 = nn.conv2d(%404, meta[relay.Constant][165] /* ty=Tensor[(256, 1, 3, 3), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.0/conv/Conv.model.23.cv3.2.0.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=256, channels=256, kernel_size=[3, 3]) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.0/conv/Conv:0:0 */;
%415 = nn.bias_add(%414, meta[relay.Constant][166] /* ty=Tensor[(256), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.0/conv/Conv.model.23.cv3.2.0.0.conv.bias:0:0 */) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.0/conv/Conv:0:0 */;
%416 = sigmoid(%415) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.0/act/Sigmoid:0:0 */;
%417 = multiply(%415, %416) /* ty=Tensor[(1, 256, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.0/act/Mul:0:0 */;
%418 = nn.conv2d(%417, meta[relay.Constant][167] /* ty=Tensor[(80, 256, 1, 1), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.1/conv/Conv.model.23.cv3.2.0.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.1/conv/Conv:0:0 */;
%419 = nn.bias_add(%418, meta[relay.Constant][168] /* ty=Tensor[(80), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.1/conv/Conv.model.23.cv3.2.0.1.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.1/conv/Conv:0:0 */;
%420 = sigmoid(%419) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.1/act/Sigmoid:0:0 */;
%421 = multiply(%419, %420) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.0/cv3.2.0.1/act/Mul:0:0 */;
%422 = nn.conv2d(%421, meta[relay.Constant][169] /* ty=Tensor[(80, 1, 3, 3), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.0/conv/Conv.model.23.cv3.2.1.0.conv.weight:0:0 */, padding=[1, 1, 1, 1], groups=80, channels=80, kernel_size=[3, 3]) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.0/conv/Conv:0:0 */;
%423 = nn.bias_add(%422, meta[relay.Constant][170] /* ty=Tensor[(80), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.0/conv/Conv.model.23.cv3.2.1.0.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.0/conv/Conv:0:0 */;
%424 = sigmoid(%423) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.0/act/Sigmoid:0:0 */;
%425 = multiply(%423, %424) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.0/act/Mul:0:0 */;
%426 = nn.conv2d(%425, meta[relay.Constant][171] /* ty=Tensor[(80, 80, 1, 1), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.1/conv/Conv.model.23.cv3.2.1.1.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.1/conv/Conv:0:0 */;
%427 = nn.bias_add(%426, meta[relay.Constant][172] /* ty=Tensor[(80), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.1/conv/Conv.model.23.cv3.2.1.1.conv.bias:0:0 */) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.1/conv/Conv:0:0 */;
%428 = sigmoid(%427) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.1/act/Sigmoid:0:0 */;
%429 = multiply(%427, %428) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.1/cv3.2.1.1/act/Mul:0:0 */;
%430 = nn.conv2d(%429, meta[relay.Constant][173] /* ty=Tensor[(80, 80, 1, 1), float32] span=/model.23/cv3.2/cv3.2.2/Conv.model.23.cv3.2.2.weight:0:0 */, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.2/Conv:0:0 */;
%431 = nn.bias_add(%413, meta[relay.Constant][164] /* ty=Tensor[(64), float32] span=/model.23/cv2.2/cv2.2.2/Conv.model.23.cv2.2.2.bias:0:0 */) /* ty=Tensor[(1, 64, 20, 20), float32] span=/model.23/cv2.2/cv2.2.2/Conv:0:0 */;
%432 = nn.bias_add(%430, meta[relay.Constant][174] /* ty=Tensor[(80), float32] span=/model.23/cv3.2/cv3.2.2/Conv.model.23.cv3.2.2.bias:0:0 */) /* ty=Tensor[(1, 80, 20, 20), float32] span=/model.23/cv3.2/cv3.2.2/Conv:0:0 */;
%433 = (%431, %432) /* ty=(Tensor[(1, 64, 20, 20), float32], Tensor[(1, 80, 20, 20), float32]) span=/model.23/Concat_2:0:0 */;
%434 = concatenate(%433, axis=1) /* ty=Tensor[(1, 144, 20, 20), float32] span=/model.23/Concat_2:0:0 */;
%435 = reshape(%295, newshape=[1, 144, -1]) /* ty=Tensor[(1, 144, 6400), float32] span=/model.23/Reshape:0:0 */;
%436 = reshape(%353, newshape=[1, 144, -1]) /* ty=Tensor[(1, 144, 1600), float32] span=/model.23/Reshape_1:0:0 */;
%437 = reshape(%434, newshape=[1, 144, -1]) /* ty=Tensor[(1, 144, 400), float32] span=/model.23/Reshape_2:0:0 */;
%438 = (%435, %436, %437) /* ty=(Tensor[(1, 144, 6400), float32], Tensor[(1, 144, 1600), float32], Tensor[(1, 144, 400), float32]) span=/model.23/Concat_3:0:0 */;
%439 = concatenate(%438, axis=2) /* ty=Tensor[(1, 144, 8400), float32] span=/model.23/Concat_3:0:0 */;
%440 = split(%439, indices_or_sections=[meta[runtime.BoxInt][11]], axis=1) /* ty=(Tensor[(1, 64, 8400), float32], Tensor[(1, 80, 8400), float32]) span=/model.23/Split:0:0 */;
%441 = %440.0 /* ty=Tensor[(1, 64, 8400), float32] span=/model.23/Split:0:0 */;
%442 = reshape(%441, newshape=[1, 4, 16, 8400]) /* ty=Tensor[(1, 4, 16, 8400), float32] span=/model.23/dfl/Reshape:0:0 */;
%443 = transpose(%442, axes=[0, 2, 1, 3]) /* ty=Tensor[(1, 16, 4, 8400), float32] span=/model.23/dfl/Transpose:0:0 */;
%444 = nn.softmax(%443, axis=1) /* ty=Tensor[(1, 16, 4, 8400), float32] span=/model.23/dfl/Softmax:0:0 */;
%445 = nn.conv2d(%444, meta[relay.Constant][175] /* ty=Tensor[(1, 16, 1, 1), float32] span=/model.23/dfl/conv/Conv.model.23.dfl.conv.weight:0:0 */, padding=[0, 0, 0, 0], channels=1, kernel_size=[1, 1]) /* ty=Tensor[(1, 1, 4, 8400), float32] span=/model.23/dfl/conv/Conv:0:0 */;
%446 = reshape(%445, newshape=[1, 4, 8400]) /* ty=Tensor[(1, 4, 8400), float32] span=/model.23/dfl/Reshape_1:0:0 */;
%447 = strided_slice(%446, begin=[0], end=[2], strides=[1], axes=[1]) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Slice:0:0 */;
%448 = strided_slice(%446, begin=[2], end=[4], strides=[1], axes=[1]) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Slice_1:0:0 */;
%449 = subtract(meta[relay.Constant][0] /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Sub./model.23/Constant_9_output_0:0:0 */, %447) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Sub:0:0 */;
%450 = add(meta[relay.Constant][176] /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Add_1./model.23/Constant_10_output_0:0:0 */, %448) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Add_1:0:0 */;
%451 = add(%449, %450) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Add_2:0:0 */;
%452 = divide(%451, 2f /* ty=float32 span=/model.23/Div_1./model.23/Constant_11_output_0:0:0 */) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Div_1:0:0 */;
%453 = subtract(%450, %449) /* ty=Tensor[(1, 2, 8400), float32] span=/model.23/Sub_1:0:0 */;
%454 = (%452, %453) /* ty=(Tensor[(1, 2, 8400), float32], Tensor[(1, 2, 8400), float32]) span=/model.23/Concat_4:0:0 */;
%455 = concatenate(%454, axis=1) /* ty=Tensor[(1, 4, 8400), float32] span=/model.23/Concat_4:0:0 */;
%456 = %440.1 /* ty=Tensor[(1, 80, 8400), float32] span=/model.23/Split:0:0 */;
%457 = multiply(%455, meta[relay.Constant][177] /* ty=Tensor[(1, 8400), float32] span=/model.23/Mul_2./model.23/Constant_12_output_0:0:0 */) /* ty=Tensor[(1, 4, 8400), float32] span=/model.23/Mul_2:0:0 */;
%458 = sigmoid(%456) /* ty=Tensor[(1, 80, 8400), float32] span=/model.23/Sigmoid:0:0 */;
%459 = (%457, %458) /* ty=(Tensor[(1, 4, 8400), float32], Tensor[(1, 80, 8400), float32]) span=/model.23/Concat_5:0:0 */;
concatenate(%459, axis=1) /* ty=Tensor[(1, 84, 8400), float32] span=/model.23/Concat_5:0:0 */
}
后处理:
from ultralytics.utils import ops
from ultralytics.engine.results import Results
def postprocess(preds, img, orig_imgs, names, input_path, conf_thres=0.25, iou_thres=0.45,):
"""Post-processes predictions and returns a list of Results objects."""
preds = ops.non_max_suppression(
preds,
conf_thres=conf_thres,
iou_thres=iou_thres,
# agnostic=self.args.agnostic_nms,
# max_det=self.args.max_det,
# classes=80,
)
results = []
for i, pred in enumerate(preds):
orig_img = orig_imgs[i]
pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
img_path = input_path
results.append(Results(orig_img, path=img_path, names=names, boxes=pred))
return results
构建模型:
import tvm
with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
lib = relay.build(mod, target="llvm", params=params)
func = lib[lib.libmod_name]
module = tvm.contrib.graph_executor.GraphModule(func(tvm.cpu(0)))
One or more operators have not been tuned. Please tune your model for better performance. Use DEBUG logging level to see more details.
运行时推理:
module.run(**{input_name: xs})
num_outputs = module.get_num_outputs()
float_outputs = [module.get_output(k).numpy() for k in range(num_outputs)]
results = postprocess(
[torch.from_numpy(o) for o in float_outputs],
xs, [origin_image], yolo.model.names,
input_path, #conf_thres=0.25, iou_thres=0.45,
)
im = Image.fromarray(results[0].plot())
im.size
(1920, 1200)
im.resize((480, 300))
测试 YOLO TorchScript Relay 前端#
导出 torchscript 模型:
yolo.export(format="torchscript")
Ultralytics 8.3.58 🚀 Python-3.12.2 torch-2.5.1 CPU (Intel Xeon E5-2678 v3 2.50GHz)
PyTorch: starting from 'yolo11n.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 84, 8400) (5.4 MB)
TorchScript: starting export with torch 2.5.1...
TorchScript: export success ✅ 2.2s, saved as 'yolo11n.torchscript' (10.5 MB)
Export complete (2.5s)
Results saved to /media/pc/data/lxw/ai/tvm-book/doc/topics/other/ultralytics
Predict: yolo predict task=detect model=yolo11n.torchscript imgsz=640
Validate: yolo val task=detect model=yolo11n.torchscript imgsz=640 data=/usr/src/ultralytics/ultralytics/cfg/datasets/coco.yaml
Visualize: https://netron.app
'yolo11n.torchscript'
import torch
from tvm import relay
torch_model = torch.jit.load("yolo11n.torchscript")
mod, params = relay.frontend.from_pytorch(torch_model, [(input_name, xs.shape)])
import tvm
tvm.IRModule.from_expr(mod["main"]).show()
Show code cell output
def @main(%images: Tensor[(1, 3, 640, 640), float32] /* span=aten::_convolution_0.images:0:0 */, %aten::_convolution_0.weight: Tensor[(16, 3, 3, 3), float32] /* span=aten::_convolution_0.weight:0:0 */, %aten::_convolution_0.bias: Tensor[(16), float32] /* span=aten::_convolution_0.bias:0:0 */, %aten::_convolution_1.weight: Tensor[(32, 16, 3, 3), float32] /* span=aten::_convolution_1.weight:0:0 */, %aten::_convolution_1.bias: Tensor[(32), float32] /* span=aten::_convolution_1.bias:0:0 */, %aten::_convolution_2.weight: Tensor[(32, 32, 1, 1), float32] /* span=aten::_convolution_2.weight:0:0 */, %aten::_convolution_2.bias: Tensor[(32), float32] /* span=aten::_convolution_2.bias:0:0 */, %aten::_convolution_3.weight: Tensor[(8, 16, 3, 3), float32] /* span=aten::_convolution_3.weight:0:0 */, %aten::_convolution_3.bias: Tensor[(8), float32] /* span=aten::_convolution_3.bias:0:0 */, %aten::_convolution_4.weight: Tensor[(16, 8, 3, 3), float32] /* span=aten::_convolution_4.weight:0:0 */, %aten::_convolution_4.bias: Tensor[(16), float32] /* span=aten::_convolution_4.bias:0:0 */, %aten::_convolution_5.weight: Tensor[(64, 48, 1, 1), float32] /* span=aten::_convolution_5.weight:0:0 */, %aten::_convolution_5.bias: Tensor[(64), float32] /* span=aten::_convolution_5.bias:0:0 */, %aten::_convolution_6.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_6.weight:0:0 */, %aten::_convolution_6.bias: Tensor[(64), float32] /* span=aten::_convolution_6.bias:0:0 */, %aten::_convolution_7.weight: Tensor[(64, 64, 1, 1), float32] /* span=aten::_convolution_7.weight:0:0 */, %aten::_convolution_7.bias: Tensor[(64), float32] /* span=aten::_convolution_7.bias:0:0 */, %aten::_convolution_8.weight: Tensor[(16, 32, 3, 3), float32] /* span=aten::_convolution_8.weight:0:0 */, %aten::_convolution_8.bias: Tensor[(16), float32] /* span=aten::_convolution_8.bias:0:0 */, %aten::_convolution_9.weight: Tensor[(32, 16, 3, 3), float32] /* span=aten::_convolution_9.weight:0:0 */, %aten::_convolution_9.bias: Tensor[(32), float32] /* span=aten::_convolution_9.bias:0:0 */, %aten::_convolution_10.weight: Tensor[(128, 96, 1, 1), float32] /* span=aten::_convolution_10.weight:0:0 */, %aten::_convolution_10.bias: Tensor[(128), float32] /* span=aten::_convolution_10.bias:0:0 */, %aten::_convolution_11.weight: Tensor[(128, 128, 3, 3), float32] /* span=aten::_convolution_11.weight:0:0 */, %aten::_convolution_11.bias: Tensor[(128), float32] /* span=aten::_convolution_11.bias:0:0 */, %aten::_convolution_12.weight: Tensor[(128, 128, 1, 1), float32] /* span=aten::_convolution_12.weight:0:0 */, %aten::_convolution_12.bias: Tensor[(128), float32] /* span=aten::_convolution_12.bias:0:0 */, %aten::_convolution_13.weight: Tensor[(32, 64, 1, 1), float32] /* span=aten::_convolution_13.weight:0:0 */, %aten::_convolution_13.bias: Tensor[(32), float32] /* span=aten::_convolution_13.bias:0:0 */, %aten::_convolution_14.weight: Tensor[(32, 32, 3, 3), float32] /* span=aten::_convolution_14.weight:0:0 */, %aten::_convolution_14.bias: Tensor[(32), float32] /* span=aten::_convolution_14.bias:0:0 */, %aten::_convolution_15.weight: Tensor[(32, 32, 3, 3), float32] /* span=aten::_convolution_15.weight:0:0 */, %aten::_convolution_15.bias: Tensor[(32), float32] /* span=aten::_convolution_15.bias:0:0 */, %aten::_convolution_16.weight: Tensor[(32, 32, 3, 3), float32] /* span=aten::_convolution_16.weight:0:0 */, %aten::_convolution_16.bias: Tensor[(32), float32] /* span=aten::_convolution_16.bias:0:0 */, %aten::_convolution_17.weight: Tensor[(32, 32, 3, 3), float32] /* span=aten::_convolution_17.weight:0:0 */, %aten::_convolution_17.bias: Tensor[(32), float32] /* span=aten::_convolution_17.bias:0:0 */, %aten::_convolution_18.weight: Tensor[(32, 64, 1, 1), float32] /* span=aten::_convolution_18.weight:0:0 */, %aten::_convolution_18.bias: Tensor[(32), float32] /* span=aten::_convolution_18.bias:0:0 */, %aten::_convolution_19.weight: Tensor[(64, 64, 1, 1), float32] /* span=aten::_convolution_19.weight:0:0 */, %aten::_convolution_19.bias: Tensor[(64), float32] /* span=aten::_convolution_19.bias:0:0 */, %aten::_convolution_20.weight: Tensor[(128, 192, 1, 1), float32] /* span=aten::_convolution_20.weight:0:0 */, %aten::_convolution_20.bias: Tensor[(128), float32] /* span=aten::_convolution_20.bias:0:0 */, %aten::_convolution_21.weight: Tensor[(256, 128, 3, 3), float32] /* span=aten::_convolution_21.weight:0:0 */, %aten::_convolution_21.bias: Tensor[(256), float32] /* span=aten::_convolution_21.bias:0:0 */, %aten::_convolution_22.weight: Tensor[(256, 256, 1, 1), float32] /* span=aten::_convolution_22.weight:0:0 */, %aten::_convolution_22.bias: Tensor[(256), float32] /* span=aten::_convolution_22.bias:0:0 */, %aten::_convolution_23.weight: Tensor[(64, 128, 1, 1), float32] /* span=aten::_convolution_23.weight:0:0 */, %aten::_convolution_23.bias: Tensor[(64), float32] /* span=aten::_convolution_23.bias:0:0 */, %aten::_convolution_24.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_24.weight:0:0 */, %aten::_convolution_24.bias: Tensor[(64), float32] /* span=aten::_convolution_24.bias:0:0 */, %aten::_convolution_25.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_25.weight:0:0 */, %aten::_convolution_25.bias: Tensor[(64), float32] /* span=aten::_convolution_25.bias:0:0 */, %aten::_convolution_26.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_26.weight:0:0 */, %aten::_convolution_26.bias: Tensor[(64), float32] /* span=aten::_convolution_26.bias:0:0 */, %aten::_convolution_27.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_27.weight:0:0 */, %aten::_convolution_27.bias: Tensor[(64), float32] /* span=aten::_convolution_27.bias:0:0 */, %aten::_convolution_28.weight: Tensor[(64, 128, 1, 1), float32] /* span=aten::_convolution_28.weight:0:0 */, %aten::_convolution_28.bias: Tensor[(64), float32] /* span=aten::_convolution_28.bias:0:0 */, %aten::_convolution_29.weight: Tensor[(128, 128, 1, 1), float32] /* span=aten::_convolution_29.weight:0:0 */, %aten::_convolution_29.bias: Tensor[(128), float32] /* span=aten::_convolution_29.bias:0:0 */, %aten::_convolution_30.weight: Tensor[(256, 384, 1, 1), float32] /* span=aten::_convolution_30.weight:0:0 */, %aten::_convolution_30.bias: Tensor[(256), float32] /* span=aten::_convolution_30.bias:0:0 */, %aten::_convolution_31.weight: Tensor[(128, 256, 1, 1), float32] /* span=aten::_convolution_31.weight:0:0 */, %aten::_convolution_31.bias: Tensor[(128), float32] /* span=aten::_convolution_31.bias:0:0 */, %aten::_convolution_32.weight: Tensor[(256, 512, 1, 1), float32] /* span=aten::_convolution_32.weight:0:0 */, %aten::_convolution_32.bias: Tensor[(256), float32] /* span=aten::_convolution_32.bias:0:0 */, %aten::_convolution_33.weight: Tensor[(256, 256, 1, 1), float32] /* span=aten::_convolution_33.weight:0:0 */, %aten::_convolution_33.bias: Tensor[(256), float32] /* span=aten::_convolution_33.bias:0:0 */, %aten::_convolution_34.weight: Tensor[(256, 128, 1, 1), float32] /* span=aten::_convolution_34.weight:0:0 */, %aten::_convolution_34.bias: Tensor[(256), float32] /* span=aten::_convolution_34.bias:0:0 */, %aten::_convolution_35.weight: Tensor[(128, 1, 3, 3), float32] /* span=aten::_convolution_35.weight:0:0 */, %aten::_convolution_35.bias: Tensor[(128), float32] /* span=aten::_convolution_35.bias:0:0 */, %aten::_convolution_36.weight: Tensor[(128, 128, 1, 1), float32] /* span=aten::_convolution_36.weight:0:0 */, %aten::_convolution_36.bias: Tensor[(128), float32] /* span=aten::_convolution_36.bias:0:0 */, %aten::_convolution_37.weight: Tensor[(256, 128, 1, 1), float32] /* span=aten::_convolution_37.weight:0:0 */, %aten::_convolution_37.bias: Tensor[(256), float32] /* span=aten::_convolution_37.bias:0:0 */, %aten::_convolution_38.weight: Tensor[(128, 256, 1, 1), float32] /* span=aten::_convolution_38.weight:0:0 */, %aten::_convolution_38.bias: Tensor[(128), float32] /* span=aten::_convolution_38.bias:0:0 */, %aten::_convolution_39.weight: Tensor[(256, 256, 1, 1), float32] /* span=aten::_convolution_39.weight:0:0 */, %aten::_convolution_39.bias: Tensor[(256), float32] /* span=aten::_convolution_39.bias:0:0 */, %aten::_convolution_40.weight: Tensor[(128, 384, 1, 1), float32] /* span=aten::_convolution_40.weight:0:0 */, %aten::_convolution_40.bias: Tensor[(128), float32] /* span=aten::_convolution_40.bias:0:0 */, %aten::_convolution_41.weight: Tensor[(32, 64, 3, 3), float32] /* span=aten::_convolution_41.weight:0:0 */, %aten::_convolution_41.bias: Tensor[(32), float32] /* span=aten::_convolution_41.bias:0:0 */, %aten::_convolution_42.weight: Tensor[(64, 32, 3, 3), float32] /* span=aten::_convolution_42.weight:0:0 */, %aten::_convolution_42.bias: Tensor[(64), float32] /* span=aten::_convolution_42.bias:0:0 */, %aten::_convolution_43.weight: Tensor[(128, 192, 1, 1), float32] /* span=aten::_convolution_43.weight:0:0 */, %aten::_convolution_43.bias: Tensor[(128), float32] /* span=aten::_convolution_43.bias:0:0 */, %aten::_convolution_44.weight: Tensor[(64, 256, 1, 1), float32] /* span=aten::_convolution_44.weight:0:0 */, %aten::_convolution_44.bias: Tensor[(64), float32] /* span=aten::_convolution_44.bias:0:0 */, %aten::_convolution_45.weight: Tensor[(16, 32, 3, 3), float32] /* span=aten::_convolution_45.weight:0:0 */, %aten::_convolution_45.bias: Tensor[(16), float32] /* span=aten::_convolution_45.bias:0:0 */, %aten::_convolution_46.weight: Tensor[(32, 16, 3, 3), float32] /* span=aten::_convolution_46.weight:0:0 */, %aten::_convolution_46.bias: Tensor[(32), float32] /* span=aten::_convolution_46.bias:0:0 */, %aten::_convolution_47.weight: Tensor[(64, 96, 1, 1), float32] /* span=aten::_convolution_47.weight:0:0 */, %aten::_convolution_47.bias: Tensor[(64), float32] /* span=aten::_convolution_47.bias:0:0 */, %aten::_convolution_63.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_63.weight:0:0 */, %aten::_convolution_63.bias: Tensor[(64), float32] /* span=aten::_convolution_63.bias:0:0 */, %aten::_convolution_64.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_64.weight:0:0 */, %aten::_convolution_64.bias: Tensor[(64), float32] /* span=aten::_convolution_64.bias:0:0 */, %aten::_convolution_65.weight: Tensor[(64, 64, 1, 1), float32] /* span=aten::_convolution_65.weight:0:0 */, %aten::_convolution_65.bias: Tensor[(64), float32] /* span=aten::_convolution_65.bias:0:0 */, %aten::_convolution_66.weight: Tensor[(64, 1, 3, 3), float32] /* span=aten::_convolution_66.weight:0:0 */, %aten::_convolution_66.bias: Tensor[(64), float32] /* span=aten::_convolution_66.bias:0:0 */, %aten::_convolution_67.weight: Tensor[(80, 64, 1, 1), float32] /* span=aten::_convolution_67.weight:0:0 */, %aten::_convolution_67.bias: Tensor[(80), float32] /* span=aten::_convolution_67.bias:0:0 */, %aten::_convolution_68.weight: Tensor[(80, 1, 3, 3), float32] /* span=aten::_convolution_68.weight:0:0 */, %aten::_convolution_68.bias: Tensor[(80), float32] /* span=aten::_convolution_68.bias:0:0 */, %aten::_convolution_69.weight: Tensor[(80, 80, 1, 1), float32] /* span=aten::_convolution_69.weight:0:0 */, %aten::_convolution_69.bias: Tensor[(80), float32] /* span=aten::_convolution_69.bias:0:0 */, %aten::_convolution_70.weight: Tensor[(80, 80, 1, 1), float32] /* span=aten::_convolution_70.weight:0:0 */, %aten::_convolution_70.bias: Tensor[(80), float32] /* span=aten::_convolution_70.bias:0:0 */, %aten::_convolution_48.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_48.weight:0:0 */, %aten::_convolution_48.bias: Tensor[(64), float32] /* span=aten::_convolution_48.bias:0:0 */, %aten::_convolution_49.weight: Tensor[(128, 192, 1, 1), float32] /* span=aten::_convolution_49.weight:0:0 */, %aten::_convolution_49.bias: Tensor[(128), float32] /* span=aten::_convolution_49.bias:0:0 */, %aten::_convolution_50.weight: Tensor[(32, 64, 3, 3), float32] /* span=aten::_convolution_50.weight:0:0 */, %aten::_convolution_50.bias: Tensor[(32), float32] /* span=aten::_convolution_50.bias:0:0 */, %aten::_convolution_51.weight: Tensor[(64, 32, 3, 3), float32] /* span=aten::_convolution_51.weight:0:0 */, %aten::_convolution_51.bias: Tensor[(64), float32] /* span=aten::_convolution_51.bias:0:0 */, %aten::_convolution_52.weight: Tensor[(128, 192, 1, 1), float32] /* span=aten::_convolution_52.weight:0:0 */, %aten::_convolution_52.bias: Tensor[(128), float32] /* span=aten::_convolution_52.bias:0:0 */, %aten::_convolution_71.weight: Tensor[(64, 128, 3, 3), float32] /* span=aten::_convolution_71.weight:0:0 */, %aten::_convolution_71.bias: Tensor[(64), float32] /* span=aten::_convolution_71.bias:0:0 */, %aten::_convolution_72.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_72.weight:0:0 */, %aten::_convolution_72.bias: Tensor[(64), float32] /* span=aten::_convolution_72.bias:0:0 */, %aten::_convolution_73.weight: Tensor[(64, 64, 1, 1), float32] /* span=aten::_convolution_73.weight:0:0 */, %aten::_convolution_73.bias: Tensor[(64), float32] /* span=aten::_convolution_73.bias:0:0 */, %aten::_convolution_74.weight: Tensor[(128, 1, 3, 3), float32] /* span=aten::_convolution_74.weight:0:0 */, %aten::_convolution_74.bias: Tensor[(128), float32] /* span=aten::_convolution_74.bias:0:0 */, %aten::_convolution_75.weight: Tensor[(80, 128, 1, 1), float32] /* span=aten::_convolution_75.weight:0:0 */, %aten::_convolution_75.bias: Tensor[(80), float32] /* span=aten::_convolution_75.bias:0:0 */, %aten::_convolution_76.weight: Tensor[(80, 1, 3, 3), float32] /* span=aten::_convolution_76.weight:0:0 */, %aten::_convolution_76.bias: Tensor[(80), float32] /* span=aten::_convolution_76.bias:0:0 */, %aten::_convolution_77.weight: Tensor[(80, 80, 1, 1), float32] /* span=aten::_convolution_77.weight:0:0 */, %aten::_convolution_77.bias: Tensor[(80), float32] /* span=aten::_convolution_77.bias:0:0 */, %aten::_convolution_78.weight: Tensor[(80, 80, 1, 1), float32] /* span=aten::_convolution_78.weight:0:0 */, %aten::_convolution_78.bias: Tensor[(80), float32] /* span=aten::_convolution_78.bias:0:0 */, %aten::_convolution_53.weight: Tensor[(128, 128, 3, 3), float32] /* span=aten::_convolution_53.weight:0:0 */, %aten::_convolution_53.bias: Tensor[(128), float32] /* span=aten::_convolution_53.bias:0:0 */, %aten::_convolution_54.weight: Tensor[(256, 384, 1, 1), float32] /* span=aten::_convolution_54.weight:0:0 */, %aten::_convolution_54.bias: Tensor[(256), float32] /* span=aten::_convolution_54.bias:0:0 */, %aten::_convolution_55.weight: Tensor[(64, 128, 1, 1), float32] /* span=aten::_convolution_55.weight:0:0 */, %aten::_convolution_55.bias: Tensor[(64), float32] /* span=aten::_convolution_55.bias:0:0 */, %aten::_convolution_56.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_56.weight:0:0 */, %aten::_convolution_56.bias: Tensor[(64), float32] /* span=aten::_convolution_56.bias:0:0 */, %aten::_convolution_57.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_57.weight:0:0 */, %aten::_convolution_57.bias: Tensor[(64), float32] /* span=aten::_convolution_57.bias:0:0 */, %aten::_convolution_58.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_58.weight:0:0 */, %aten::_convolution_58.bias: Tensor[(64), float32] /* span=aten::_convolution_58.bias:0:0 */, %aten::_convolution_59.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_59.weight:0:0 */, %aten::_convolution_59.bias: Tensor[(64), float32] /* span=aten::_convolution_59.bias:0:0 */, %aten::_convolution_60.weight: Tensor[(64, 128, 1, 1), float32] /* span=aten::_convolution_60.weight:0:0 */, %aten::_convolution_60.bias: Tensor[(64), float32] /* span=aten::_convolution_60.bias:0:0 */, %aten::_convolution_61.weight: Tensor[(128, 128, 1, 1), float32] /* span=aten::_convolution_61.weight:0:0 */, %aten::_convolution_61.bias: Tensor[(128), float32] /* span=aten::_convolution_61.bias:0:0 */, %aten::_convolution_62.weight: Tensor[(256, 384, 1, 1), float32] /* span=aten::_convolution_62.weight:0:0 */, %aten::_convolution_62.bias: Tensor[(256), float32] /* span=aten::_convolution_62.bias:0:0 */, %aten::_convolution_79.weight: Tensor[(64, 256, 3, 3), float32] /* span=aten::_convolution_79.weight:0:0 */, %aten::_convolution_79.bias: Tensor[(64), float32] /* span=aten::_convolution_79.bias:0:0 */, %aten::_convolution_80.weight: Tensor[(64, 64, 3, 3), float32] /* span=aten::_convolution_80.weight:0:0 */, %aten::_convolution_80.bias: Tensor[(64), float32] /* span=aten::_convolution_80.bias:0:0 */, %aten::_convolution_81.weight: Tensor[(64, 64, 1, 1), float32] /* span=aten::_convolution_81.weight:0:0 */, %aten::_convolution_81.bias: Tensor[(64), float32] /* span=aten::_convolution_81.bias:0:0 */, %aten::_convolution_82.weight: Tensor[(256, 1, 3, 3), float32] /* span=aten::_convolution_82.weight:0:0 */, %aten::_convolution_82.bias: Tensor[(256), float32] /* span=aten::_convolution_82.bias:0:0 */, %aten::_convolution_83.weight: Tensor[(80, 256, 1, 1), float32] /* span=aten::_convolution_83.weight:0:0 */, %aten::_convolution_83.bias: Tensor[(80), float32] /* span=aten::_convolution_83.bias:0:0 */, %aten::_convolution_84.weight: Tensor[(80, 1, 3, 3), float32] /* span=aten::_convolution_84.weight:0:0 */, %aten::_convolution_84.bias: Tensor[(80), float32] /* span=aten::_convolution_84.bias:0:0 */, %aten::_convolution_85.weight: Tensor[(80, 80, 1, 1), float32] /* span=aten::_convolution_85.weight:0:0 */, %aten::_convolution_85.bias: Tensor[(80), float32] /* span=aten::_convolution_85.bias:0:0 */, %aten::_convolution_86.weight: Tensor[(80, 80, 1, 1), float32] /* span=aten::_convolution_86.weight:0:0 */, %aten::_convolution_86.bias: Tensor[(80), float32] /* span=aten::_convolution_86.bias:0:0 */, %aten::_convolution_87.weight: Tensor[(1, 16, 1, 1), float32] /* span=aten::_convolution_87.weight:0:0 */) {
%0 = nn.conv2d(%images, %aten::_convolution_0.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* span=aten::_convolution_0:0:0 */;
%1 = nn.bias_add(%0, %aten::_convolution_0.bias) /* span=aten::_convolution_0:0:0 */;
%2 = sigmoid(%1) /* span=aten::silu__0:0:0 */;
%3 = multiply(%1, %2) /* span=aten::silu__0:0:0 */;
%4 = nn.conv2d(%3, %aten::_convolution_1.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_1:0:0 */;
%5 = nn.bias_add(%4, %aten::_convolution_1.bias) /* span=aten::_convolution_1:0:0 */;
%6 = sigmoid(%5) /* span=aten::silu__1:0:0 */;
%7 = multiply(%5, %6) /* span=aten::silu__1:0:0 */;
%8 = nn.conv2d(%7, %aten::_convolution_2.weight, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* span=aten::_convolution_2:0:0 */;
%9 = nn.bias_add(%8, %aten::_convolution_2.bias) /* span=aten::_convolution_2:0:0 */;
%10 = sigmoid(%9) /* span=aten::silu__2:0:0 */;
%11 = multiply(%9, %10) /* span=aten::silu__2:0:0 */;
%12 = split(%11, indices_or_sections=[meta[runtime.BoxInt][0]], axis=1) /* span=aten::split_with_sizes_0:0:0 */;
%13 = %12.1 /* span=aten::split_with_sizes_0:0:0 */;
%14 = nn.conv2d(%13, %aten::_convolution_3.weight, padding=[1, 1, 1, 1], channels=8, kernel_size=[3, 3]) /* span=aten::_convolution_3:0:0 */;
%15 = nn.bias_add(%14, %aten::_convolution_3.bias) /* span=aten::_convolution_3:0:0 */;
%16 = sigmoid(%15) /* span=aten::silu__3:0:0 */;
%17 = multiply(%15, %16) /* span=aten::silu__3:0:0 */;
%18 = nn.conv2d(%17, %aten::_convolution_4.weight, padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* span=aten::_convolution_4:0:0 */;
%19 = nn.bias_add(%18, %aten::_convolution_4.bias) /* span=aten::_convolution_4:0:0 */;
%20 = sigmoid(%19) /* span=aten::silu__4:0:0 */;
%21 = multiply(%19, %20) /* span=aten::silu__4:0:0 */;
%22 = %12.0 /* span=aten::split_with_sizes_0:0:0 */;
%23 = add(%13, %21) /* span=aten::add_0:0:0 */;
%24 = (%22, %13, %23) /* span=aten::cat_0:0:0 */;
%25 = concatenate(%24, axis=1) /* span=aten::cat_0:0:0 */;
%26 = nn.conv2d(%25, %aten::_convolution_5.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_5:0:0 */;
%27 = nn.bias_add(%26, %aten::_convolution_5.bias) /* span=aten::_convolution_5:0:0 */;
%28 = sigmoid(%27) /* span=aten::silu__5:0:0 */;
%29 = multiply(%27, %28) /* span=aten::silu__5:0:0 */;
%30 = nn.conv2d(%29, %aten::_convolution_6.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_6:0:0 */;
%31 = nn.bias_add(%30, %aten::_convolution_6.bias) /* span=aten::_convolution_6:0:0 */;
%32 = sigmoid(%31) /* span=aten::silu__6:0:0 */;
%33 = multiply(%31, %32) /* span=aten::silu__6:0:0 */;
%34 = nn.conv2d(%33, %aten::_convolution_7.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_7:0:0 */;
%35 = nn.bias_add(%34, %aten::_convolution_7.bias) /* span=aten::_convolution_7:0:0 */;
%36 = sigmoid(%35) /* span=aten::silu__7:0:0 */;
%37 = multiply(%35, %36) /* span=aten::silu__7:0:0 */;
%38 = split(%37, indices_or_sections=[meta[runtime.BoxInt][1]], axis=1) /* span=aten::split_with_sizes_1:0:0 */;
%39 = %38.1 /* span=aten::split_with_sizes_1:0:0 */;
%40 = nn.conv2d(%39, %aten::_convolution_8.weight, padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* span=aten::_convolution_8:0:0 */;
%41 = nn.bias_add(%40, %aten::_convolution_8.bias) /* span=aten::_convolution_8:0:0 */;
%42 = sigmoid(%41) /* span=aten::silu__8:0:0 */;
%43 = multiply(%41, %42) /* span=aten::silu__8:0:0 */;
%44 = nn.conv2d(%43, %aten::_convolution_9.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_9:0:0 */;
%45 = nn.bias_add(%44, %aten::_convolution_9.bias) /* span=aten::_convolution_9:0:0 */;
%46 = sigmoid(%45) /* span=aten::silu__9:0:0 */;
%47 = multiply(%45, %46) /* span=aten::silu__9:0:0 */;
%48 = %38.0 /* span=aten::split_with_sizes_1:0:0 */;
%49 = add(%39, %47) /* span=aten::add_1:0:0 */;
%50 = (%48, %39, %49) /* span=aten::cat_1:0:0 */;
%51 = concatenate(%50, axis=1) /* span=aten::cat_1:0:0 */;
%52 = nn.conv2d(%51, %aten::_convolution_10.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_10:0:0 */;
%53 = nn.bias_add(%52, %aten::_convolution_10.bias) /* span=aten::_convolution_10:0:0 */;
%54 = sigmoid(%53) /* span=aten::silu__10:0:0 */;
%55 = multiply(%53, %54) /* span=aten::silu__10:0:0 */;
%56 = nn.conv2d(%55, %aten::_convolution_11.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3]) /* span=aten::_convolution_11:0:0 */;
%57 = nn.bias_add(%56, %aten::_convolution_11.bias) /* span=aten::_convolution_11:0:0 */;
%58 = sigmoid(%57) /* span=aten::silu__11:0:0 */;
%59 = multiply(%57, %58) /* span=aten::silu__11:0:0 */;
%60 = nn.conv2d(%59, %aten::_convolution_12.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_12:0:0 */;
%61 = nn.bias_add(%60, %aten::_convolution_12.bias) /* span=aten::_convolution_12:0:0 */;
%62 = sigmoid(%61) /* span=aten::silu__12:0:0 */;
%63 = multiply(%61, %62) /* span=aten::silu__12:0:0 */;
%64 = split(%63, indices_or_sections=[meta[runtime.BoxInt][2]], axis=1) /* span=aten::split_with_sizes_2:0:0 */;
%65 = %64.1 /* span=aten::split_with_sizes_2:0:0 */;
%66 = nn.conv2d(%65, %aten::_convolution_13.weight, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* span=aten::_convolution_13:0:0 */;
%67 = nn.bias_add(%66, %aten::_convolution_13.bias) /* span=aten::_convolution_13:0:0 */;
%68 = sigmoid(%67) /* span=aten::silu__13:0:0 */;
%69 = multiply(%67, %68) /* span=aten::silu__13:0:0 */;
%70 = nn.conv2d(%69, %aten::_convolution_14.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_14:0:0 */;
%71 = nn.bias_add(%70, %aten::_convolution_14.bias) /* span=aten::_convolution_14:0:0 */;
%72 = sigmoid(%71) /* span=aten::silu__14:0:0 */;
%73 = multiply(%71, %72) /* span=aten::silu__14:0:0 */;
%74 = nn.conv2d(%73, %aten::_convolution_15.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_15:0:0 */;
%75 = nn.bias_add(%74, %aten::_convolution_15.bias) /* span=aten::_convolution_15:0:0 */;
%76 = sigmoid(%75) /* span=aten::silu__15:0:0 */;
%77 = multiply(%75, %76) /* span=aten::silu__15:0:0 */;
%78 = add(%69, %77) /* span=aten::add_2:0:0 */;
%79 = nn.conv2d(%78, %aten::_convolution_16.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_16:0:0 */;
%80 = nn.bias_add(%79, %aten::_convolution_16.bias) /* span=aten::_convolution_16:0:0 */;
%81 = sigmoid(%80) /* span=aten::silu__16:0:0 */;
%82 = multiply(%80, %81) /* span=aten::silu__16:0:0 */;
%83 = nn.conv2d(%82, %aten::_convolution_17.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_17:0:0 */;
%84 = nn.bias_add(%83, %aten::_convolution_17.bias) /* span=aten::_convolution_17:0:0 */;
%85 = sigmoid(%84) /* span=aten::silu__17:0:0 */;
%86 = multiply(%84, %85) /* span=aten::silu__17:0:0 */;
%87 = nn.conv2d(%65, %aten::_convolution_18.weight, padding=[0, 0, 0, 0], channels=32, kernel_size=[1, 1]) /* span=aten::_convolution_18:0:0 */;
%88 = nn.bias_add(%87, %aten::_convolution_18.bias) /* span=aten::_convolution_18:0:0 */;
%89 = sigmoid(%88) /* span=aten::silu__18:0:0 */;
%90 = add(%78, %86) /* span=aten::add_3:0:0 */;
%91 = multiply(%88, %89) /* span=aten::silu__18:0:0 */;
%92 = (%90, %91) /* span=aten::cat_2:0:0 */;
%93 = concatenate(%92, axis=1) /* span=aten::cat_2:0:0 */;
%94 = nn.conv2d(%93, %aten::_convolution_19.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_19:0:0 */;
%95 = nn.bias_add(%94, %aten::_convolution_19.bias) /* span=aten::_convolution_19:0:0 */;
%96 = sigmoid(%95) /* span=aten::silu__19:0:0 */;
%97 = %64.0 /* span=aten::split_with_sizes_2:0:0 */;
%98 = multiply(%95, %96) /* span=aten::silu__19:0:0 */;
%99 = (%97, %65, %98) /* span=aten::cat_3:0:0 */;
%100 = concatenate(%99, axis=1) /* span=aten::cat_3:0:0 */;
%101 = nn.conv2d(%100, %aten::_convolution_20.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_20:0:0 */;
%102 = nn.bias_add(%101, %aten::_convolution_20.bias) /* span=aten::_convolution_20:0:0 */;
%103 = sigmoid(%102) /* span=aten::silu__20:0:0 */;
%104 = multiply(%102, %103) /* span=aten::silu__20:0:0 */;
%105 = nn.conv2d(%104, %aten::_convolution_21.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3]) /* span=aten::_convolution_21:0:0 */;
%106 = nn.bias_add(%105, %aten::_convolution_21.bias) /* span=aten::_convolution_21:0:0 */;
%107 = sigmoid(%106) /* span=aten::silu__21:0:0 */;
%108 = multiply(%106, %107) /* span=aten::silu__21:0:0 */;
%109 = nn.conv2d(%108, %aten::_convolution_22.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_22:0:0 */;
%110 = nn.bias_add(%109, %aten::_convolution_22.bias) /* span=aten::_convolution_22:0:0 */;
%111 = sigmoid(%110) /* span=aten::silu__22:0:0 */;
%112 = multiply(%110, %111) /* span=aten::silu__22:0:0 */;
%113 = split(%112, indices_or_sections=[meta[runtime.BoxInt][3]], axis=1) /* span=aten::split_with_sizes_3:0:0 */;
%114 = %113.1 /* span=aten::split_with_sizes_3:0:0 */;
%115 = nn.conv2d(%114, %aten::_convolution_23.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_23:0:0 */;
%116 = nn.bias_add(%115, %aten::_convolution_23.bias) /* span=aten::_convolution_23:0:0 */;
%117 = sigmoid(%116) /* span=aten::silu__23:0:0 */;
%118 = multiply(%116, %117) /* span=aten::silu__23:0:0 */;
%119 = nn.conv2d(%118, %aten::_convolution_24.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_24:0:0 */;
%120 = nn.bias_add(%119, %aten::_convolution_24.bias) /* span=aten::_convolution_24:0:0 */;
%121 = sigmoid(%120) /* span=aten::silu__24:0:0 */;
%122 = multiply(%120, %121) /* span=aten::silu__24:0:0 */;
%123 = nn.conv2d(%122, %aten::_convolution_25.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_25:0:0 */;
%124 = nn.bias_add(%123, %aten::_convolution_25.bias) /* span=aten::_convolution_25:0:0 */;
%125 = sigmoid(%124) /* span=aten::silu__25:0:0 */;
%126 = multiply(%124, %125) /* span=aten::silu__25:0:0 */;
%127 = add(%118, %126) /* span=aten::add_4:0:0 */;
%128 = nn.conv2d(%127, %aten::_convolution_26.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_26:0:0 */;
%129 = nn.bias_add(%128, %aten::_convolution_26.bias) /* span=aten::_convolution_26:0:0 */;
%130 = sigmoid(%129) /* span=aten::silu__26:0:0 */;
%131 = multiply(%129, %130) /* span=aten::silu__26:0:0 */;
%132 = nn.conv2d(%131, %aten::_convolution_27.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_27:0:0 */;
%133 = nn.bias_add(%132, %aten::_convolution_27.bias) /* span=aten::_convolution_27:0:0 */;
%134 = sigmoid(%133) /* span=aten::silu__27:0:0 */;
%135 = multiply(%133, %134) /* span=aten::silu__27:0:0 */;
%136 = nn.conv2d(%114, %aten::_convolution_28.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_28:0:0 */;
%137 = nn.bias_add(%136, %aten::_convolution_28.bias) /* span=aten::_convolution_28:0:0 */;
%138 = sigmoid(%137) /* span=aten::silu__28:0:0 */;
%139 = add(%127, %135) /* span=aten::add_5:0:0 */;
%140 = multiply(%137, %138) /* span=aten::silu__28:0:0 */;
%141 = (%139, %140) /* span=aten::cat_4:0:0 */;
%142 = concatenate(%141, axis=1) /* span=aten::cat_4:0:0 */;
%143 = nn.conv2d(%142, %aten::_convolution_29.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_29:0:0 */;
%144 = nn.bias_add(%143, %aten::_convolution_29.bias) /* span=aten::_convolution_29:0:0 */;
%145 = sigmoid(%144) /* span=aten::silu__29:0:0 */;
%146 = %113.0 /* span=aten::split_with_sizes_3:0:0 */;
%147 = multiply(%144, %145) /* span=aten::silu__29:0:0 */;
%148 = (%146, %114, %147) /* span=aten::cat_5:0:0 */;
%149 = concatenate(%148, axis=1) /* span=aten::cat_5:0:0 */;
%150 = nn.conv2d(%149, %aten::_convolution_30.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_30:0:0 */;
%151 = nn.bias_add(%150, %aten::_convolution_30.bias) /* span=aten::_convolution_30:0:0 */;
%152 = sigmoid(%151) /* span=aten::silu__30:0:0 */;
%153 = multiply(%151, %152) /* span=aten::silu__30:0:0 */;
%154 = nn.conv2d(%153, %aten::_convolution_31.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_31:0:0 */;
%155 = nn.bias_add(%154, %aten::_convolution_31.bias) /* span=aten::_convolution_31:0:0 */;
%156 = sigmoid(%155) /* span=aten::silu__31:0:0 */;
%157 = multiply(%155, %156) /* span=aten::silu__31:0:0 */;
%158 = nn.max_pool2d(%157, pool_size=[5, 5], padding=[2, 2, 2, 2]) /* span=aten::max_pool2d_0:0:0 */;
%159 = nn.max_pool2d(%158, pool_size=[5, 5], padding=[2, 2, 2, 2]) /* span=aten::max_pool2d_1:0:0 */;
%160 = nn.max_pool2d(%159, pool_size=[5, 5], padding=[2, 2, 2, 2]) /* span=aten::max_pool2d_2:0:0 */;
%161 = (%157, %158, %159, %160) /* span=aten::cat_6:0:0 */;
%162 = concatenate(%161, axis=1) /* span=aten::cat_6:0:0 */;
%163 = nn.conv2d(%162, %aten::_convolution_32.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_32:0:0 */;
%164 = nn.bias_add(%163, %aten::_convolution_32.bias) /* span=aten::_convolution_32:0:0 */;
%165 = sigmoid(%164) /* span=aten::silu__32:0:0 */;
%166 = multiply(%164, %165) /* span=aten::silu__32:0:0 */;
%167 = nn.conv2d(%166, %aten::_convolution_33.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_33:0:0 */;
%168 = nn.bias_add(%167, %aten::_convolution_33.bias) /* span=aten::_convolution_33:0:0 */;
%169 = sigmoid(%168) /* span=aten::silu__33:0:0 */;
%170 = multiply(%168, %169) /* span=aten::silu__33:0:0 */;
%171 = split(%170, indices_or_sections=[meta[runtime.BoxInt][4]], axis=1) /* span=aten::split_with_sizes_4:0:0 */;
%172 = %171.1 /* span=aten::split_with_sizes_4:0:0 */;
%173 = nn.conv2d(%172, %aten::_convolution_34.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_34:0:0 */;
%174 = nn.bias_add(%173, %aten::_convolution_34.bias) /* span=aten::_convolution_34:0:0 */;
%175 = reshape(%174, newshape=[1, 2, 128, 400]) /* span=aten::view_0:0:0 */;
%176 = split(%175, indices_or_sections=[meta[runtime.BoxInt][5], meta[runtime.BoxInt][6]], axis=2) /* span=aten::split_with_sizes_5:0:0 */;
%177 = %176.2 /* span=aten::split_with_sizes_5:0:0 */;
%178 = broadcast_to(%177, shape=[1, 2, 64, 400]) /* span=aten::matmul_1:0:0 */;
%179 = %176.0 /* span=aten::split_with_sizes_5:0:0 */;
%180 = transpose(%179, axes=[0, 1, 3, 2]) /* span=aten::transpose_0:0:0 */;
%181 = broadcast_to(%180, shape=[1, 2, 400, 32]) /* span=aten::matmul_0:0:0 */;
%182 = %176.1 /* span=aten::split_with_sizes_5:0:0 */;
%183 = broadcast_to(%182, shape=[1, 2, 32, 400]) /* span=aten::matmul_0:0:0 */;
%184 = reshape(%181, newshape=[-1, 400, 32]) /* span=aten::matmul_0:0:0 */;
%185 = reshape(%183, newshape=[-1, 32, 400]) /* span=aten::matmul_0:0:0 */;
%186 = nn.batch_matmul(%184, %185) /* span=aten::matmul_0:0:0 */;
%187 = reshape(%186, newshape=[1, 2, 400, 400]) /* span=aten::matmul_0:0:0 */;
%188 = squeeze(%187, axis=[]) /* span=aten::matmul_0:0:0 */;
%189 = multiply(%188, 0.176777f /* span=aten::mul_1:0:0 */) /* span=aten::mul_1:0:0 */;
%190 = nn.softmax(%189) /* span=aten::softmax_0:0:0 */;
%191 = transpose(%190, axes=[0, 1, 3, 2]) /* span=aten::transpose_1:0:0 */;
%192 = broadcast_to(%191, shape=[1, 2, 400, 400]) /* span=aten::matmul_1:0:0 */;
%193 = reshape(%178, newshape=[-1, 64, 400]) /* span=aten::matmul_1:0:0 */;
%194 = reshape(%192, newshape=[-1, 400, 400]) /* span=aten::matmul_1:0:0 */;
%195 = nn.batch_matmul(%193, %194) /* span=aten::matmul_1:0:0 */;
%196 = reshape(%195, newshape=[1, 2, 64, 400]) /* span=aten::matmul_1:0:0 */;
%197 = squeeze(%196, axis=[]) /* span=aten::matmul_1:0:0 */;
%198 = reshape(%177, newshape=[1, 128, 20, 20]) /* span=aten::reshape_0:0:0 */;
%199 = reshape(%aten::_convolution_35.weight, newshape=[128, 1, 3, 3]) /* span=aten::_convolution_35:0:0 */;
%200 = nn.conv2d(%198, %199, padding=[1, 1, 1, 1], groups=128, channels=128, kernel_size=[3, 3]) /* span=aten::_convolution_35:0:0 */;
%201 = reshape(%197, newshape=[1, 128, 20, 20]) /* span=aten::view_1:0:0 */;
%202 = nn.bias_add(%200, %aten::_convolution_35.bias) /* span=aten::_convolution_35:0:0 */;
%203 = add(%201, %202) /* span=aten::add_6:0:0 */;
%204 = nn.conv2d(%203, %aten::_convolution_36.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_36:0:0 */;
%205 = nn.bias_add(%204, %aten::_convolution_36.bias) /* span=aten::_convolution_36:0:0 */;
%206 = add(%172, %205) /* span=aten::add_7:0:0 */;
%207 = nn.conv2d(%206, %aten::_convolution_37.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_37:0:0 */;
%208 = nn.bias_add(%207, %aten::_convolution_37.bias) /* span=aten::_convolution_37:0:0 */;
%209 = sigmoid(%208) /* span=aten::silu__34:0:0 */;
%210 = multiply(%208, %209) /* span=aten::silu__34:0:0 */;
%211 = nn.conv2d(%210, %aten::_convolution_38.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_38:0:0 */;
%212 = nn.bias_add(%211, %aten::_convolution_38.bias) /* span=aten::_convolution_38:0:0 */;
%213 = %171.0 /* span=aten::split_with_sizes_4:0:0 */;
%214 = add(%206, %212) /* span=aten::add_8:0:0 */;
%215 = (%213, %214) /* span=aten::cat_7:0:0 */;
%216 = concatenate(%215, axis=1) /* span=aten::cat_7:0:0 */;
%217 = nn.conv2d(%216, %aten::_convolution_39.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_39:0:0 */;
%218 = nn.bias_add(%217, %aten::_convolution_39.bias) /* span=aten::_convolution_39:0:0 */;
%219 = sigmoid(%218) /* span=aten::silu__35:0:0 */;
%220 = multiply(%218, %219) /* span=aten::silu__35:0:0 */;
%221 = image.resize2d(%220, size=[40, 40], roi=[0f, 0f, 0f, 0f], method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="", cubic_alpha=-0.75f) /* span=aten::upsample_nearest2d_0:0:0 */;
%222 = (%221, %104) /* span=aten::cat_8:0:0 */;
%223 = concatenate(%222, axis=1) /* span=aten::cat_8:0:0 */;
%224 = nn.conv2d(%223, %aten::_convolution_40.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_40:0:0 */;
%225 = nn.bias_add(%224, %aten::_convolution_40.bias) /* span=aten::_convolution_40:0:0 */;
%226 = sigmoid(%225) /* span=aten::silu__36:0:0 */;
%227 = multiply(%225, %226) /* span=aten::silu__36:0:0 */;
%228 = split(%227, indices_or_sections=[meta[runtime.BoxInt][7]], axis=1) /* span=aten::split_with_sizes_6:0:0 */;
%229 = %228.1 /* span=aten::split_with_sizes_6:0:0 */;
%230 = nn.conv2d(%229, %aten::_convolution_41.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_41:0:0 */;
%231 = nn.bias_add(%230, %aten::_convolution_41.bias) /* span=aten::_convolution_41:0:0 */;
%232 = sigmoid(%231) /* span=aten::silu__37:0:0 */;
%233 = multiply(%231, %232) /* span=aten::silu__37:0:0 */;
%234 = nn.conv2d(%233, %aten::_convolution_42.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_42:0:0 */;
%235 = nn.bias_add(%234, %aten::_convolution_42.bias) /* span=aten::_convolution_42:0:0 */;
%236 = sigmoid(%235) /* span=aten::silu__38:0:0 */;
%237 = multiply(%235, %236) /* span=aten::silu__38:0:0 */;
%238 = %228.0 /* span=aten::split_with_sizes_6:0:0 */;
%239 = add(%229, %237) /* span=aten::add_9:0:0 */;
%240 = (%238, %229, %239) /* span=aten::cat_9:0:0 */;
%241 = concatenate(%240, axis=1) /* span=aten::cat_9:0:0 */;
%242 = nn.conv2d(%241, %aten::_convolution_43.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_43:0:0 */;
%243 = nn.bias_add(%242, %aten::_convolution_43.bias) /* span=aten::_convolution_43:0:0 */;
%244 = sigmoid(%243) /* span=aten::silu__39:0:0 */;
%245 = multiply(%243, %244) /* span=aten::silu__39:0:0 */;
%246 = image.resize2d(%245, size=[80, 80], roi=[0f, 0f, 0f, 0f], method="nearest_neighbor", coordinate_transformation_mode="asymmetric", rounding_method="", cubic_alpha=-0.75f) /* span=aten::upsample_nearest2d_1:0:0 */;
%247 = (%246, %55) /* span=aten::cat_10:0:0 */;
%248 = concatenate(%247, axis=1) /* span=aten::cat_10:0:0 */;
%249 = nn.conv2d(%248, %aten::_convolution_44.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_44:0:0 */;
%250 = nn.bias_add(%249, %aten::_convolution_44.bias) /* span=aten::_convolution_44:0:0 */;
%251 = sigmoid(%250) /* span=aten::silu__40:0:0 */;
%252 = multiply(%250, %251) /* span=aten::silu__40:0:0 */;
%253 = split(%252, indices_or_sections=[meta[runtime.BoxInt][8]], axis=1) /* span=aten::split_with_sizes_7:0:0 */;
%254 = %253.1 /* span=aten::split_with_sizes_7:0:0 */;
%255 = nn.conv2d(%254, %aten::_convolution_45.weight, padding=[1, 1, 1, 1], channels=16, kernel_size=[3, 3]) /* span=aten::_convolution_45:0:0 */;
%256 = nn.bias_add(%255, %aten::_convolution_45.bias) /* span=aten::_convolution_45:0:0 */;
%257 = sigmoid(%256) /* span=aten::silu__41:0:0 */;
%258 = multiply(%256, %257) /* span=aten::silu__41:0:0 */;
%259 = nn.conv2d(%258, %aten::_convolution_46.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_46:0:0 */;
%260 = nn.bias_add(%259, %aten::_convolution_46.bias) /* span=aten::_convolution_46:0:0 */;
%261 = sigmoid(%260) /* span=aten::silu__42:0:0 */;
%262 = multiply(%260, %261) /* span=aten::silu__42:0:0 */;
%263 = %253.0 /* span=aten::split_with_sizes_7:0:0 */;
%264 = add(%254, %262) /* span=aten::add_10:0:0 */;
%265 = (%263, %254, %264) /* span=aten::cat_11:0:0 */;
%266 = concatenate(%265, axis=1) /* span=aten::cat_11:0:0 */;
%267 = nn.conv2d(%266, %aten::_convolution_47.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_47:0:0 */;
%268 = nn.bias_add(%267, %aten::_convolution_47.bias) /* span=aten::_convolution_47:0:0 */;
%269 = sigmoid(%268) /* span=aten::silu__43:0:0 */;
%270 = multiply(%268, %269) /* span=aten::silu__43:0:0 */;
%271 = nn.conv2d(%270, %aten::_convolution_63.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_63:0:0 */;
%272 = nn.bias_add(%271, %aten::_convolution_63.bias) /* span=aten::_convolution_63:0:0 */;
%273 = sigmoid(%272) /* span=aten::silu__59:0:0 */;
%274 = multiply(%272, %273) /* span=aten::silu__59:0:0 */;
%275 = nn.conv2d(%274, %aten::_convolution_64.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_64:0:0 */;
%276 = nn.bias_add(%275, %aten::_convolution_64.bias) /* span=aten::_convolution_64:0:0 */;
%277 = sigmoid(%276) /* span=aten::silu__60:0:0 */;
%278 = multiply(%276, %277) /* span=aten::silu__60:0:0 */;
%279 = nn.conv2d(%278, %aten::_convolution_65.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_65:0:0 */;
%280 = reshape(%aten::_convolution_66.weight, newshape=[64, 1, 3, 3]) /* span=aten::_convolution_66:0:0 */;
%281 = nn.conv2d(%270, %280, padding=[1, 1, 1, 1], groups=64, channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_66:0:0 */;
%282 = nn.bias_add(%281, %aten::_convolution_66.bias) /* span=aten::_convolution_66:0:0 */;
%283 = sigmoid(%282) /* span=aten::silu__61:0:0 */;
%284 = multiply(%282, %283) /* span=aten::silu__61:0:0 */;
%285 = nn.conv2d(%284, %aten::_convolution_67.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_67:0:0 */;
%286 = nn.bias_add(%285, %aten::_convolution_67.bias) /* span=aten::_convolution_67:0:0 */;
%287 = sigmoid(%286) /* span=aten::silu__62:0:0 */;
%288 = multiply(%286, %287) /* span=aten::silu__62:0:0 */;
%289 = reshape(%aten::_convolution_68.weight, newshape=[80, 1, 3, 3]) /* span=aten::_convolution_68:0:0 */;
%290 = nn.conv2d(%288, %289, padding=[1, 1, 1, 1], groups=80, channels=80, kernel_size=[3, 3]) /* span=aten::_convolution_68:0:0 */;
%291 = nn.bias_add(%290, %aten::_convolution_68.bias) /* span=aten::_convolution_68:0:0 */;
%292 = sigmoid(%291) /* span=aten::silu__63:0:0 */;
%293 = multiply(%291, %292) /* span=aten::silu__63:0:0 */;
%294 = nn.conv2d(%293, %aten::_convolution_69.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_69:0:0 */;
%295 = nn.bias_add(%294, %aten::_convolution_69.bias) /* span=aten::_convolution_69:0:0 */;
%296 = sigmoid(%295) /* span=aten::silu__64:0:0 */;
%297 = multiply(%295, %296) /* span=aten::silu__64:0:0 */;
%298 = nn.conv2d(%297, %aten::_convolution_70.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_70:0:0 */;
%299 = nn.bias_add(%279, %aten::_convolution_65.bias) /* span=aten::_convolution_65:0:0 */;
%300 = nn.bias_add(%298, %aten::_convolution_70.bias) /* span=aten::_convolution_70:0:0 */;
%301 = (%299, %300) /* span=aten::cat_17:0:0 */;
%302 = concatenate(%301, axis=1) /* span=aten::cat_17:0:0 */;
%303 = nn.conv2d(%270, %aten::_convolution_48.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_48:0:0 */;
%304 = nn.bias_add(%303, %aten::_convolution_48.bias) /* span=aten::_convolution_48:0:0 */;
%305 = sigmoid(%304) /* span=aten::silu__44:0:0 */;
%306 = multiply(%304, %305) /* span=aten::silu__44:0:0 */;
%307 = (%306, %245) /* span=aten::cat_12:0:0 */;
%308 = concatenate(%307, axis=1) /* span=aten::cat_12:0:0 */;
%309 = nn.conv2d(%308, %aten::_convolution_49.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_49:0:0 */;
%310 = nn.bias_add(%309, %aten::_convolution_49.bias) /* span=aten::_convolution_49:0:0 */;
%311 = sigmoid(%310) /* span=aten::silu__45:0:0 */;
%312 = multiply(%310, %311) /* span=aten::silu__45:0:0 */;
%313 = split(%312, indices_or_sections=[meta[runtime.BoxInt][9]], axis=1) /* span=aten::split_with_sizes_8:0:0 */;
%314 = %313.1 /* span=aten::split_with_sizes_8:0:0 */;
%315 = nn.conv2d(%314, %aten::_convolution_50.weight, padding=[1, 1, 1, 1], channels=32, kernel_size=[3, 3]) /* span=aten::_convolution_50:0:0 */;
%316 = nn.bias_add(%315, %aten::_convolution_50.bias) /* span=aten::_convolution_50:0:0 */;
%317 = sigmoid(%316) /* span=aten::silu__46:0:0 */;
%318 = multiply(%316, %317) /* span=aten::silu__46:0:0 */;
%319 = nn.conv2d(%318, %aten::_convolution_51.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_51:0:0 */;
%320 = nn.bias_add(%319, %aten::_convolution_51.bias) /* span=aten::_convolution_51:0:0 */;
%321 = sigmoid(%320) /* span=aten::silu__47:0:0 */;
%322 = multiply(%320, %321) /* span=aten::silu__47:0:0 */;
%323 = %313.0 /* span=aten::split_with_sizes_8:0:0 */;
%324 = add(%314, %322) /* span=aten::add_11:0:0 */;
%325 = (%323, %314, %324) /* span=aten::cat_13:0:0 */;
%326 = concatenate(%325, axis=1) /* span=aten::cat_13:0:0 */;
%327 = nn.conv2d(%326, %aten::_convolution_52.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_52:0:0 */;
%328 = nn.bias_add(%327, %aten::_convolution_52.bias) /* span=aten::_convolution_52:0:0 */;
%329 = sigmoid(%328) /* span=aten::silu__48:0:0 */;
%330 = multiply(%328, %329) /* span=aten::silu__48:0:0 */;
%331 = nn.conv2d(%330, %aten::_convolution_71.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_71:0:0 */;
%332 = nn.bias_add(%331, %aten::_convolution_71.bias) /* span=aten::_convolution_71:0:0 */;
%333 = sigmoid(%332) /* span=aten::silu__65:0:0 */;
%334 = multiply(%332, %333) /* span=aten::silu__65:0:0 */;
%335 = nn.conv2d(%334, %aten::_convolution_72.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_72:0:0 */;
%336 = nn.bias_add(%335, %aten::_convolution_72.bias) /* span=aten::_convolution_72:0:0 */;
%337 = sigmoid(%336) /* span=aten::silu__66:0:0 */;
%338 = multiply(%336, %337) /* span=aten::silu__66:0:0 */;
%339 = nn.conv2d(%338, %aten::_convolution_73.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_73:0:0 */;
%340 = reshape(%aten::_convolution_74.weight, newshape=[128, 1, 3, 3]) /* span=aten::_convolution_74:0:0 */;
%341 = nn.conv2d(%330, %340, padding=[1, 1, 1, 1], groups=128, channels=128, kernel_size=[3, 3]) /* span=aten::_convolution_74:0:0 */;
%342 = nn.bias_add(%341, %aten::_convolution_74.bias) /* span=aten::_convolution_74:0:0 */;
%343 = sigmoid(%342) /* span=aten::silu__67:0:0 */;
%344 = multiply(%342, %343) /* span=aten::silu__67:0:0 */;
%345 = nn.conv2d(%344, %aten::_convolution_75.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_75:0:0 */;
%346 = nn.bias_add(%345, %aten::_convolution_75.bias) /* span=aten::_convolution_75:0:0 */;
%347 = sigmoid(%346) /* span=aten::silu__68:0:0 */;
%348 = multiply(%346, %347) /* span=aten::silu__68:0:0 */;
%349 = reshape(%aten::_convolution_76.weight, newshape=[80, 1, 3, 3]) /* span=aten::_convolution_76:0:0 */;
%350 = nn.conv2d(%348, %349, padding=[1, 1, 1, 1], groups=80, channels=80, kernel_size=[3, 3]) /* span=aten::_convolution_76:0:0 */;
%351 = nn.bias_add(%350, %aten::_convolution_76.bias) /* span=aten::_convolution_76:0:0 */;
%352 = sigmoid(%351) /* span=aten::silu__69:0:0 */;
%353 = multiply(%351, %352) /* span=aten::silu__69:0:0 */;
%354 = nn.conv2d(%353, %aten::_convolution_77.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_77:0:0 */;
%355 = nn.bias_add(%354, %aten::_convolution_77.bias) /* span=aten::_convolution_77:0:0 */;
%356 = sigmoid(%355) /* span=aten::silu__70:0:0 */;
%357 = multiply(%355, %356) /* span=aten::silu__70:0:0 */;
%358 = nn.conv2d(%357, %aten::_convolution_78.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_78:0:0 */;
%359 = nn.bias_add(%339, %aten::_convolution_73.bias) /* span=aten::_convolution_73:0:0 */;
%360 = nn.bias_add(%358, %aten::_convolution_78.bias) /* span=aten::_convolution_78:0:0 */;
%361 = (%359, %360) /* span=aten::cat_18:0:0 */;
%362 = concatenate(%361, axis=1) /* span=aten::cat_18:0:0 */;
%363 = nn.conv2d(%330, %aten::_convolution_53.weight, strides=[2, 2], padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3]) /* span=aten::_convolution_53:0:0 */;
%364 = nn.bias_add(%363, %aten::_convolution_53.bias) /* span=aten::_convolution_53:0:0 */;
%365 = sigmoid(%364) /* span=aten::silu__49:0:0 */;
%366 = multiply(%364, %365) /* span=aten::silu__49:0:0 */;
%367 = (%366, %220) /* span=aten::cat_14:0:0 */;
%368 = concatenate(%367, axis=1) /* span=aten::cat_14:0:0 */;
%369 = nn.conv2d(%368, %aten::_convolution_54.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_54:0:0 */;
%370 = nn.bias_add(%369, %aten::_convolution_54.bias) /* span=aten::_convolution_54:0:0 */;
%371 = sigmoid(%370) /* span=aten::silu__50:0:0 */;
%372 = multiply(%370, %371) /* span=aten::silu__50:0:0 */;
%373 = split(%372, indices_or_sections=[meta[runtime.BoxInt][10]], axis=1) /* span=aten::split_with_sizes_9:0:0 */;
%374 = %373.1 /* span=aten::split_with_sizes_9:0:0 */;
%375 = nn.conv2d(%374, %aten::_convolution_55.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_55:0:0 */;
%376 = nn.bias_add(%375, %aten::_convolution_55.bias) /* span=aten::_convolution_55:0:0 */;
%377 = sigmoid(%376) /* span=aten::silu__51:0:0 */;
%378 = multiply(%376, %377) /* span=aten::silu__51:0:0 */;
%379 = nn.conv2d(%378, %aten::_convolution_56.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_56:0:0 */;
%380 = nn.bias_add(%379, %aten::_convolution_56.bias) /* span=aten::_convolution_56:0:0 */;
%381 = sigmoid(%380) /* span=aten::silu__52:0:0 */;
%382 = multiply(%380, %381) /* span=aten::silu__52:0:0 */;
%383 = nn.conv2d(%382, %aten::_convolution_57.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_57:0:0 */;
%384 = nn.bias_add(%383, %aten::_convolution_57.bias) /* span=aten::_convolution_57:0:0 */;
%385 = sigmoid(%384) /* span=aten::silu__53:0:0 */;
%386 = multiply(%384, %385) /* span=aten::silu__53:0:0 */;
%387 = add(%378, %386) /* span=aten::add_12:0:0 */;
%388 = nn.conv2d(%387, %aten::_convolution_58.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_58:0:0 */;
%389 = nn.bias_add(%388, %aten::_convolution_58.bias) /* span=aten::_convolution_58:0:0 */;
%390 = sigmoid(%389) /* span=aten::silu__54:0:0 */;
%391 = multiply(%389, %390) /* span=aten::silu__54:0:0 */;
%392 = nn.conv2d(%391, %aten::_convolution_59.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_59:0:0 */;
%393 = nn.bias_add(%392, %aten::_convolution_59.bias) /* span=aten::_convolution_59:0:0 */;
%394 = sigmoid(%393) /* span=aten::silu__55:0:0 */;
%395 = multiply(%393, %394) /* span=aten::silu__55:0:0 */;
%396 = nn.conv2d(%374, %aten::_convolution_60.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_60:0:0 */;
%397 = nn.bias_add(%396, %aten::_convolution_60.bias) /* span=aten::_convolution_60:0:0 */;
%398 = sigmoid(%397) /* span=aten::silu__56:0:0 */;
%399 = add(%387, %395) /* span=aten::add_13:0:0 */;
%400 = multiply(%397, %398) /* span=aten::silu__56:0:0 */;
%401 = (%399, %400) /* span=aten::cat_15:0:0 */;
%402 = concatenate(%401, axis=1) /* span=aten::cat_15:0:0 */;
%403 = nn.conv2d(%402, %aten::_convolution_61.weight, padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1]) /* span=aten::_convolution_61:0:0 */;
%404 = nn.bias_add(%403, %aten::_convolution_61.bias) /* span=aten::_convolution_61:0:0 */;
%405 = sigmoid(%404) /* span=aten::silu__57:0:0 */;
%406 = %373.0 /* span=aten::split_with_sizes_9:0:0 */;
%407 = multiply(%404, %405) /* span=aten::silu__57:0:0 */;
%408 = (%406, %374, %407) /* span=aten::cat_16:0:0 */;
%409 = concatenate(%408, axis=1) /* span=aten::cat_16:0:0 */;
%410 = nn.conv2d(%409, %aten::_convolution_62.weight, padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1]) /* span=aten::_convolution_62:0:0 */;
%411 = nn.bias_add(%410, %aten::_convolution_62.bias) /* span=aten::_convolution_62:0:0 */;
%412 = sigmoid(%411) /* span=aten::silu__58:0:0 */;
%413 = multiply(%411, %412) /* span=aten::silu__58:0:0 */;
%414 = nn.conv2d(%413, %aten::_convolution_79.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_79:0:0 */;
%415 = nn.bias_add(%414, %aten::_convolution_79.bias) /* span=aten::_convolution_79:0:0 */;
%416 = sigmoid(%415) /* span=aten::silu__71:0:0 */;
%417 = multiply(%415, %416) /* span=aten::silu__71:0:0 */;
%418 = nn.conv2d(%417, %aten::_convolution_80.weight, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3]) /* span=aten::_convolution_80:0:0 */;
%419 = nn.bias_add(%418, %aten::_convolution_80.bias) /* span=aten::_convolution_80:0:0 */;
%420 = sigmoid(%419) /* span=aten::silu__72:0:0 */;
%421 = multiply(%419, %420) /* span=aten::silu__72:0:0 */;
%422 = nn.conv2d(%421, %aten::_convolution_81.weight, padding=[0, 0, 0, 0], channels=64, kernel_size=[1, 1]) /* span=aten::_convolution_81:0:0 */;
%423 = reshape(%aten::_convolution_82.weight, newshape=[256, 1, 3, 3]) /* span=aten::_convolution_82:0:0 */;
%424 = nn.conv2d(%413, %423, padding=[1, 1, 1, 1], groups=256, channels=256, kernel_size=[3, 3]) /* span=aten::_convolution_82:0:0 */;
%425 = nn.bias_add(%424, %aten::_convolution_82.bias) /* span=aten::_convolution_82:0:0 */;
%426 = sigmoid(%425) /* span=aten::silu__73:0:0 */;
%427 = multiply(%425, %426) /* span=aten::silu__73:0:0 */;
%428 = nn.conv2d(%427, %aten::_convolution_83.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_83:0:0 */;
%429 = nn.bias_add(%428, %aten::_convolution_83.bias) /* span=aten::_convolution_83:0:0 */;
%430 = sigmoid(%429) /* span=aten::silu__74:0:0 */;
%431 = multiply(%429, %430) /* span=aten::silu__74:0:0 */;
%432 = reshape(%aten::_convolution_84.weight, newshape=[80, 1, 3, 3]) /* span=aten::_convolution_84:0:0 */;
%433 = nn.conv2d(%431, %432, padding=[1, 1, 1, 1], groups=80, channels=80, kernel_size=[3, 3]) /* span=aten::_convolution_84:0:0 */;
%434 = nn.bias_add(%433, %aten::_convolution_84.bias) /* span=aten::_convolution_84:0:0 */;
%435 = sigmoid(%434) /* span=aten::silu__75:0:0 */;
%436 = multiply(%434, %435) /* span=aten::silu__75:0:0 */;
%437 = nn.conv2d(%436, %aten::_convolution_85.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_85:0:0 */;
%438 = nn.bias_add(%437, %aten::_convolution_85.bias) /* span=aten::_convolution_85:0:0 */;
%439 = sigmoid(%438) /* span=aten::silu__76:0:0 */;
%440 = multiply(%438, %439) /* span=aten::silu__76:0:0 */;
%441 = nn.conv2d(%440, %aten::_convolution_86.weight, padding=[0, 0, 0, 0], channels=80, kernel_size=[1, 1]) /* span=aten::_convolution_86:0:0 */;
%442 = nn.bias_add(%422, %aten::_convolution_81.bias) /* span=aten::_convolution_81:0:0 */;
%443 = nn.bias_add(%441, %aten::_convolution_86.bias) /* span=aten::_convolution_86:0:0 */;
%444 = (%442, %443) /* span=aten::cat_19:0:0 */;
%445 = concatenate(%444, axis=1) /* span=aten::cat_19:0:0 */;
%446 = reshape(%302, newshape=[1, 144, -1]) /* span=aten::view_2:0:0 */;
%447 = reshape(%362, newshape=[1, 144, -1]) /* span=aten::view_3:0:0 */;
%448 = reshape(%445, newshape=[1, 144, -1]) /* span=aten::view_4:0:0 */;
%449 = (%446, %447, %448) /* span=aten::cat_20:0:0 */;
%450 = concatenate(%449, axis=2) /* span=aten::cat_20:0:0 */;
%451 = split(%450, indices_or_sections=[meta[runtime.BoxInt][11]], axis=1) /* span=aten::split_with_sizes_10:0:0 */;
%452 = %451.0 /* span=aten::split_with_sizes_10:0:0 */;
%453 = reshape(%452, newshape=[1, 4, 16, 8400]) /* span=aten::view_5:0:0 */;
%454 = transpose(%453, axes=[0, 2, 1, 3]) /* span=aten::transpose_2:0:0 */;
%455 = nn.softmax(%454, axis=1) /* span=aten::softmax_1:0:0 */;
%456 = nn.conv2d(%455, %aten::_convolution_87.weight, padding=[0, 0, 0, 0], channels=1, kernel_size=[1, 1]) /* span=aten::_convolution_87:0:0 */;
%457 = reshape(%456, newshape=[1, 4, 8400]) /* span=aten::view_6:0:0 */;
%458 = split(%457, indices_or_sections=[meta[runtime.BoxInt][12]], axis=1) /* span=aten::chunk_0:0:0 */;
%459 = %458.0 /* span=aten::chunk_0:0:0 */;
%460 = expand_dims(meta[relay.Constant][0] /* span=aten::unsqueeze_0:0:0 */, axis=0) /* span=aten::unsqueeze_0:0:0 */;
%461 = multiply(1f /* span=aten::sub_0:0:0 */, %459) /* span=aten::sub_0:0:0 */;
%462 = %458.1 /* span=aten::chunk_0:0:0 */;
%463 = subtract(%460, %461) /* span=aten::sub_0:0:0 */;
%464 = add(%460, %462) /* span=aten::add_14:0:0 */;
%465 = add(%463, %464) /* span=aten::add_15:0:0 */;
%466 = multiply(1f /* span=aten::sub_1:0:0 */, %463) /* span=aten::sub_1:0:0 */;
%467 = divide(%465, 2f /* span=aten::div_0:0:0 */) /* span=aten::div_0:0:0 */;
%468 = subtract(%464, %466) /* span=aten::sub_1:0:0 */;
%469 = (%467, %468) /* span=aten::cat_21:0:0 */;
%470 = concatenate(%469, axis=1) /* span=aten::cat_21:0:0 */;
%471 = %451.1 /* span=aten::split_with_sizes_10:0:0 */;
%472 = multiply(%470, meta[relay.Constant][1] /* span=aten::mul_2:0:0 */) /* span=aten::mul_2:0:0 */;
%473 = sigmoid(%471) /* span=aten::sigmoid_0:0:0 */;
%474 = (%472, %473) /* span=aten::cat_22:0:0 */;
concatenate(%474, axis=1) /* span=aten::cat_22:0:0 */
}
# 构建模型:
with tvm.transform.PassContext(opt_level=3, disabled_pass={"AlterOpLayout"}):
lib = relay.build(mod, target="llvm", params=params)
func = lib[lib.libmod_name]
module = tvm.contrib.graph_executor.GraphModule(func(tvm.cpu(0)))
# 运行时推理:
module.run(**{input_name: xs})
num_outputs = module.get_num_outputs()
float_outputs = [module.get_output(k).numpy() for k in range(num_outputs)]
results = postprocess(
[torch.from_numpy(o) for o in float_outputs],
xs, [origin_image], yolo.model.names,
input_path, #conf_thres=0.25, iou_thres=0.45,
)
im = Image.fromarray(results[0].plot())
im.size
(1920, 1200)
im.resize((480, 300))