{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.11","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"gpu","dataSources":[{"sourceId":10338,"databundleVersionId":862042,"sourceType":"competition"}],"dockerImageVersionId":31040,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# # This Python 3 environment comes with many helpful analytics libraries installed\n# # It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# # For example, here's several helpful packages to load\n\n# import numpy as np # linear algebra\n# import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# # Input data files are available in the read-only \"../input/\" directory\n# # For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\n# import os\n# for dirname, _, filenames in os.walk('/kaggle/input'):\n#     for filename in filenames:\n#         print(os.path.join(dirname, filename))\n\n# # You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# # You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-07-03T09:36:32.075309Z","iopub.execute_input":"2025-07-03T09:36:32.075683Z","iopub.status.idle":"2025-07-03T09:36:32.080877Z","shell.execute_reply.started":"2025-07-03T09:36:32.075657Z","shell.execute_reply":"2025-07-03T09:36:32.079728Z"}},"outputs":[],"execution_count":42},{"cell_type":"code","source":"pip install pydicom pillow numpy","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T12:14:45.938907Z","iopub.execute_input":"2025-07-03T12:14:45.939689Z","iopub.status.idle":"2025-07-03T12:14:49.883308Z","shell.execute_reply.started":"2025-07-03T12:14:45.939655Z","shell.execute_reply":"2025-07-03T12:14:49.882315Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: pydicom in /usr/local/lib/python3.11/dist-packages (3.0.1)\nRequirement already satisfied: pillow in /usr/local/lib/python3.11/dist-packages (11.1.0)\nRequirement already satisfied: numpy in /usr/local/lib/python3.11/dist-packages (1.26.4)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.11/dist-packages (from numpy) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.11/dist-packages (from numpy) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.11/dist-packages (from numpy) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.11/dist-packages (from numpy) (2025.1.0)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.11/dist-packages (from numpy) (2022.1.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.11/dist-packages (from numpy) (2.4.1)\nRequirement already satisfied: intel-openmp<2026,>=2024 in /usr/local/lib/python3.11/dist-packages (from mkl->numpy) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.11/dist-packages (from mkl->numpy) (2022.1.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.11/dist-packages (from tbb==2022.*->mkl->numpy) (1.3.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.11/dist-packages (from mkl_umath->numpy) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.11/dist-packages (from intel-openmp<2026,>=2024->mkl->numpy) (2024.2.0)\nNote: you may need to restart the kernel to use updated packages.\n","output_type":"stream"}],"execution_count":2},{"cell_type":"code","source":"!pip install ultralytics","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T12:14:58.624295Z","iopub.execute_input":"2025-07-03T12:14:58.624944Z","iopub.status.idle":"2025-07-03T12:16:19.04754Z","shell.execute_reply.started":"2025-07-03T12:14:58.624912Z","shell.execute_reply":"2025-07-03T12:16:19.046875Z"}},"outputs":[{"name":"stdout","text":"Collecting ultralytics\n  Downloading ultralytics-8.3.161-py3-none-any.whl.metadata (37 kB)\nRequirement already satisfied: numpy>=1.23.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (1.26.4)\nRequirement already satisfied: matplotlib>=3.3.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (3.7.2)\nRequirement already satisfied: opencv-python>=4.6.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (4.11.0.86)\nRequirement already satisfied: pillow>=7.1.2 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (11.1.0)\nRequirement already satisfied: pyyaml>=5.3.1 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (6.0.2)\nRequirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (2.32.3)\nRequirement already satisfied: scipy>=1.4.1 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (1.15.2)\nRequirement already satisfied: torch>=1.8.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (2.6.0+cu124)\nRequirement already satisfied: torchvision>=0.9.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (0.21.0+cu124)\nRequirement already satisfied: tqdm>=4.64.0 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (4.67.1)\nRequirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from ultralytics) (7.0.0)\nRequirement already satisfied: py-cpuinfo in /usr/local/lib/python3.11/dist-packages (from ultralytics) (9.0.0)\nRequirement already satisfied: pandas>=1.1.4 in /usr/local/lib/python3.11/dist-packages (from ultralytics) (2.2.3)\nCollecting ultralytics-thop>=2.0.0 (from ultralytics)\n  Downloading ultralytics_thop-2.0.14-py3-none-any.whl.metadata (9.4 kB)\nRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (0.12.1)\nRequirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (4.57.0)\nRequirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (1.4.8)\nRequirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (25.0)\nRequirement already satisfied: pyparsing<3.1,>=2.3.1 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (3.0.9)\nRequirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.11/dist-packages (from matplotlib>=3.3.0->ultralytics) (2.9.0.post0)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.11/dist-packages (from numpy>=1.23.0->ultralytics) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.11/dist-packages (from numpy>=1.23.0->ultralytics) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.11/dist-packages (from numpy>=1.23.0->ultralytics) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.11/dist-packages (from numpy>=1.23.0->ultralytics) (2025.1.0)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.11/dist-packages (from numpy>=1.23.0->ultralytics) (2022.1.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.11/dist-packages (from numpy>=1.23.0->ultralytics) (2.4.1)\nRequirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.1.4->ultralytics) (2025.2)\nRequirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas>=1.1.4->ultralytics) (2025.2)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests>=2.23.0->ultralytics) (3.4.2)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.11/dist-packages (from requests>=2.23.0->ultralytics) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests>=2.23.0->ultralytics) (2.4.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.11/dist-packages (from requests>=2.23.0->ultralytics) (2025.4.26)\nRequirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (3.18.0)\nRequirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (4.13.2)\nRequirement already satisfied: networkx in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (3.4.2)\nRequirement already satisfied: jinja2 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (3.1.6)\nRequirement already satisfied: fsspec in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (2025.3.2)\nRequirement already satisfied: nvidia-cuda-nvrtc-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (12.4.127)\nRequirement already satisfied: nvidia-cuda-runtime-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (12.4.127)\nRequirement already satisfied: nvidia-cuda-cupti-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (12.4.127)\nCollecting nvidia-cudnn-cu12==9.1.0.70 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\nCollecting nvidia-cublas-cu12==12.4.5.8 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\nCollecting nvidia-cufft-cu12==11.2.1.3 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\nCollecting nvidia-curand-cu12==10.3.5.147 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\nCollecting nvidia-cusolver-cu12==11.6.1.9 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\nCollecting nvidia-cusparse-cu12==12.3.1.170 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl.metadata (1.6 kB)\nRequirement already satisfied: nvidia-cusparselt-cu12==0.6.2 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (0.6.2)\nRequirement already satisfied: nvidia-nccl-cu12==2.21.5 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (2.21.5)\nRequirement already satisfied: nvidia-nvtx-cu12==12.4.127 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (12.4.127)\nCollecting nvidia-nvjitlink-cu12==12.4.127 (from torch>=1.8.0->ultralytics)\n  Downloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl.metadata (1.5 kB)\nRequirement already satisfied: triton==3.2.0 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (3.2.0)\nRequirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.11/dist-packages (from torch>=1.8.0->ultralytics) (1.13.1)\nRequirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from sympy==1.13.1->torch>=1.8.0->ultralytics) (1.3.0)\nRequirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.7->matplotlib>=3.3.0->ultralytics) (1.17.0)\nRequirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/dist-packages (from jinja2->torch>=1.8.0->ultralytics) (3.0.2)\nRequirement already satisfied: intel-openmp<2026,>=2024 in /usr/local/lib/python3.11/dist-packages (from mkl->numpy>=1.23.0->ultralytics) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.11/dist-packages (from mkl->numpy>=1.23.0->ultralytics) (2022.1.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.11/dist-packages (from tbb==2022.*->mkl->numpy>=1.23.0->ultralytics) (1.3.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.11/dist-packages (from mkl_umath->numpy>=1.23.0->ultralytics) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.11/dist-packages (from intel-openmp<2026,>=2024->mkl->numpy>=1.23.0->ultralytics) (2024.2.0)\nDownloading ultralytics-8.3.161-py3-none-any.whl (1.0 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m31.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n\u001b[?25hDownloading nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl (363.4 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m363.4/363.4 MB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m0:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl (664.8 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m664.8/664.8 MB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m0:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl (211.5 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m211.5/211.5 MB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m0:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl (56.3 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.3/56.3 MB\u001b[0m \u001b[31m30.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl (127.9 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.9/127.9 MB\u001b[0m \u001b[31m13.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl (207.5 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m207.5/207.5 MB\u001b[0m \u001b[31m2.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m0:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl (21.1 MB)\n\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m83.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m:00:01\u001b[0m00:01\u001b[0m\n\u001b[?25hDownloading ultralytics_thop-2.0.14-py3-none-any.whl (26 kB)\nInstalling collected packages: nvidia-nvjitlink-cu12, nvidia-curand-cu12, nvidia-cufft-cu12, nvidia-cublas-cu12, nvidia-cusparse-cu12, nvidia-cudnn-cu12, nvidia-cusolver-cu12, ultralytics-thop, ultralytics\n  Attempting uninstall: nvidia-nvjitlink-cu12\n    Found existing installation: nvidia-nvjitlink-cu12 12.9.41\n    Uninstalling nvidia-nvjitlink-cu12-12.9.41:\n      Successfully uninstalled nvidia-nvjitlink-cu12-12.9.41\n  Attempting uninstall: nvidia-curand-cu12\n    Found existing installation: nvidia-curand-cu12 10.3.10.19\n    Uninstalling nvidia-curand-cu12-10.3.10.19:\n      Successfully uninstalled nvidia-curand-cu12-10.3.10.19\n  Attempting uninstall: nvidia-cufft-cu12\n    Found existing installation: nvidia-cufft-cu12 11.4.0.6\n    Uninstalling nvidia-cufft-cu12-11.4.0.6:\n      Successfully uninstalled nvidia-cufft-cu12-11.4.0.6\n  Attempting uninstall: nvidia-cublas-cu12\n    Found existing installation: nvidia-cublas-cu12 12.9.0.13\n    Uninstalling nvidia-cublas-cu12-12.9.0.13:\n      Successfully uninstalled nvidia-cublas-cu12-12.9.0.13\n  Attempting uninstall: nvidia-cusparse-cu12\n    Found existing installation: nvidia-cusparse-cu12 12.5.9.5\n    Uninstalling nvidia-cusparse-cu12-12.5.9.5:\n      Successfully uninstalled nvidia-cusparse-cu12-12.5.9.5\n  Attempting uninstall: nvidia-cudnn-cu12\n    Found existing installation: nvidia-cudnn-cu12 9.3.0.75\n    Uninstalling nvidia-cudnn-cu12-9.3.0.75:\n      Successfully uninstalled nvidia-cudnn-cu12-9.3.0.75\n  Attempting uninstall: nvidia-cusolver-cu12\n    Found existing installation: nvidia-cusolver-cu12 11.7.4.40\n    Uninstalling nvidia-cusolver-cu12-11.7.4.40:\n      Successfully uninstalled nvidia-cusolver-cu12-11.7.4.40\nSuccessfully installed nvidia-cublas-cu12-12.4.5.8 nvidia-cudnn-cu12-9.1.0.70 nvidia-cufft-cu12-11.2.1.3 nvidia-curand-cu12-10.3.5.147 nvidia-cusolver-cu12-11.6.1.9 nvidia-cusparse-cu12-12.3.1.170 nvidia-nvjitlink-cu12-12.4.127 ultralytics-8.3.161 ultralytics-thop-2.0.14\n","output_type":"stream"}],"execution_count":4},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport os\nimport cv2\nfrom PIL import Image\nimport shutil\nimport tqdm\nimport yaml","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T12:16:19.048799Z","iopub.execute_input":"2025-07-03T12:16:19.049056Z","iopub.status.idle":"2025-07-03T12:16:19.633323Z","shell.execute_reply.started":"2025-07-03T12:16:19.049032Z","shell.execute_reply":"2025-07-03T12:16:19.63282Z"}},"outputs":[],"execution_count":5},{"cell_type":"code","source":"df=pd.read_csv('/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_labels.csv')\ndf.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T12:16:19.633979Z","iopub.execute_input":"2025-07-03T12:16:19.634431Z","iopub.status.idle":"2025-07-03T12:16:19.727104Z","shell.execute_reply.started":"2025-07-03T12:16:19.634411Z","shell.execute_reply":"2025-07-03T12:16:19.726473Z"}},"outputs":[{"name":"stderr","text":"/usr/local/lib/python3.11/dist-packages/pandas/io/formats/format.py:1458: RuntimeWarning: invalid value encountered in greater\n  has_large_values = (abs_vals > 1e6).any()\n/usr/local/lib/python3.11/dist-packages/pandas/io/formats/format.py:1459: RuntimeWarning: invalid value encountered in less\n  has_small_values = ((abs_vals < 10 ** (-self.digits)) & (abs_vals > 0)).any()\n/usr/local/lib/python3.11/dist-packages/pandas/io/formats/format.py:1459: RuntimeWarning: invalid value encountered in greater\n  has_small_values = ((abs_vals < 10 ** (-self.digits)) & (abs_vals > 0)).any()\n","output_type":"stream"},{"execution_count":6,"output_type":"execute_result","data":{"text/plain":"                              patientId      x      y  width  height  Target\n0  0004cfab-14fd-4e49-80ba-63a80b6bddd6    NaN    NaN    NaN     NaN       0\n1  00313ee0-9eaa-42f4-b0ab-c148ed3241cd    NaN    NaN    NaN     NaN       0\n2  00322d4d-1c29-4943-afc9-b6754be640eb    NaN    NaN    NaN     NaN       0\n3  003d8fa0-6bf1-40ed-b54c-ac657f8495c5    NaN    NaN    NaN     NaN       0\n4  00436515-870c-4b36-a041-de91049b9ab4  264.0  152.0  213.0   379.0       1","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>patientId</th>\n      <th>x</th>\n      <th>y</th>\n      <th>width</th>\n      <th>height</th>\n      <th>Target</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>0004cfab-14fd-4e49-80ba-63a80b6bddd6</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>00313ee0-9eaa-42f4-b0ab-c148ed3241cd</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>00322d4d-1c29-4943-afc9-b6754be640eb</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>003d8fa0-6bf1-40ed-b54c-ac657f8495c5</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>NaN</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>00436515-870c-4b36-a041-de91049b9ab4</td>\n      <td>264.0</td>\n      <td>152.0</td>\n      <td>213.0</td>\n      <td>379.0</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}],"execution_count":6},{"cell_type":"code","source":"df['Target'].value_counts()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:17:56.429254Z","iopub.execute_input":"2025-07-03T10:17:56.429492Z","iopub.status.idle":"2025-07-03T10:17:56.439267Z","shell.execute_reply.started":"2025-07-03T10:17:56.429475Z","shell.execute_reply":"2025-07-03T10:17:56.438716Z"}},"outputs":[{"execution_count":5,"output_type":"execute_result","data":{"text/plain":"Target\n0    20672\n1     9555\nName: count, dtype: int64"},"metadata":{}}],"execution_count":5},{"cell_type":"code","source":"import os\nimport shutil\nimport pydicom\nimport numpy as np\nfrom PIL import Image\n\ndef export_image(df, train=True):\n    img_size = 1024\n    img_dir = '/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_images'\n    img_dir_test = '/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_test_images'\n    output_dir_test = '/kaggle/working/train'\n    output_dir = '/kaggle/working/test'\n    \n    # Create output directories\n    os.makedirs(os.path.join(output_dir, 'images'), exist_ok=True)\n    os.makedirs(os.path.join(output_dir, 'labels'), exist_ok=True)\n    os.makedirs(os.path.join(output_dir_test, 'images'), exist_ok=True)\n    os.makedirs(os.path.join(output_dir_test, 'labels'), exist_ok=True)\n    for _, row in df.iterrows():\n        if _%100==0:\n            print(_)\n        if _<14000:\n            continue\n            \n        labels = []\n        target = row[-1]\n        if target == 0:\n            continue\n        \n        id = row[0]\n        # Try train directory first\n        img_path = os.path.join(img_dir, f'{id}.dcm')\n        out_img_dir = os.path.join(output_dir, 'images')\n        out_label_dir = os.path.join(output_dir, 'labels')\n        if not os.path.exists(img_path):\n            # Try test directory\n            img_path = os.path.join(img_dir_test, f'{id}.dcm')\n            out_img_dir = os.path.join(output_dir_test, 'images')\n            out_label_dir = os.path.join(output_dir_test, 'labels')\n            if not os.path.exists(img_path):\n                continue  # Skip if file not found\n        \n        # Read DICOM and convert to PNG\n        ds = pydicom.dcmread(img_path)\n        img = ds.pixel_array\n        # Normalize to 0-255 and convert to uint8\n        img = (img - np.min(img)) / (np.max(img) - np.min(img)) * 255.0\n        img = img.astype(np.uint8)\n        im = Image.fromarray(img)\n        img_out_path = os.path.join(out_img_dir, f'{id}.png')\n        im.save(img_out_path)\n        \n        # Prepare label\n        x = int(row[1]) / img_size\n        y = int(row[2]) / img_size\n        w = int(row[3]) / img_size\n        h = int(row[4]) / img_size\n        xc = x + w / 2\n        yc = y + h / 2\n        labels.append(f\"0 {xc:.6f} {yc:.6f} {w:.6f} {h:.6f}\")\n        \n        # Write label file\n        output_file = os.path.join(out_label_dir, f'{id}.txt')\n        with open(output_file, \"w\") as f:\n            f.write(\"\\n\".join(labels))\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T09:53:20.31711Z","iopub.execute_input":"2025-07-03T09:53:20.317399Z","iopub.status.idle":"2025-07-03T09:53:20.326567Z","shell.execute_reply.started":"2025-07-03T09:53:20.317371Z","shell.execute_reply":"2025-07-03T09:53:20.325753Z"}},"outputs":[],"execution_count":14},{"cell_type":"code","source":"# for i in os.listdir('/kaggle/working/labels'):\n#     path=os.path.join('/kaggle/working/labels',i)\n#     os.remove(path)\n# os.removedirs('/kaggle/working/labels')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T09:53:21.460596Z","iopub.execute_input":"2025-07-03T09:53:21.46124Z","iopub.status.idle":"2025-07-03T09:53:21.464281Z","shell.execute_reply.started":"2025-07-03T09:53:21.46122Z","shell.execute_reply":"2025-07-03T09:53:21.463529Z"}},"outputs":[],"execution_count":15},{"cell_type":"code","source":"export_image(df)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T09:53:24.555352Z","iopub.execute_input":"2025-07-03T09:53:24.555646Z","iopub.status.idle":"2025-07-03T10:03:43.583637Z","shell.execute_reply.started":"2025-07-03T09:53:24.555602Z","shell.execute_reply":"2025-07-03T10:03:43.582596Z"}},"outputs":[{"name":"stdout","text":"0\n100\n200\n300\n400\n500\n600\n700\n800\n900\n1000\n1100\n1200\n1300\n1400\n1500\n1600\n1700\n1800\n1900\n2000\n2100\n2200\n2300\n2400\n2500\n2600\n2700\n2800\n2900\n3000\n3100\n3200\n3300\n3400\n3500\n3600\n3700\n3800\n3900\n4000\n4100\n4200\n4300\n4400\n4500\n4600\n4700\n4800\n4900\n5000\n5100\n5200\n5300\n5400\n5500\n5600\n5700\n5800\n5900\n6000\n6100\n6200\n6300\n6400\n6500\n6600\n6700\n6800\n6900\n7000\n7100\n7200\n7300\n7400\n7500\n7600\n7700\n7800\n7900\n8000\n8100\n8200\n8300\n8400\n8500\n8600\n8700\n8800\n8900\n9000\n9100\n9200\n9300\n9400\n9500\n9600\n9700\n9800\n9900\n10000\n10100\n10200\n10300\n10400\n10500\n10600\n10700\n10800\n10900\n11000\n11100\n11200\n11300\n11400\n11500\n11600\n11700\n11800\n11900\n12000\n12100\n12200\n12300\n12400\n12500\n12600\n12700\n12800\n12900\n13000\n13100\n13200\n13300\n13400\n13500\n13600\n13700\n13800\n13900\n14000\n","output_type":"stream"},{"name":"stderr","text":"/tmp/ipykernel_35/2912564369.py:26: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n  target = row[-1]\n/tmp/ipykernel_35/2912564369.py:30: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n  id = row[0]\n/tmp/ipykernel_35/2912564369.py:54: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n  x = int(row[1]) / img_size\n/tmp/ipykernel_35/2912564369.py:55: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n  y = int(row[2]) / img_size\n/tmp/ipykernel_35/2912564369.py:56: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n  w = int(row[3]) / img_size\n/tmp/ipykernel_35/2912564369.py:57: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n  h = int(row[4]) / img_size\n","output_type":"stream"},{"name":"stdout","text":"14100\n14200\n14300\n14400\n14500\n14600\n14700\n14800\n14900\n15000\n15100\n15200\n15300\n15400\n15500\n15600\n15700\n15800\n15900\n16000\n16100\n16200\n16300\n16400\n16500\n16600\n16700\n16800\n16900\n17000\n17100\n17200\n17300\n17400\n17500\n17600\n17700\n17800\n17900\n18000\n18100\n18200\n18300\n18400\n18500\n18600\n18700\n18800\n18900\n19000\n19100\n19200\n19300\n19400\n19500\n19600\n19700\n19800\n19900\n20000\n20100\n20200\n20300\n20400\n20500\n20600\n20700\n20800\n20900\n21000\n21100\n21200\n21300\n21400\n21500\n21600\n21700\n21800\n21900\n22000\n22100\n22200\n22300\n22400\n22500\n22600\n22700\n22800\n22900\n23000\n23100\n23200\n23300\n","output_type":"stream"},{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/ImageFile.py\u001b[0m in \u001b[0;36m_save\u001b[0;34m(im, fp, tile, bufsize)\u001b[0m\n\u001b[1;32m    553\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 554\u001b[0;31m         \u001b[0mfh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfileno\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    555\u001b[0m         \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflush\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mAttributeError\u001b[0m: '_idat' object has no attribute 'fileno'","\nDuring handling of the above exception, another exception occurred:\n","\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)","\u001b[0;32m/tmp/ipykernel_35/4150435593.py\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mexport_image\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m/tmp/ipykernel_35/2912564369.py\u001b[0m in \u001b[0;36mexport_image\u001b[0;34m(df, train)\u001b[0m\n\u001b[1;32m     49\u001b[0m         \u001b[0mim\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfromarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     50\u001b[0m         \u001b[0mimg_out_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mout_img_dir\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34mf'{id}.png'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 51\u001b[0;31m         \u001b[0mim\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg_out_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     52\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     53\u001b[0m         \u001b[0;31m# Prepare label\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/Image.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self, fp, format, **params)\u001b[0m\n\u001b[1;32m   2594\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2595\u001b[0m         \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2596\u001b[0;31m             \u001b[0msave_handler\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2597\u001b[0m         \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2598\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mopen_fp\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/PngImagePlugin.py\u001b[0m in \u001b[0;36m_save\u001b[0;34m(im, fp, filename, chunk, save_all)\u001b[0m\n\u001b[1;32m   1486\u001b[0m         )\n\u001b[1;32m   1487\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0msingle_im\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1488\u001b[0;31m         ImageFile._save(\n\u001b[0m\u001b[1;32m   1489\u001b[0m             \u001b[0msingle_im\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1490\u001b[0m             \u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mIO\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mbytes\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_idat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchunk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/ImageFile.py\u001b[0m in \u001b[0;36m_save\u001b[0;34m(im, fp, tile, bufsize)\u001b[0m\n\u001b[1;32m    556\u001b[0m         \u001b[0m_encode_tile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mim\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtile\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbufsize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfh\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    557\u001b[0m     \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mAttributeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mUnsupportedOperation\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 558\u001b[0;31m         \u001b[0m_encode_tile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mim\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtile\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbufsize\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    559\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"flush\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    560\u001b[0m         \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflush\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/ImageFile.py\u001b[0m in \u001b[0;36m_encode_tile\u001b[0;34m(im, fp, tile, bufsize, fh, exc)\u001b[0m\n\u001b[1;32m    583\u001b[0m                     \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    584\u001b[0m                         \u001b[0merrcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbufsize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 585\u001b[0;31m                         \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    586\u001b[0m                         \u001b[0;32mif\u001b[0m \u001b[0merrcode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    587\u001b[0m                             \u001b[0;32mbreak\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/PngImagePlugin.py\u001b[0m in \u001b[0;36mwrite\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m   1130\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1131\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1132\u001b[0;31m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchunk\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34mb\"IDAT\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1133\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1134\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/PngImagePlugin.py\u001b[0m in \u001b[0;36mputchunk\u001b[0;34m(fp, cid, *data)\u001b[0m\n\u001b[1;32m   1118\u001b[0m     \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo32\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbyte_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mcid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1119\u001b[0m     \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbyte_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1120\u001b[0;31m     \u001b[0mcrc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_crc32\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbyte_data\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_crc32\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1121\u001b[0m     \u001b[0mfp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mo32\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcrc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1122\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.11/dist-packages/PIL/PngImagePlugin.py\u001b[0m in \u001b[0;36m_crc32\u001b[0;34m(data, seed)\u001b[0m\n\u001b[1;32m    147\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    148\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_crc32\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseed\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 149\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mzlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcrc32\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseed\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m&\u001b[0m \u001b[0;36m0xFFFFFFFF\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    150\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    151\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mKeyboardInterrupt\u001b[0m: "],"ename":"KeyboardInterrupt","evalue":"","output_type":"error"}],"execution_count":16},{"cell_type":"code","source":"len(os.listdir('/kaggle/working/train/labels'))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:02.259152Z","iopub.execute_input":"2025-07-03T10:04:02.25983Z","iopub.status.idle":"2025-07-03T10:04:02.265545Z","shell.execute_reply.started":"2025-07-03T10:04:02.259808Z","shell.execute_reply":"2025-07-03T10:04:02.264997Z"}},"outputs":[{"execution_count":18,"output_type":"execute_result","data":{"text/plain":"2778"},"metadata":{}}],"execution_count":18},{"cell_type":"code","source":"for i in os.listdir('/kaggle/working/train/images'):\n    path=os.path.join('/kaggle/working/train/images',i)\n    img = Image.open(path)\n    img.show()\n    break","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:15.359929Z","iopub.execute_input":"2025-07-03T10:04:15.3605Z","iopub.status.idle":"2025-07-03T10:04:15.558667Z","shell.execute_reply.started":"2025-07-03T10:04:15.360476Z","shell.execute_reply":"2025-07-03T10:04:15.557987Z"}},"outputs":[{"name":"stderr","text":"Error: no \"view\" mailcap rules found for type \"image/png\"\n/usr/bin/xdg-open: 882: www-browser: not found\n/usr/bin/xdg-open: 882: links2: not found\n/usr/bin/xdg-open: 882: elinks: not found\n/usr/bin/xdg-open: 882: links: not found\n/usr/bin/xdg-open: 882: lynx: not found\n/usr/bin/xdg-open: 882: w3m: not found\nxdg-open: no method available for opening '/tmp/tmprjgkzfq_.PNG'\n","output_type":"stream"}],"execution_count":19},{"cell_type":"code","source":"with open('/kaggle/working/req.txt','w') as f:\n    f.write('asu')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:19.941059Z","iopub.execute_input":"2025-07-03T10:04:19.941757Z","iopub.status.idle":"2025-07-03T10:04:19.945396Z","shell.execute_reply.started":"2025-07-03T10:04:19.941733Z","shell.execute_reply":"2025-07-03T10:04:19.944687Z"}},"outputs":[],"execution_count":20},{"cell_type":"code","source":"dict_file = {\n    'train': '/kaggle/working/train',\n    'val': '/kaggle/working/test',\n    'nc': 1,\n    'names': ['Pneumonia'],\n    'augment': { # apply data augmentations\n        'flipud': 0.0,  # Probability of vertical flip\n        'fliplr': 0.5,  # Probability of horizontal flip\n        'hsv_h': 0.015,  # HSV hue augmentation \n        'hsv_s': 0.7,  # HSV saturation augmentation\n        'hsv_v': 0.4   # HSV value augmentation\n    }\n}\n\n# Save to the data.yaml file\nwith open(\"/kaggle/working/data.yaml\", 'w') as file:\n    yaml.dump(dict_file, file, default_flow_style=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:29.004728Z","iopub.execute_input":"2025-07-03T10:04:29.005Z","iopub.status.idle":"2025-07-03T10:04:29.010784Z","shell.execute_reply.started":"2025-07-03T10:04:29.004981Z","shell.execute_reply":"2025-07-03T10:04:29.010003Z"}},"outputs":[],"execution_count":21},{"cell_type":"code","source":"with open(\"/kaggle/working/data.yaml\", \"r\") as f:\n    print(f.read())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:31.563782Z","iopub.execute_input":"2025-07-03T10:04:31.564079Z","iopub.status.idle":"2025-07-03T10:04:31.568988Z","shell.execute_reply.started":"2025-07-03T10:04:31.564047Z","shell.execute_reply":"2025-07-03T10:04:31.568379Z"}},"outputs":[{"name":"stdout","text":"augment:\n  fliplr: 0.5\n  flipud: 0.0\n  hsv_h: 0.015\n  hsv_s: 0.7\n  hsv_v: 0.4\nnames:\n- Pneumonia\nnc: 1\ntrain: /kaggle/working/train\nval: /kaggle/working/test\n\n","output_type":"stream"}],"execution_count":22},{"cell_type":"code","source":"import wandb\n\ntry:\n    from kaggle_secrets import UserSecretsClient\n    user_secrets = UserSecretsClient()\n    api_key = user_secrets.get_secret(\"wandb_api\")\n    wandb.login(key=api_key)\nexcept Exception as e:\n    print(e)\n    print('If you want to use your W&B account, go to Add-ons -> Secrets and provide your W&B access token. Use the Label name as wandb_api. \\nGet your W&B access token from here: https://wandb.ai/authorize')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:33.784675Z","iopub.execute_input":"2025-07-03T10:04:33.785335Z","iopub.status.idle":"2025-07-03T10:04:42.661686Z","shell.execute_reply.started":"2025-07-03T10:04:33.785314Z","shell.execute_reply":"2025-07-03T10:04:42.661074Z"}},"outputs":[{"name":"stderr","text":"\u001b[34m\u001b[1mwandb\u001b[0m: Using wandb-core as the SDK backend.  Please refer to https://wandb.me/wandb-core for more information.\n\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m If you're specifying your api key in code, ensure this code is not shared publicly.\n\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Consider setting the WANDB_API_KEY environment variable, or running `wandb login` from the command line.\n\u001b[34m\u001b[1mwandb\u001b[0m: No netrc file found, creating one.\n\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33masutoshp10\u001b[0m (\u001b[33masutoshp10-nit-rourkela\u001b[0m) to \u001b[32mhttps://api.wandb.ai\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n","output_type":"stream"}],"execution_count":23},{"cell_type":"code","source":"from ultralytics import YOLO\n\nmodel = YOLO('yolo12m.pt')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:46.452525Z","iopub.execute_input":"2025-07-03T10:04:46.453514Z","iopub.status.idle":"2025-07-03T10:04:52.151581Z","shell.execute_reply.started":"2025-07-03T10:04:46.45349Z","shell.execute_reply":"2025-07-03T10:04:52.150691Z"}},"outputs":[{"name":"stdout","text":"Creating new Ultralytics Settings v0.0.6 file ✅ \nView Ultralytics Settings with 'yolo settings' or at '/root/.config/Ultralytics/settings.json'\nUpdate Settings with 'yolo settings key=value', i.e. 'yolo settings runs_dir=path/to/dir'. For help see https://docs.ultralytics.com/quickstart/#ultralytics-settings.\nDownloading https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo12m.pt to 'yolo12m.pt'...\n","output_type":"stream"},{"name":"stderr","text":"100%|██████████| 39.0M/39.0M [00:00<00:00, 135MB/s] \n","output_type":"stream"}],"execution_count":24},{"cell_type":"code","source":"results = model.train(data=\"/kaggle/working/data.yaml\",\n                      epochs=100,\n                      batch=-1,\n                      workers=8,\n                      patience=40,\n                      cos_lr = True,\n                      seed = 42)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:04:58.91467Z","iopub.execute_input":"2025-07-03T10:04:58.915525Z","execution_failed":"2025-07-03T10:11:51.687Z"}},"outputs":[{"name":"stdout","text":"Ultralytics 8.3.161 🚀 Python-3.11.11 torch-2.6.0+cu124 CUDA:0 (Tesla P100-PCIE-16GB, 16269MiB)\n\u001b[34m\u001b[1mengine/trainer: \u001b[0magnostic_nms=False, amp=True, augment=False, auto_augment=randaugment, batch=-1, bgr=0.0, box=7.5, cache=False, cfg=None, classes=None, close_mosaic=10, cls=0.5, conf=None, copy_paste=0.0, copy_paste_mode=flip, cos_lr=True, cutmix=0.0, data=/kaggle/working/data.yaml, degrees=0.0, deterministic=True, device=None, dfl=1.5, dnn=False, dropout=0.0, dynamic=False, embed=None, epochs=100, erasing=0.4, exist_ok=False, fliplr=0.5, flipud=0.0, format=torchscript, fraction=1.0, freeze=None, half=False, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, imgsz=640, int8=False, iou=0.7, keras=False, kobj=1.0, line_width=None, lr0=0.01, lrf=0.01, mask_ratio=4, max_det=300, mixup=0.0, mode=train, model=yolo12m.pt, momentum=0.937, mosaic=1.0, multi_scale=False, name=train, nbs=64, nms=False, opset=None, optimize=False, optimizer=auto, overlap_mask=True, patience=40, perspective=0.0, plots=True, pose=12.0, pretrained=True, profile=False, project=None, rect=False, resume=False, retina_masks=False, save=True, save_conf=False, save_crop=False, save_dir=runs/detect/train, save_frames=False, save_json=False, save_period=-1, save_txt=False, scale=0.5, seed=42, shear=0.0, show=False, show_boxes=True, show_conf=True, show_labels=True, simplify=True, single_cls=False, source=None, split=val, stream_buffer=False, task=detect, time=None, tracker=botsort.yaml, translate=0.1, val=True, verbose=True, vid_stride=1, visualize=False, warmup_bias_lr=0.1, warmup_epochs=3.0, warmup_momentum=0.8, weight_decay=0.0005, workers=8, workspace=None\nDownloading https://ultralytics.com/assets/Arial.ttf to '/root/.config/Ultralytics/Arial.ttf'...\n","output_type":"stream"},{"name":"stderr","text":"100%|██████████| 755k/755k [00:00<00:00, 26.0MB/s]\n","output_type":"stream"},{"name":"stdout","text":"Overriding model.yaml nc=80 with nc=1\n\n                   from  n    params  module                                       arguments                     \n  0                  -1  1      1856  ultralytics.nn.modules.conv.Conv             [3, 64, 3, 2]                 \n  1                  -1  1     73984  ultralytics.nn.modules.conv.Conv             [64, 128, 3, 2]               \n  2                  -1  1    111872  ultralytics.nn.modules.block.C3k2            [128, 256, 1, True, 0.25]     \n  3                  -1  1    590336  ultralytics.nn.modules.conv.Conv             [256, 256, 3, 2]              \n  4                  -1  1    444928  ultralytics.nn.modules.block.C3k2            [256, 512, 1, True, 0.25]     \n  5                  -1  1   2360320  ultralytics.nn.modules.conv.Conv             [512, 512, 3, 2]              \n  6                  -1  2   2689536  ultralytics.nn.modules.block.A2C2f           [512, 512, 2, True, 4]        \n  7                  -1  1   2360320  ultralytics.nn.modules.conv.Conv             [512, 512, 3, 2]              \n  8                  -1  2   2689536  ultralytics.nn.modules.block.A2C2f           [512, 512, 2, True, 1]        \n  9                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']          \n 10             [-1, 6]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           \n 11                  -1  1   1248768  ultralytics.nn.modules.block.A2C2f           [1024, 512, 1, False, -1]     \n 12                  -1  1         0  torch.nn.modules.upsampling.Upsample         [None, 2, 'nearest']          \n 13             [-1, 4]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           \n 14                  -1  1    378624  ultralytics.nn.modules.block.A2C2f           [1024, 256, 1, False, -1]     \n 15                  -1  1    590336  ultralytics.nn.modules.conv.Conv             [256, 256, 3, 2]              \n 16            [-1, 11]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           \n 17                  -1  1   1183232  ultralytics.nn.modules.block.A2C2f           [768, 512, 1, False, -1]      \n 18                  -1  1   2360320  ultralytics.nn.modules.conv.Conv             [512, 512, 3, 2]              \n 19             [-1, 8]  1         0  ultralytics.nn.modules.conv.Concat           [1]                           \n 20                  -1  1   1642496  ultralytics.nn.modules.block.C3k2            [1024, 512, 1, True]          \n 21        [14, 17, 20]  1   1411795  ultralytics.nn.modules.head.Detect           [1, [256, 512, 512]]          \nYOLOv12m summary: 292 layers, 20,138,259 parameters, 20,138,243 gradients, 67.7 GFLOPs\n\nTransferred 745/751 items from pretrained weights\nFreezing layer 'model.21.dfl.conv.weight'\n\u001b[34m\u001b[1mAMP: \u001b[0mrunning Automatic Mixed Precision (AMP) checks...\nDownloading https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt to 'yolo11n.pt'...\n","output_type":"stream"},{"name":"stderr","text":"100%|██████████| 5.35M/5.35M [00:00<00:00, 129MB/s]\n","output_type":"stream"},{"name":"stdout","text":"\u001b[34m\u001b[1mAMP: \u001b[0mchecks passed ✅\n\u001b[34m\u001b[1mtrain: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 3118.7±838.5 MB/s, size: 343.3 KB)\n","output_type":"stream"},{"name":"stderr","text":"\u001b[34m\u001b[1mtrain: \u001b[0mScanning /kaggle/working/train/labels... 2778 images, 0 backgrounds, 1 corrupt: 100%|██████████| 2779/2779 [00:02<00:00, 1311.73it/s]","output_type":"stream"},{"name":"stdout","text":"\u001b[34m\u001b[1mtrain: \u001b[0m/kaggle/working/train/images/8cb6fe1e-ed23-44af-9a1d-85fe2bdb106e.png: ignoring corrupt image/label: truncated PNG file\n","output_type":"stream"},{"name":"stderr","text":"\n","output_type":"stream"},{"name":"stdout","text":"\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: /kaggle/working/train/labels.cache\n\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01, num_output_channels=3, method='weighted_average'), CLAHE(p=0.01, clip_limit=(1.0, 4.0), tile_grid_size=(8, 8))\n\u001b[34m\u001b[1mAutoBatch: \u001b[0mComputing optimal batch size for imgsz=640 at 60.0% CUDA memory utilization.\n\u001b[34m\u001b[1mAutoBatch: \u001b[0mCUDA:0 (Tesla P100-PCIE-16GB) 15.89G total, 0.21G reserved, 0.21G allocated, 15.47G free\n      Params      GFLOPs  GPU_mem (GB)  forward (ms) backward (ms)                   input                  output\n    20138259       67.74         1.845         66.45         222.2        (1, 3, 640, 640)                    list\n    20138259       135.5         2.785         56.92         170.2        (2, 3, 640, 640)                    list\n    20138259         271         4.534         73.08         223.7        (4, 3, 640, 640)                    list\n    20138259       541.9         7.898         135.4         355.7        (8, 3, 640, 640)                    list\n    20138259        1084        13.831         269.9         654.8       (16, 3, 640, 640)                    list\n\u001b[34m\u001b[1mAutoBatch: \u001b[0mUsing batch-size 9 for CUDA:0 8.82G/15.89G (56%) ✅\n\u001b[34m\u001b[1mtrain: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 2890.8±645.2 MB/s, size: 331.5 KB)\n","output_type":"stream"},{"name":"stderr","text":"\u001b[34m\u001b[1mtrain: \u001b[0mScanning /kaggle/working/train/labels.cache... 2778 images, 0 backgrounds, 1 corrupt: 100%|██████████| 2779/2779 [00:00<?, ?it/s]","output_type":"stream"},{"name":"stdout","text":"\u001b[34m\u001b[1mtrain: \u001b[0m/kaggle/working/train/images/8cb6fe1e-ed23-44af-9a1d-85fe2bdb106e.png: ignoring corrupt image/label: truncated PNG file\n\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01, num_output_channels=3, method='weighted_average'), CLAHE(p=0.01, clip_limit=(1.0, 4.0), tile_grid_size=(8, 8))\n","output_type":"stream"},{"name":"stderr","text":"\n","output_type":"stream"},{"name":"stdout","text":"\u001b[34m\u001b[1mval: \u001b[0mFast image access ✅ (ping: 0.0±0.0 ms, read: 2207.8±1203.0 MB/s, size: 315.2 KB)\n","output_type":"stream"},{"name":"stderr","text":"\u001b[34m\u001b[1mval: \u001b[0mScanning /kaggle/working/test/labels... 2154 images, 0 backgrounds, 2 corrupt: 100%|██████████| 2156/2156 [00:02<00:00, 1008.75it/s]","output_type":"stream"},{"name":"stdout","text":"\u001b[34m\u001b[1mval: \u001b[0m/kaggle/working/test/images/019d950b-dd38-4cf3-a686-527a75728be6.png: ignoring corrupt image/label: truncated PNG file\n\u001b[34m\u001b[1mval: \u001b[0m/kaggle/working/test/images/d21e3291-a64b-405c-8a71-8fae7041b138.png: ignoring corrupt image/label: broken PNG file (incomplete checksum in b'IDAT')\n\u001b[34m\u001b[1mval: \u001b[0mNew cache created: /kaggle/working/test/labels.cache\n","output_type":"stream"},{"name":"stderr","text":"\n","output_type":"stream"},{"name":"stdout","text":"Plotting labels to runs/detect/train/labels.jpg... \n\u001b[34m\u001b[1moptimizer:\u001b[0m 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically... \n\u001b[34m\u001b[1moptimizer:\u001b[0m AdamW(lr=0.002, momentum=0.9) with parameter groups 123 weight(decay=0.0), 130 weight(decay=0.0004921875), 129 bias(decay=0.0)\nImage sizes 640 train, 640 val\nUsing 4 dataloader workers\nLogging results to \u001b[1mruns/detect/train\u001b[0m\nStarting training for 100 epochs...\n\n      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size\n","output_type":"stream"},{"name":"stderr","text":"      1/100      7.16G      2.432      3.254      2.517          8        640: 100%|██████████| 309/309 [02:59<00:00,  1.73it/s]\n                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 120/120 [00:43<00:00,  2.78it/s]\n","output_type":"stream"},{"name":"stdout","text":"                   all       2154       2154     0.0426    0.00696    0.00597     0.0021\n\n      Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size\n","output_type":"stream"},{"name":"stderr","text":"      2/100      7.19G      2.408      3.024      2.469         11        640:  93%|█████████▎| 288/309 [02:43<00:11,  1.76it/s]","output_type":"stream"}],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"img=cv2.imread('/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_images/0004cfab-14fd-4e49-80ba-63a80b6bddd6.dcm')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T05:14:52.333839Z","iopub.execute_input":"2025-07-03T05:14:52.334169Z","iopub.status.idle":"2025-07-03T05:14:52.340502Z","shell.execute_reply.started":"2025-07-03T05:14:52.334148Z","shell.execute_reply":"2025-07-03T05:14:52.33953Z"}},"outputs":[],"execution_count":9},{"cell_type":"code","source":"import shutil\nimport pydicom\nimport numpy as np\nfrom PIL import Image\nimport concurrent.futures\nimport threading\nfrom queue import Queue\nimport yaml\nimport time\nfrom ultralytics import YOLO\n\nclass ConcurrentDataProcessor:\n    def _init_(self, df, max_workers=8):\n        self.df = df\n        self.max_workers = max_workers\n        self.processed_count = 0\n        self.total_count = 0\n        \n    def setup_directories(self):\n        \"\"\"Setup output directories\"\"\"\n        directories = [\n            '/kaggle/working/train/images',\n            '/kaggle/working/train/labels',\n            '/kaggle/working/test/images',\n            '/kaggle/working/test/labels'\n        ]\n        \n        for dir_path in directories:\n            os.makedirs(dir_path, exist_ok=True)\n    \n    def process_batch_concurrent(self, batch_rows):\n        \"\"\"Process a batch of rows concurrently\"\"\"\n        args_list = []\n        \n        for row in batch_rows:\n            if row[-1] == 0:  # Skip if target is 0\n                continue\n            args_list.append(row)\n        \n        if not args_list:\n            return\n        \n        # Use ProcessPoolExecutor for CPU-intensive DICOM processing\n        with concurrent.futures.ProcessPoolExecutor(max_workers=self.max_workers) as executor:\n            partial_func = partial(self._process_single_row)\n            results = list(executor.map(partial_func, args_list))\n        \n        self.processed_count += len([r for r in results if r])\n        print(f\"Processed batch: {self.processed_count}/{self.total_count}\")\n    \n    def _process_single_row(self, row):\n        \"\"\"Process a single row (DICOM to PNG conversion)\"\"\"\n        try:\n            img_size = 1024\n            img_dir = '/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_images'\n            img_dir_test = '/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_test_images'\n            output_dir_test = '/kaggle/working/train'\n            output_dir = '/kaggle/working/test'\n            \n            id = row[0]\n            \n            # Try train directory first\n            img_path = os.path.join(img_dir, f'{id}.dcm')\n            out_img_dir = os.path.join(output_dir, 'images')\n            out_label_dir = os.path.join(output_dir, 'labels')\n            \n            if not os.path.exists(img_path):\n                # Try test directory\n                img_path = os.path.join(img_dir_test, f'{id}.dcm')\n                out_img_dir = os.path.join(output_dir_test, 'images')\n                out_label_dir = os.path.join(output_dir_test, 'labels')\n                if not os.path.exists(img_path):\n                    return False\n            \n            # Read DICOM and convert to PNG\n            ds = pydicom.dcmread(img_path)\n            img = ds.pixel_array\n            \n            # Normalize to 0-255 and convert to uint8\n            img = (img - np.min(img)) / (np.max(img) - np.min(img)) * 255.0\n            img = img.astype(np.uint8)\n            im = Image.fromarray(img)\n            \n            img_out_path = os.path.join(out_img_dir, f'{id}.png')\n            im.save(img_out_path)\n            \n            # Prepare label\n            x = int(row[1]) / img_size\n            y = int(row[2]) / img_size\n            w = int(row[3]) / img_size\n            h = int(row[4]) / img_size\n            xc = x + w / 2\n            yc = y + h / 2\n            labels = [f\"0 {xc:.6f} {yc:.6f} {w:.6f} {h:.6f}\"]\n            \n            # Write label file\n            output_file = os.path.join(out_label_dir, f'{id}.txt')\n            with open(output_file, \"w\") as f:\n                f.write(\"\\n\".join(labels))\n            \n            return True\n            \n        except Exception as e:\n            print(f\"Error processing {row[0]}: {e}\")\n            return False\n    \n    def process_and_train_concurrent(self, batch_size=200):\n        \"\"\"Process data in batches while potentially training\"\"\"\n        self.setup_directories()\n        \n        # Count total rows to process\n        self.total_count = len([row for _, row in self.df.iterrows() if _ >= 8000 and row[-1] != 0])\n        \n        # Process in batches\n        batch = []\n        for _, row in self.df.iterrows():\n            if _ < 8000:\n                continue\n                \n            batch.append(row)\n            \n            if len(batch) >= batch_size:\n                self.process_batch_concurrent(batch)\n                batch = []\n        \n        # Process remaining batch\n        if batch:\n            self.process_batch_concurrent(batch)\n\ndef create_yaml_and_train():\n    \"\"\"Create YAML configuration and start training\"\"\"\n    dict_file = {\n        'train': '/kaggle/working/train',\n        'val': '/kaggle/working/test',\n        'nc': 1,\n        'names': ['Pneumonia'],\n        'augment': {\n            'flipud': 0.0,\n            'fliplr': 0.5,\n            'hsv_h': 0.015,\n            'hsv_s': 0.7,\n            'hsv_v': 0.4\n        }\n    }\n    \n    # Save to the data.yaml file\n    with open(\"/kaggle/working/data.yaml\", 'w') as file:\n        yaml.dump(dict_file, file, default_flow_style=False)\n    \n    print(\"YAML file created successfully\")\n    \n    # Initialize model and start training\n    model = YOLO('yolo12m.pt')\n    \n    # Optimized training parameters\n    results = model.train(\n        data=\"/kaggle/working/data.yaml\",\n        epochs=100,\n        batch=-1,  # Auto-batch for optimal GPU utilization\n        workers=8,  # Multiple data loading workers\n        patience=40,\n        cos_lr=True,\n        seed=42,\n        device=0,  # Specify GPU device\n        amp=True,  # Mixed precision training\n        cache=True,  # Cache images for faster loading\n        save_period=10,  # Save checkpoints every 10 epochs\n    )\n    \n    return results\n\n# Main execution\n# if _name_ == \"_main_\":\n#     processor = ConcurrentDataProcessor(df, max_workers=8)\n    \n#     data_thread = threading.Thread(target=processor.process_and_train_concurrent)\n#     data_thread.start()\n    \n#     # Wait for some data to be processed before starting training\n#     time.sleep(60)  # Wait 1 minute for initial data processing\n    \n#     # Start training (this will run while data processing continues)\n#     training_results = create_yaml_and_train()\n    \n#     # Wait for data processing to complete\n#     data_thread.join()\n    \n#     print(\"Data processing and training completed!\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T12:16:26.347684Z","iopub.execute_input":"2025-07-03T12:16:26.348489Z","iopub.status.idle":"2025-07-03T12:16:30.35617Z","shell.execute_reply.started":"2025-07-03T12:16:26.348463Z","shell.execute_reply":"2025-07-03T12:16:30.355623Z"}},"outputs":[{"name":"stdout","text":"Creating new Ultralytics Settings v0.0.6 file ✅ \nView Ultralytics Settings with 'yolo settings' or at '/root/.config/Ultralytics/settings.json'\nUpdate Settings with 'yolo settings key=value', i.e. 'yolo settings runs_dir=path/to/dir'. For help see https://docs.ultralytics.com/quickstart/#ultralytics-settings.\n","output_type":"stream"}],"execution_count":7},{"cell_type":"code","source":"\nprocessor = ConcurrentDataProcessor(df, max_workers=8)\n\n# Start data processing in background\ndata_thread = threading.Thread(target=processor.process_and_train_concurrent)\ndata_thread.start()\n\n# Wait for some data to be processed before starting training\ntime.sleep(60)  # Wait 1 minute for initial data processing\n\n# Start training (this will run while data processing continues)\ntraining_results = create_yaml_and_train()\n\n# Wait for data processing to complete\ndata_thread.join()\n\nprint(\"Data processing and training completed!\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-07-03T10:56:01.646753Z","iopub.execute_input":"2025-07-03T10:56:01.647491Z","iopub.status.idle":"2025-07-03T10:56:01.658935Z","shell.execute_reply.started":"2025-07-03T10:56:01.647466Z","shell.execute_reply":"2025-07-03T10:56:01.658059Z"}},"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)","\u001b[0;32m/tmp/ipykernel_35/1041400432.py\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mload_your_dataframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      2\u001b[0m \u001b[0mprocessor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mConcurrentDataProcessor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_workers\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;31m# Start data processing in background\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mdata_thread\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mthreading\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mThread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mprocessor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprocess_and_train_concurrent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mNameError\u001b[0m: name 'load_your_dataframe' is not defined"],"ename":"NameError","evalue":"name 'load_your_dataframe' is not defined","output_type":"error"}],"execution_count":12},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}