{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.14","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":10126976,"sourceType":"datasetVersion","datasetId":6240276},{"sourceId":211097053,"sourceType":"kernelVersion"},{"sourceId":211531582,"sourceType":"kernelVersion"},{"sourceId":139474,"sourceType":"modelInstanceVersion","modelInstanceId":118113,"modelId":141350}],"dockerImageVersionId":30805,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true},"papermill":{"default_parameters":{},"duration":6568.674569,"end_time":"2024-12-04T19:34:39.227672","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2024-12-04T17:45:10.553103","version":"2.6.0"}},"nbformat_minor":4,"nbformat":4,"cells":[{"id":"f8dfbe78-deab-439c-8967-787f2b39176d","cell_type":"markdown","source":"# CZII YOLO11 Training Baseline\n We created a training set adapted to YOLO from [the dataset baseline](https://www.kaggle.com/code/itsuki9180/czii-making-datasets-for-yolo).\n\nIn this notebook, we actually use it to train YOLO so that it can infer the xy coordinates of particles through 2D object detection.","metadata":{}},{"id":"4452fd33-0c1c-49c4-9bbd-4ed2c0d550bc","cell_type":"markdown","source":"# Install and Import modules","metadata":{}},{"id":"eeb73f50-fba8-44b7-b53a-60ca61fd9481","cell_type":"code","source":"!tar xfvz /kaggle/input/ultralytics-for-offline-install/archive.tar.gz\n!pip install --no-index --find-links=./packages ultralytics\n!rm -rf ./packages","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-07T09:06:36.587718Z","iopub.execute_input":"2024-12-07T09:06:36.587986Z","iopub.status.idle":"2024-12-07T09:07:39.486517Z","shell.execute_reply.started":"2024-12-07T09:06:36.587959Z","shell.execute_reply":"2024-12-07T09:07:39.485317Z"}},"outputs":[],"execution_count":null},{"id":"1deb0cc1","cell_type":"code","source":"from tqdm import tqdm\nimport glob, os\nfrom ultralytics import YOLO","metadata":{"papermill":{"duration":0.026344,"end_time":"2024-12-04T17:45:50.629952","exception":false,"start_time":"2024-12-04T17:45:50.603608","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2024-12-07T09:07:39.488524Z","iopub.execute_input":"2024-12-07T09:07:39.488842Z","iopub.status.idle":"2024-12-07T09:07:43.913828Z","shell.execute_reply.started":"2024-12-07T09:07:39.488809Z","shell.execute_reply":"2024-12-07T09:07:43.912880Z"}},"outputs":[],"execution_count":null},{"id":"4b2a7ba9-a861-4eee-92eb-fa4481d39183","cell_type":"markdown","source":"# Prepare to train and instance YOLOmodel","metadata":{}},{"id":"6e8841f5-0e6c-4c4b-9d91-5b4abad22f49","cell_type":"code","source":"# Load a pretrained model\nmodel = YOLO(\"/kaggle/input/yolo11/pytorch/default/1/yolo11l.pt\")  # load a pretrained model (recommended for training)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-12-07T09:07:43.914963Z","iopub.execute_input":"2024-12-07T09:07:43.915713Z","iopub.status.idle":"2024-12-07T09:07:44.992853Z","shell.execute_reply.started":"2024-12-07T09:07:43.915683Z","shell.execute_reply":"2024-12-07T09:07:44.992168Z"}},"outputs":[],"execution_count":null},{"id":"2aa609e2-cb9d-4538-8f9a-16d118a479d1","cell_type":"markdown","source":"# Let's train YOLO!","metadata":{}},{"id":"dd951fa8","cell_type":"code","source":"# Train the model\n_ = model.train(\n    data=\"/kaggle/input/czii-yolo-datasets/czii_conf.yaml\",\n    epochs=100,\n    warmup_epochs=10,\n    optimizer='AdamW',\n    cos_lr=True,\n    lr0=3e-4,\n    lrf=0.03,\n    imgsz=640,\n    device=\"0,1\",\n    weight_decay=0.005,\n    batch=32,\n    scale=0,\n    flipud=0.5,\n    fliplr=0.5,\n    degrees=45,\n    shear=5,\n    mixup=0.2,\n    copy_paste=0.25,\n    seed=8620, # (｡•◡•｡)\n)","metadata":{"papermill":{"duration":6449.128203,"end_time":"2024-12-04T19:33:19.865363","exception":false,"start_time":"2024-12-04T17:45:50.737160","status":"completed"},"tags":[],"trusted":true,"execution":{"iopub.status.busy":"2024-12-07T09:07:44.994362Z","iopub.execute_input":"2024-12-07T09:07:44.994655Z"}},"outputs":[],"execution_count":null},{"id":"8cba4e23","cell_type":"code","source":"model = YOLO(\"/kaggle/working/runs/detect/train/weights/best.pt\")\nmetrics = model.val(data=\"/kaggle/input/czii-yolo-datasets/czii_conf.yaml\", imgsz=640, batch=16, conf=0.25, iou=0.6, device=\"0\", save_json=True)  # no arguments needed, dataset and settings remembered\nprint(metrics.box.map)  # map50-95\nprint(metrics.box.map50)  # map50\nprint(metrics.box.map75)  # map75\nprint(metrics.box.maps)","metadata":{"papermill":{"duration":22.977007,"end_time":"2024-12-04T19:34:29.346505","exception":false,"start_time":"2024-12-04T19:34:06.369498","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"22a85010-b1af-4dcd-b013-35f44f1c0375","cell_type":"markdown","source":"# Prediction example","metadata":{}},{"id":"4aa95fe7","cell_type":"code","source":"results = model(\"/kaggle/input/czii-yolo-datasets/datasets/czii_det2d/images/val/TS_5_4_920.png\")\nresults[0].show()","metadata":{"papermill":{"duration":0.759012,"end_time":"2024-12-04T19:34:30.516699","exception":false,"start_time":"2024-12-04T19:34:29.757687","status":"completed"},"tags":[],"trusted":true},"outputs":[],"execution_count":null},{"id":"de19c9e4-2504-47c8-8e46-f7e96b6a92c5","cell_type":"markdown","source":"# Continue to [Submission Baseline...](https://www.kaggle.com/code/itsuki9180/czii-yolo11-submission-baseline)","metadata":{}}]}