{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":84969,"databundleVersionId":10033515,"sourceType":"competition"},{"sourceId":10476214,"sourceType":"datasetVersion","datasetId":6486959},{"sourceId":10478741,"sourceType":"datasetVersion","datasetId":6488425,"isSourceIdPinned":true},{"sourceId":10540638,"sourceType":"datasetVersion","datasetId":6497627},{"sourceId":10561340,"sourceType":"datasetVersion","datasetId":6347637},{"sourceId":214223778,"sourceType":"kernelVersion"}],"dockerImageVersionId":30823,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import sys\nsys.path.append(\"/kaggle/input/czii-src/kaggle-czii-main\")","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-02-01T01:47:51.709045Z","iopub.execute_input":"2025-02-01T01:47:51.709291Z","iopub.status.idle":"2025-02-01T01:47:51.713265Z","shell.execute_reply.started":"2025-02-01T01:47:51.709269Z","shell.execute_reply":"2025-02-01T01:47:51.712386Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"! pip install -q zarr segmentation_models_pytorch omegaconf --no-index --find-links=/kaggle/input/czii-libs\n! pip install -q -U timm --no-index --find-links=/kaggle/input/czii-libs","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T01:48:08.386309Z","iopub.execute_input":"2025-02-01T01:48:08.386596Z","iopub.status.idle":"2025-02-01T01:48:23.700776Z","shell.execute_reply.started":"2025-02-01T01:48:08.386575Z","shell.execute_reply":"2025-02-01T01:48:23.699915Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"! pip install -q /kaggle/input/tensorrt-10-1-0/nvidia_cuda_runtime_cu12-12.2.140-py3-none-manylinux1_x86_64.whl\n! pip install -q /kaggle/input/tensorrt-10-1-0/tensorrt_cu12_bindings-10.1.0-cp310-none-manylinux_2_17_x86_64.whl\n! pip install -q /kaggle/input/tensorrt-10-1-0/tensorrt_cu12_libs-10.1.0-py2.py3-none-manylinux_2_17_x86_64.whl\n! pip install -q /kaggle/input/tensorrt-10-1-0/tensorrt_cu12-10.1.0-py2.py3-none-any.whl\n! pip install -q /kaggle/input/tensorrt-10-1-0/tensorrt-10.1.0-py2.py3-none-any.whl\n! pip -q install /kaggle/input/tensorrt-10-1-0/polygraphy-0.49.14-py2.py3-none-any.whl","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T01:49:04.425130Z","iopub.execute_input":"2025-02-01T01:49:04.425455Z","iopub.status.idle":"2025-02-01T01:49:27.491381Z","shell.execute_reply.started":"2025-02-01T01:49:04.425425Z","shell.execute_reply":"2025-02-01T01:49:27.490263Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"! cp -r /kaggle/input/tensorrt-10-1-0/torch2trt-master /kaggle/working/torch2trt\n! pip install -q /kaggle/working/torch2trt","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T01:49:27.493063Z","iopub.execute_input":"2025-02-01T01:49:27.493438Z","iopub.status.idle":"2025-02-01T01:49:38.339108Z","shell.execute_reply.started":"2025-02-01T01:49:27.493397Z","shell.execute_reply":"2025-02-01T01:49:38.337987Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from pathlib import Path\nimport numpy as np\nimport pandas as pd\nfrom tqdm.notebook import tqdm\nimport zarr\nimport cv2\nimport torch\nimport torch.nn as nn\nfrom torch.nn import functional as F\nfrom torch.utils.data import Dataset, DataLoader\nimport segmentation_models_pytorch as smp\nfrom omegaconf import OmegaConf\nfrom scipy.ndimage import maximum_filter\n\nfrom src.model import get_model_from_cfg, EnsembleModel\nfrom src.pl_module import get_patch_weight\nfrom src.metric import experiments, score","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T01:49:38.340145Z","iopub.execute_input":"2025-02-01T01:49:38.340409Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from torch2trt import torch2trt","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"cfg = OmegaConf.load(\"/kaggle/input/czii-src/kaggle-czii-main/src/config.yaml\")\ncfg.model.arch = \"timm3d3\"\ncfg.model.in_channels = 5\ncfg.model.class_num = 6","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T01:50:55.135726Z","iopub.execute_input":"2025-02-01T01:50:55.136058Z","iopub.status.idle":"2025-02-01T01:50:55.166537Z","shell.execute_reply.started":"2025-02-01T01:50:55.136034Z","shell.execute_reply":"2025-02-01T01:50:55.165905Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for resume_path in sorted(Path(\"/kaggle/input/czii-models8\").rglob(\"*.ckpt\")):\n    cfg.model.backbone = \"convnext_nano\"\n    cfg.model.resume_path = resume_path\n    model = EnsembleModel(cfg).eval().cuda()\n    dummy_input = torch.randn(16, 1, 16, 128, 128).to(\"cuda\")\n    filename = resume_path.parent.name + \".onnx\"\n    \n    torch.onnx.export(\n        model, \n        dummy_input, \n        filename,  # 出力ファイル名\n        export_params=True,  # モデルの重みを含む\n        opset_version=17, #13,  # TensorRTと互換性のあるONNX opsetバージョン\n        do_constant_folding=True,  # 定数畳み込みを有効にする\n        input_names=[\"images\"],  # 入力名\n        output_names=[\"output\"],  # 出力名\n        dynamic_axes={\"images\": {0: \"batch_size\"}, \"output\": {0: \"batch_size\"}}  # 動的バッチサイズ対応\n    )","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T02:00:01.897738Z","iopub.execute_input":"2025-02-01T02:00:01.898054Z","iopub.status.idle":"2025-02-01T02:00:51.911398Z","shell.execute_reply.started":"2025-02-01T02:00:01.898030Z","shell.execute_reply":"2025-02-01T02:00:51.910417Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for onnx_path in Path(\".\").glob(\"*.onnx\"):\n    input_path = onnx_path.name\n    output_path = onnx_path.stem + \".engine\"\n    ! polygraphy convert {input_path} --output {output_path} --fp16 --convert-to trt \\\n        --trt-min-shapes \"images:[1,1,16,128,128]\" \\\n        --trt-opt-shapes \"images:[16,1,16,128,128]\" \\\n        --trt-max-shapes \"images:[16,1,16,128,128]\"","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-01T02:00:55.019567Z","iopub.execute_input":"2025-02-01T02:00:55.019876Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"! rm -rf torch2trt\n! rm *.onnx","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-01-28T16:12:51.431498Z","iopub.execute_input":"2025-01-28T16:12:51.431831Z","iopub.status.idle":"2025-01-28T16:12:51.437280Z","shell.execute_reply.started":"2025-01-28T16:12:51.431809Z","shell.execute_reply":"2025-01-28T16:12:51.436392Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}