Segmentation
InΒ [Β ]:
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
Raw Dataset Import
InΒ [Β ]:
import os
import zipfile
from tqdm import tqdm
# Path configuration
zips_dir = "/content/drive/MyDrive/Final Thesis File/AgriMultiCrop-BD-Renamed-Zips"
extracted_dir = "/content/unzipped_raw_images"
if not os.path.exists(zips_dir):
raise FileNotFoundError(f"Folder not found in Drive: {zips_dir}\nPlease make sure Google Drive is mounted correctly.")
os.makedirs(extracted_dir, exist_ok=True)
zip_files = [f for f in os.listdir(zips_dir) if f.lower().endswith('.zip')]
if not zip_files:
raise FileNotFoundError(f"No .zip files found in {zips_dir}")
print(f"π¦ Unzipping a total of {len(zip_files)} zip files to local disk, please wait...")
for z_file in tqdm(sorted(zip_files), desc="Unzipping classes"):
full_zip_path = os.path.join(zips_dir, z_file)
class_folder_name = os.path.splitext(z_file)[0]
target_extract_path = os.path.join(extracted_dir, class_folder_name)
os.makedirs(target_extract_path, exist_ok=True)
with zipfile.ZipFile(full_zip_path, 'r') as zip_ref:
zip_ref.extractall(target_extract_path)
print("β
All zip files have been successfully unzipped to local disk!")
π¦ Unzipping a total of 28 zip files to local disk, please wait...
Unzipping classes: 100%|ββββββββββ| 28/28 [06:12<00:00, 13.30s/it]
β All zip files have been successfully unzipped to local disk!
InΒ [Β ]:
!pip3 install torch torchvision --index-url https://pytorch.org
!pip install torch torchvision
!pip install numpy pillow opencv-python transformers accelerate timm einops ultralytics
!pip install kornia
Looking in indexes: https://pytorch.org Requirement already satisfied: torch in /usr/local/lib/python3.13/dist-packages (2.11.0+cu130) Requirement already satisfied: torchvision in /usr/local/lib/python3.13/dist-packages (0.26.0+cu130) Requirement already satisfied: filelock in /usr/local/lib/python3.13/dist-packages (from torch) (3.32.7) Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.13/dist-packages (from torch) (4.16.0) Requirement already satisfied: setuptools<82 in /usr/local/lib/python3.13/dist-packages (from torch) (80.10.2) Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.13/dist-packages (from torch) (1.14.0) Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.13/dist-packages (from torch) (3.6.1) Requirement already satisfied: jinja2 in /usr/local/lib/python3.13/dist-packages (from torch) (3.1.6) Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.13/dist-packages (from torch) (2025.12.0) Requirement already satisfied: cuda-toolkit==13.0.2 in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.2) Requirement already satisfied: cuda-bindings<14,>=13.0.3 in /usr/local/lib/python3.13/dist-packages (from torch) (13.0.3) Requirement already satisfied: nvidia-cudnn-cu13==9.19.0.56 in /usr/local/lib/python3.13/dist-packages (from torch) (9.19.0.56) Requirement already satisfied: nvidia-cusparselt-cu13==0.8.0 in /usr/local/lib/python3.13/dist-packages (from torch) (0.8.0) Requirement already satisfied: nvidia-nccl-cu13==2.28.9 in /usr/local/lib/python3.13/dist-packages (from torch) (2.28.9) Requirement already satisfied: nvidia-nvshmem-cu13==3.4.5 in /usr/local/lib/python3.13/dist-packages (from torch) (3.4.5) Requirement already satisfied: triton==3.6.0 in /usr/local/lib/python3.13/dist-packages (from torch) (3.6.0) Requirement already satisfied: nvidia-cublas==13.1.0.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.1.0.3) Requirement already satisfied: nvidia-cuda-runtime==13.0.96.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.96) Requirement already satisfied: nvidia-cufft==12.0.0.61.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (12.0.0.61) Requirement already satisfied: nvidia-cufile==1.15.1.6.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (1.15.1.6) Requirement already satisfied: nvidia-cuda-cupti==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.85) Requirement already satisfied: nvidia-curand==10.4.0.35.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (10.4.0.35) Requirement already satisfied: nvidia-cusolver==12.0.4.66.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (12.0.4.66) Requirement already satisfied: nvidia-cusparse==12.6.3.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (12.6.3.3) Requirement already satisfied: nvidia-nvjitlink==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.88) Requirement already satisfied: nvidia-cuda-nvrtc==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.88) Requirement already satisfied: nvidia-nvtx==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.85) Requirement already satisfied: numpy in /usr/local/lib/python3.13/dist-packages (from torchvision) (2.1.3) Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.13/dist-packages (from torchvision) (11.3.0) Requirement already satisfied: cuda-pathfinder~=1.1 in /usr/local/lib/python3.13/dist-packages (from cuda-bindings<14,>=13.0.3->torch) (1.8.1) Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.13/dist-packages (from sympy>=1.13.3->torch) (1.3.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.13/dist-packages (from jinja2->torch) (3.0.3) Requirement already satisfied: torch in /usr/local/lib/python3.13/dist-packages (2.11.0+cu130) Requirement already satisfied: torchvision in /usr/local/lib/python3.13/dist-packages (0.26.0+cu130) Requirement already satisfied: filelock in /usr/local/lib/python3.13/dist-packages (from torch) (3.32.7) Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.13/dist-packages (from torch) (4.16.0) Requirement already satisfied: setuptools<82 in /usr/local/lib/python3.13/dist-packages (from torch) (80.10.2) Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.13/dist-packages (from torch) (1.14.0) Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.13/dist-packages (from torch) (3.6.1) Requirement already satisfied: jinja2 in /usr/local/lib/python3.13/dist-packages (from torch) (3.1.6) Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.13/dist-packages (from torch) (2025.12.0) Requirement already satisfied: cuda-toolkit==13.0.2 in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.2) Requirement already satisfied: cuda-bindings<14,>=13.0.3 in /usr/local/lib/python3.13/dist-packages (from torch) (13.0.3) Requirement already satisfied: nvidia-cudnn-cu13==9.19.0.56 in /usr/local/lib/python3.13/dist-packages (from torch) (9.19.0.56) Requirement already satisfied: nvidia-cusparselt-cu13==0.8.0 in /usr/local/lib/python3.13/dist-packages (from torch) (0.8.0) Requirement already satisfied: nvidia-nccl-cu13==2.28.9 in /usr/local/lib/python3.13/dist-packages (from torch) (2.28.9) Requirement already satisfied: nvidia-nvshmem-cu13==3.4.5 in /usr/local/lib/python3.13/dist-packages (from torch) (3.4.5) Requirement already satisfied: triton==3.6.0 in /usr/local/lib/python3.13/dist-packages (from torch) (3.6.0) Requirement already satisfied: nvidia-cublas==13.1.0.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.1.0.3) Requirement already satisfied: nvidia-cuda-runtime==13.0.96.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.96) Requirement already satisfied: nvidia-cufft==12.0.0.61.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (12.0.0.61) Requirement already satisfied: nvidia-cufile==1.15.1.6.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (1.15.1.6) Requirement already satisfied: nvidia-cuda-cupti==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.85) Requirement already satisfied: nvidia-curand==10.4.0.35.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (10.4.0.35) Requirement already satisfied: nvidia-cusolver==12.0.4.66.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (12.0.4.66) Requirement already satisfied: nvidia-cusparse==12.6.3.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (12.6.3.3) Requirement already satisfied: nvidia-nvjitlink==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.88) Requirement already satisfied: nvidia-cuda-nvrtc==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.88) Requirement already satisfied: nvidia-nvtx==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch) (13.0.85) Requirement already satisfied: numpy in /usr/local/lib/python3.13/dist-packages (from torchvision) (2.1.3) Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.13/dist-packages (from torchvision) (11.3.0) Requirement already satisfied: cuda-pathfinder~=1.1 in /usr/local/lib/python3.13/dist-packages (from cuda-bindings<14,>=13.0.3->torch) (1.8.1) Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.13/dist-packages (from sympy>=1.13.3->torch) (1.3.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.13/dist-packages (from jinja2->torch) (3.0.3) Requirement already satisfied: numpy in /usr/local/lib/python3.13/dist-packages (2.1.3) Requirement already satisfied: pillow in /usr/local/lib/python3.13/dist-packages (11.3.0) Requirement already satisfied: opencv-python in /usr/local/lib/python3.13/dist-packages (5.0.0.93) Requirement already satisfied: transformers in /usr/local/lib/python3.13/dist-packages (5.17.0) Requirement already satisfied: accelerate in /usr/local/lib/python3.13/dist-packages (1.15.0) Requirement already satisfied: timm in /usr/local/lib/python3.13/dist-packages (1.0.29) Requirement already satisfied: einops in /usr/local/lib/python3.13/dist-packages (0.8.2) Requirement already satisfied: ultralytics in /usr/local/lib/python3.13/dist-packages (8.4.173) Requirement already satisfied: huggingface-hub<2.0,>=1.5.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (1.31.0) Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (26.3) Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.13/dist-packages (from transformers) (6.0.3) Requirement already satisfied: regex>=2025.10.22 in /usr/local/lib/python3.13/dist-packages (from transformers) (2025.11.3) Requirement already satisfied: tokenizers<0.24.0,>=0.23.1 in /usr/local/lib/python3.13/dist-packages (from transformers) (0.23.2) Requirement already satisfied: typer in /usr/local/lib/python3.13/dist-packages (from transformers) (0.27.2) Requirement already satisfied: safetensors>=0.8.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (0.8.0) Requirement already satisfied: tqdm>=4.60 in /usr/local/lib/python3.13/dist-packages (from transformers) (4.67.3) Requirement already satisfied: psutil in /usr/local/lib/python3.13/dist-packages (from accelerate) (5.9.5) Requirement already satisfied: torch>=2.0.0 in /usr/local/lib/python3.13/dist-packages (from accelerate) (2.11.0+cu130) Requirement already satisfied: torchvision in /usr/local/lib/python3.13/dist-packages (from timm) (0.26.0+cu130) Requirement already satisfied: matplotlib>=3.3.0 in /usr/local/lib/python3.13/dist-packages (from ultralytics) (3.10.0) Requirement already satisfied: requests>=2.23.0 in /usr/local/lib/python3.13/dist-packages (from ultralytics) (2.32.4) Requirement already satisfied: polars>=0.20.0 in /usr/local/lib/python3.13/dist-packages (from ultralytics) (1.35.2) Requirement already satisfied: nvidia-ml-py>=12.0.0 in /usr/local/lib/python3.13/dist-packages (from ultralytics) (13.610.43) Requirement already satisfied: ultralytics-thop>=2.2.2 in /usr/local/lib/python3.13/dist-packages (from ultralytics) (2.2.2) Requirement already satisfied: ultralytics-platform>=0.1.45 in /usr/local/lib/python3.13/dist-packages (from ultralytics) (0.1.80) Requirement already satisfied: click<9.0.0,>=8.4.2 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (8.5.0) Requirement already satisfied: filelock>=3.10.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (3.32.7) Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (2025.12.0) Requirement already satisfied: hf-xet<2.0.0,>=1.5.2 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (1.6.0) Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (0.28.1) Requirement already satisfied: typing-extensions>=4.1.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (4.16.0) Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.3.0->ultralytics) (1.4.0) Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.3.0->ultralytics) (0.12.1) Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.3.0->ultralytics) (4.65.0) Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.3.0->ultralytics) (1.5.1) Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.3.0->ultralytics) (3.3.2) Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.3.0->ultralytics) (2.9.0.post0) Requirement already satisfied: polars-runtime-32==1.35.2 in /usr/local/lib/python3.13/dist-packages (from polars>=0.20.0->ultralytics) (1.35.2) Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.13/dist-packages (from requests>=2.23.0->ultralytics) (3.4.9) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.13/dist-packages (from requests>=2.23.0->ultralytics) (3.19) Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.13/dist-packages (from requests>=2.23.0->ultralytics) (2.5.0) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.13/dist-packages (from requests>=2.23.0->ultralytics) (2026.7.22) Requirement already satisfied: setuptools<82 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (80.10.2) Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (1.14.0) Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (3.6.1) Requirement already satisfied: jinja2 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (3.1.6) Requirement already satisfied: cuda-toolkit==13.0.2 in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.0.2) Requirement already satisfied: cuda-bindings<14,>=13.0.3 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (13.0.3) Requirement already satisfied: nvidia-cudnn-cu13==9.19.0.56 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (9.19.0.56) Requirement already satisfied: nvidia-cusparselt-cu13==0.8.0 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (0.8.0) Requirement already satisfied: nvidia-nccl-cu13==2.28.9 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (2.28.9) Requirement already satisfied: nvidia-nvshmem-cu13==3.4.5 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (3.4.5) Requirement already satisfied: triton==3.6.0 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->accelerate) (3.6.0) Requirement already satisfied: nvidia-cublas==13.1.0.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.1.0.3) Requirement already satisfied: nvidia-cuda-runtime==13.0.96.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.0.96) Requirement already satisfied: nvidia-cufft==12.0.0.61.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (12.0.0.61) Requirement already satisfied: nvidia-cufile==1.15.1.6.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (1.15.1.6) Requirement already satisfied: nvidia-cuda-cupti==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.0.85) Requirement already satisfied: nvidia-curand==10.4.0.35.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (10.4.0.35) Requirement already satisfied: nvidia-cusolver==12.0.4.66.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (12.0.4.66) Requirement already satisfied: nvidia-cusparse==12.6.3.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (12.6.3.3) Requirement already satisfied: nvidia-nvjitlink==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.0.88) Requirement already satisfied: nvidia-cuda-nvrtc==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.0.88) Requirement already satisfied: nvidia-nvtx==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->accelerate) (13.0.85) Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (1.5.4) Requirement already satisfied: rich>=13.8.0 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (13.9.4) Requirement already satisfied: annotated-doc>=0.0.2 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (0.0.5) Requirement already satisfied: cuda-pathfinder~=1.1 in /usr/local/lib/python3.13/dist-packages (from cuda-bindings<14,>=13.0.3->torch>=2.0.0->accelerate) (1.8.1) Requirement already satisfied: anyio in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (4.15.1) Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (1.0.9) Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.13/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (0.16.0) Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.13/dist-packages (from python-dateutil>=2.7->matplotlib>=3.3.0->ultralytics) (1.17.0) Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.13/dist-packages (from rich>=13.8.0->typer->transformers) (4.2.0) Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.13/dist-packages (from rich>=13.8.0->typer->transformers) (2.21.0) Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.13/dist-packages (from sympy>=1.13.3->torch>=2.0.0->accelerate) (1.3.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.13/dist-packages (from jinja2->torch>=2.0.0->accelerate) (3.0.3) Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.13/dist-packages (from markdown-it-py>=2.2.0->rich>=13.8.0->typer->transformers) (0.1.2) Collecting kornia Downloading kornia-0.8.3-py3-none-any.whl.metadata (22 kB) Collecting kornia-rs>=0.1.9 (from kornia) Downloading kornia_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (19 kB) Requirement already satisfied: packaging in /usr/local/lib/python3.13/dist-packages (from kornia) (26.3) Requirement already satisfied: torch>=2.0.0 in /usr/local/lib/python3.13/dist-packages (from kornia) (2.11.0+cu130) Requirement already satisfied: filelock in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (3.32.7) Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (4.16.0) Requirement already satisfied: setuptools<82 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (80.10.2) Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (1.14.0) Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (3.6.1) Requirement already satisfied: jinja2 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (3.1.6) Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (2025.12.0) Requirement already satisfied: cuda-toolkit==13.0.2 in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.0.2) Requirement already satisfied: cuda-bindings<14,>=13.0.3 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (13.0.3) Requirement already satisfied: nvidia-cudnn-cu13==9.19.0.56 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (9.19.0.56) Requirement already satisfied: nvidia-cusparselt-cu13==0.8.0 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (0.8.0) Requirement already satisfied: nvidia-nccl-cu13==2.28.9 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (2.28.9) Requirement already satisfied: nvidia-nvshmem-cu13==3.4.5 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (3.4.5) Requirement already satisfied: triton==3.6.0 in /usr/local/lib/python3.13/dist-packages (from torch>=2.0.0->kornia) (3.6.0) Requirement already satisfied: nvidia-cublas==13.1.0.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.1.0.3) Requirement already satisfied: nvidia-cuda-runtime==13.0.96.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.0.96) Requirement already satisfied: nvidia-cufft==12.0.0.61.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (12.0.0.61) Requirement already satisfied: nvidia-cufile==1.15.1.6.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (1.15.1.6) Requirement already satisfied: nvidia-cuda-cupti==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.0.85) Requirement already satisfied: nvidia-curand==10.4.0.35.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (10.4.0.35) Requirement already satisfied: nvidia-cusolver==12.0.4.66.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (12.0.4.66) Requirement already satisfied: nvidia-cusparse==12.6.3.3.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (12.6.3.3) Requirement already satisfied: nvidia-nvjitlink==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.0.88) Requirement already satisfied: nvidia-cuda-nvrtc==13.0.88.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.0.88) Requirement already satisfied: nvidia-nvtx==13.0.85.* in /usr/local/lib/python3.13/dist-packages (from cuda-toolkit[cublas,cudart,cufft,cufile,cupti,curand,cusolver,cusparse,nvjitlink,nvrtc,nvtx]==13.0.2; platform_system == "Linux"->torch>=2.0.0->kornia) (13.0.85) Requirement already satisfied: cuda-pathfinder~=1.1 in /usr/local/lib/python3.13/dist-packages (from cuda-bindings<14,>=13.0.3->torch>=2.0.0->kornia) (1.8.1) Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.13/dist-packages (from sympy>=1.13.3->torch>=2.0.0->kornia) (1.3.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.13/dist-packages (from jinja2->torch>=2.0.0->kornia) (3.0.3) Downloading kornia-0.8.3-py3-none-any.whl (1.2 MB) ββββββββββββββββββββββββββββββββββββββββ 1.2/1.2 MB 3.6 MB/s eta 0:00:00 Downloading kornia_rs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB) ββββββββββββββββββββββββββββββββββββββββ 5.3/5.3 MB 29.9 MB/s eta 0:00:00 Installing collected packages: kornia-rs, kornia Successfully installed kornia-0.8.3 kornia-rs-0.2.0
YOLOv11-M & Birefnet Model Load
InΒ [Β ]:
import torch
from torchvision import transforms
from transformers import AutoModelForImageSegmentation
from ultralytics import YOLO
# Device selection
device = "cuda" if torch.cuda.is_available() else "cpu"
print(f"Device being used: {device}")
# 1. Load BiRefNet model (Preserved)
print("β³ Loading BiRefNet model...")
birefnet_model = AutoModelForImageSegmentation.from_pretrained(
"ZhengPeng7/BiRefNet",
trust_remote_code=True
).to(device)
if device == "cuda":
birefnet_model = birefnet_model.half()
birefnet_model.eval()
print("β
BiRefNet loaded successfully!")
# 2. Load your trained YOLOv11 Best Model
# (Modify the Drive path if needed)
yolo_model_path = "/content/drive/MyDrive/Final Thesis File/YOLO11_Thesis_Project_33to60/weights/best.pt"
print(f"β³ Loading YOLOv11 model from: {yolo_model_path}")
yolo_model = YOLO(yolo_model_path)
print("β
YOLOv11 loaded successfully!")
# 3. Tensor transform (Preserved)
normalize_transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
Device being used: cuda β³ Loading BiRefNet model...
β BiRefNet loaded successfully! β³ Loading YOLOv11 model from: /content/drive/MyDrive/Final Thesis File/YOLO11_Thesis_Project_33to60/weights/best.pt β YOLOv11 loaded successfully!
Segmentation Preprocessing & Post-processing Utilities
InΒ [Β ]:
import cv2
import numpy as np
from PIL import Image, ImageOps
# 1. Letterbox Padding (Preserved)
def letterbox_image(image, target_size=1024):
"""
Resizes preserving aspect ratio and pads to square canvas.
"""
w, h = image.size
scale = target_size / max(w, h)
new_w, new_h = int(w * scale), int(h * scale)
resized_img = image.resize((new_w, new_h), Image.BILINEAR)
pad_left = (target_size - new_w) // 2
pad_top = (target_size - new_h) // 2
pad_right = target_size - new_w - pad_left
pad_bottom = target_size - new_h - pad_top
padded_img = ImageOps.expand(resized_img, border=(pad_left, pad_top, pad_right, pad_bottom), fill=(0, 0, 0))
return padded_img, (pad_left, pad_top, new_w, new_h)
# 2. HSV Fallback Recovery (Preserved)
def recover_fullframe_leaf(cv_img_rgb):
"""
HSV color thresholding to recover full-frame or extreme close-up leaves.
"""
hsv = cv2.cvtColor(cv_img_rgb, cv2.COLOR_RGB2HSV)
lower_green = np.array([15, 20, 20])
upper_green = np.array([95, 255, 255])
mask = cv2.inRange(hsv, lower_green, upper_green)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (15, 15))
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if contours:
c = max(contours, key=cv2.contourArea)
filled_mask = np.zeros_like(mask)
cv2.drawContours(filled_mask, [c], -1, 255, thickness=cv2.FILLED)
return filled_mask
return mask
# 3. Fragment Cleaner: Keep Largest / Significant Components
def refine_mask_artifacts(binary_mask):
"""
Removes small disconnected noise fragments and keeps the primary object.
"""
mask_contours, _ = cv2.findContours(binary_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if mask_contours:
largest_contour = max(mask_contours, key=cv2.contourArea)
clean_mask = np.zeros_like(binary_mask)
cv2.drawContours(clean_mask, [largest_contour], -1, 255, thickness=cv2.FILLED)
return clean_mask
return binary_mask
# 4. Spatial Bounding Box Gate
def create_bbox_gate(boxes, img_shape):
"""
Creates a binary spatial gate from YOLOv11 bounding boxes.
Any pixel outside the detected object boxes will be strictly masked out.
"""
h, w = img_shape[:2]
gate = np.zeros((h, w), dtype=np.uint8)
for box in boxes:
x1, y1, x2, y2 = map(int, box.xyxy[0].tolist())
x1, y1 = max(0, x1), max(0, y1)
x2, y2 = min(w, x2), min(h, y2)
gate[y1:y2, x1:x2] = 255
return gate
Segmentation_Pipeline
InΒ [Β ]:
import os
import cv2
import torch
import numpy as np
from PIL import Image, ImageOps
from tqdm import tqdm
# Paths and configurations
raw_base_dir = "/content/unzipped_raw_images"
output_segmented_dir = "/content/segmented_dataset"
CONF_THRESHOLD = 0.40 # YOLOv11 BBox confidence
# 28 class mapping (preserved)
class_mapping = {
"Bottle_Gourd_Flower_Blossom_Blight": 0,
"Bottle_Gourd_Flower_Healthy": 1,
"Bottle_Gourd_Fruit_Borer": 2,
"Bottle_Gourd_Fruit_Healthy": 3,
"Bottle_Gourd_Leaf_Healthy": 4,
"Bottle_Gourd_Leaf_Wilt": 5,
"Eggplant_Fruit_Borer": 6,
"Eggplant_Fruit_Healthy": 7,
"Eggplant_Leaf_Healthy": 8,
"Eggplant_Leaf_Mosaic_Virus": 9,
"Eggplant_Leaf_Wilt": 10,
"Okra_Leaf_Healthy": 11,
"Okra_Leaf_Yellow_Vein_Mosaic_Virus": 12,
"Papaya_Fruit_Anthracnose": 13,
"Papaya_Fruit_Healthy": 14,
"Papaya_Leaf_Curl_Virus": 15,
"Papaya_Leaf_Healthy": 16,
"Papaya_Leaf_Mosaic_Virus": 17,
"Papaya_Leaf_Spot": 18,
"Pointed_Gourd_Fruit_Healthy": 19,
"Pointed_Gourd_Fruit_Rot": 20,
"Pointed_Gourd_Leaf_Healthy": 21,
"Pointed_Gourd_Leaf_Potassium_Deficiency": 22,
"Teasel_Gourd_Fruit_Healthy": 23,
"Teasel_Gourd_Fruit_Rot": 24,
"Teasel_Gourd_Leaf_Blight": 25,
"Teasel_Gourd_Leaf_Healthy": 26,
"Teasel_Gourd_Leaf_Spot": 27
}
os.makedirs(output_segmented_dir, exist_ok=True)
# Main processing loop
for folder_name, class_id in class_mapping.items():
class_folder = os.path.join(raw_base_dir, folder_name)
if not os.path.exists(class_folder):
print(f"Folder not found: {folder_name}, skipping...")
continue
class_out_dir = os.path.join(output_segmented_dir, folder_name)
os.makedirs(class_out_dir, exist_ok=True)
is_leaf_class = "leaf" in folder_name.lower()
images = [f for f in os.listdir(class_folder) if f.lower().endswith(('.png', '.jpg', '.jpeg'))]
print(f"\nProcessing class {class_id}: {folder_name} (Leaf Mode: {is_leaf_class}, Total: {len(images)})...")
for img_name in tqdm(images, desc=folder_name):
img_path = os.path.join(class_folder, img_name)
base_name = os.path.splitext(img_name)[0]
# a. Load original image and correct EXIF orientation
raw_img = Image.open(img_path)
orig_img = ImageOps.exif_transpose(raw_img).convert("RGB")
w, h = orig_img.size
total_pixels = w * h
# b. Margin padding for close-up leaves (20%)
if is_leaf_class:
pad_w = int(w * 0.20)
pad_h = int(h * 0.20)
work_img = ImageOps.expand(orig_img, border=(pad_w, pad_h), fill=(125, 125, 125))
else:
work_img = orig_img
# c. Letterbox resize for BiRefNet (1024x1024)
padded_input, (p_left, p_top, new_w, new_h) = letterbox_image(work_img, target_size=1024)
# d. Tensor conversion and BiRefNet inference
input_tensor = normalize_transform(padded_input).unsqueeze(0).to(device)
if device == "cuda":
input_tensor = input_tensor.half()
with torch.no_grad():
preds = birefnet_model(input_tensor)[-1].sigmoid().cpu()
pred = preds.float().squeeze()
pred_mask = transforms.ToPILImage()(pred)
# e. Restore canvas dimensions
unpadded_mask = pred_mask.crop((p_left, p_top, p_left + new_w, p_top + new_h))
work_mask = unpadded_mask.resize(work_img.size, Image.BILINEAR)
# f. Crop leaf margin padding back to original dimensions
if is_leaf_class:
final_mask = work_mask.crop((pad_w, pad_h, pad_w + w, pad_h + h))
else:
final_mask = work_mask
mask_np = np.array(final_mask)
_, binary_mask = cv2.threshold(mask_np, 25, 255, cv2.THRESH_BINARY)
# g. Remove fragments and noise
binary_mask = refine_mask_artifacts(binary_mask)
# h. Fallback Foliage Recovery (HSV)
white_pixels = cv2.countNonZero(binary_mask)
if is_leaf_class and white_pixels < (total_pixels * 0.15):
binary_mask = recover_fullframe_leaf(np.array(orig_img))
# i. YOLOv11 BBox Inference & Spatial Gating (filtering out hands and irrelevant background)
cv_raw_bgr = cv2.cvtColor(np.array(orig_img), cv2.COLOR_RGB2BGR)
yolo_res = yolo_model.predict(source=cv_raw_bgr, conf=CONF_THRESHOLD, verbose=False)[0]
if len(yolo_res.boxes) > 0:
bbox_gate = create_bbox_gate(yolo_res.boxes, (h, w))
# Intersection of BiRefNet mask and YOLO BBox gate
final_refined_mask = cv2.bitwise_and(binary_mask, bbox_gate)
# Use gated mask only if non-empty after intersection
if cv2.countNonZero(final_refined_mask) > 0:
binary_mask = final_refined_mask
# j. Generate colored segmentation (original colors on white mask region, black elsewhere)
segmented_bgr = cv2.bitwise_and(cv_raw_bgr, cv_raw_bgr, mask=binary_mask)
# Save output
save_path = os.path.join(class_out_dir, f"{base_name}.jpg")
cv2.imwrite(save_path, segmented_bgr)
print("\nπ All images successfully segmented, cleaned, and saved!")
Processing class 0: Bottle_Gourd_Flower_Blossom_Blight (Leaf Mode: False, Total: 63)...
Bottle_Gourd_Flower_Blossom_Blight: 100%|ββββββββββ| 63/63 [00:46<00:00, 1.36it/s]
Processing class 1: Bottle_Gourd_Flower_Healthy (Leaf Mode: False, Total: 75)...
Bottle_Gourd_Flower_Healthy: 100%|ββββββββββ| 75/75 [00:48<00:00, 1.56it/s]
Processing class 2: Bottle_Gourd_Fruit_Borer (Leaf Mode: False, Total: 87)...
Bottle_Gourd_Fruit_Borer: 100%|ββββββββββ| 87/87 [00:53<00:00, 1.63it/s]
Processing class 3: Bottle_Gourd_Fruit_Healthy (Leaf Mode: False, Total: 88)...
Bottle_Gourd_Fruit_Healthy: 100%|ββββββββββ| 88/88 [00:52<00:00, 1.66it/s]
Processing class 4: Bottle_Gourd_Leaf_Healthy (Leaf Mode: True, Total: 99)...
Bottle_Gourd_Leaf_Healthy: 100%|ββββββββββ| 99/99 [01:52<00:00, 1.14s/it]
Processing class 5: Bottle_Gourd_Leaf_Wilt (Leaf Mode: True, Total: 85)...
Bottle_Gourd_Leaf_Wilt: 100%|ββββββββββ| 85/85 [00:54<00:00, 1.55it/s]
Processing class 6: Eggplant_Fruit_Borer (Leaf Mode: False, Total: 62)...
Eggplant_Fruit_Borer: 100%|ββββββββββ| 62/62 [00:40<00:00, 1.54it/s]
Processing class 7: Eggplant_Fruit_Healthy (Leaf Mode: False, Total: 104)...
Eggplant_Fruit_Healthy: 100%|ββββββββββ| 104/104 [01:29<00:00, 1.16it/s]
Processing class 8: Eggplant_Leaf_Healthy (Leaf Mode: True, Total: 222)...
Eggplant_Leaf_Healthy: 100%|ββββββββββ| 222/222 [08:04<00:00, 2.18s/it]
Processing class 9: Eggplant_Leaf_Mosaic_Virus (Leaf Mode: True, Total: 106)...
Eggplant_Leaf_Mosaic_Virus: 100%|ββββββββββ| 106/106 [01:45<00:00, 1.01it/s]
Processing class 10: Eggplant_Leaf_Wilt (Leaf Mode: True, Total: 72)...
Eggplant_Leaf_Wilt: 100%|ββββββββββ| 72/72 [00:41<00:00, 1.75it/s]
Processing class 11: Okra_Leaf_Healthy (Leaf Mode: True, Total: 81)...
Okra_Leaf_Healthy: 100%|ββββββββββ| 81/81 [01:23<00:00, 1.04s/it]
Processing class 12: Okra_Leaf_Yellow_Vein_Mosaic_Virus (Leaf Mode: True, Total: 89)...
Okra_Leaf_Yellow_Vein_Mosaic_Virus: 100%|ββββββββββ| 89/89 [02:14<00:00, 1.51s/it]
Processing class 13: Papaya_Fruit_Anthracnose (Leaf Mode: False, Total: 89)...
Papaya_Fruit_Anthracnose: 100%|ββββββββββ| 89/89 [01:25<00:00, 1.04it/s]
Processing class 14: Papaya_Fruit_Healthy (Leaf Mode: False, Total: 87)...
Papaya_Fruit_Healthy: 100%|ββββββββββ| 87/87 [01:45<00:00, 1.22s/it]
Processing class 15: Papaya_Leaf_Curl_Virus (Leaf Mode: True, Total: 90)...
Papaya_Leaf_Curl_Virus: 100%|ββββββββββ| 90/90 [01:49<00:00, 1.21s/it]
Processing class 16: Papaya_Leaf_Healthy (Leaf Mode: True, Total: 120)...
Papaya_Leaf_Healthy: 100%|ββββββββββ| 120/120 [01:27<00:00, 1.37it/s]
Processing class 17: Papaya_Leaf_Mosaic_Virus (Leaf Mode: True, Total: 65)...
Papaya_Leaf_Mosaic_Virus: 100%|ββββββββββ| 65/65 [01:03<00:00, 1.02it/s]
Processing class 18: Papaya_Leaf_Spot (Leaf Mode: True, Total: 106)...
Papaya_Leaf_Spot: 100%|ββββββββββ| 106/106 [01:55<00:00, 1.09s/it]
Processing class 19: Pointed_Gourd_Fruit_Healthy (Leaf Mode: False, Total: 78)...
Pointed_Gourd_Fruit_Healthy: 100%|ββββββββββ| 78/78 [00:43<00:00, 1.77it/s]
Processing class 20: Pointed_Gourd_Fruit_Rot (Leaf Mode: False, Total: 52)...
Pointed_Gourd_Fruit_Rot: 100%|ββββββββββ| 52/52 [00:28<00:00, 1.83it/s]
Processing class 21: Pointed_Gourd_Leaf_Healthy (Leaf Mode: True, Total: 115)...
Pointed_Gourd_Leaf_Healthy: 100%|ββββββββββ| 115/115 [01:45<00:00, 1.09it/s]
Processing class 22: Pointed_Gourd_Leaf_Potassium_Deficiency (Leaf Mode: True, Total: 83)...
Pointed_Gourd_Leaf_Potassium_Deficiency: 100%|ββββββββββ| 83/83 [01:46<00:00, 1.29s/it]
Processing class 23: Teasel_Gourd_Fruit_Healthy (Leaf Mode: False, Total: 134)...
Teasel_Gourd_Fruit_Healthy: 100%|ββββββββββ| 134/134 [01:48<00:00, 1.23it/s]
Processing class 24: Teasel_Gourd_Fruit_Rot (Leaf Mode: False, Total: 121)...
Teasel_Gourd_Fruit_Rot: 100%|ββββββββββ| 121/121 [01:15<00:00, 1.59it/s]
Processing class 25: Teasel_Gourd_Leaf_Blight (Leaf Mode: True, Total: 61)...
Teasel_Gourd_Leaf_Blight: 100%|ββββββββββ| 61/61 [00:39<00:00, 1.55it/s]
Processing class 26: Teasel_Gourd_Leaf_Healthy (Leaf Mode: True, Total: 151)...
Teasel_Gourd_Leaf_Healthy: 100%|ββββββββββ| 151/151 [02:11<00:00, 1.15it/s]
Processing class 27: Teasel_Gourd_Leaf_Spot (Leaf Mode: True, Total: 62)...
Teasel_Gourd_Leaf_Spot: 100%|ββββββββββ| 62/62 [00:55<00:00, 1.13it/s]
π All images successfully segmented, cleaned, and saved!
Save Segmented Dataset to Drive
InΒ [Β ]:
import os
# Destination for the zip file (Drive root folder)
drive_zip_path = "/content/drive/MyDrive/Segmented_Dataset_Cleaned_Ratul.zip"
source_dir = "/content/segmented_dataset"
print("β³ Zipping segmented dataset directly to Google Drive, please wait...")
# Linux fast zip command (-q suppresses verbose output)
!zip -r -q "{drive_zip_path}" "{source_dir}"
if os.path.exists(drive_zip_path):
size_mb = os.path.getsize(drive_zip_path) / (1024 * 1024)
print(f"π Successfully created and saved to Drive!\nπ File: {drive_zip_path}\nπ¦ Size: {size_mb:.2f} MB")
else:
print("β Failed to save zip file to Drive. Please check storage/path.")
β³ Zipping segmented dataset directly to Google Drive, please wait... π Successfully created and saved to Drive! π File: /content/drive/MyDrive/Segmented_Dataset_Cleaned_Ratul.zip π¦ Size: 4401.38 MB
InΒ [Β ]:
import os
# Target folder path on Drive
drive_unzip_dest = "/content/drive/MyDrive/Segmented_Dataset_Cleaned_Ratul"
source_dir = "/content/segmented_dataset"
os.makedirs(drive_unzip_dest, exist_ok=True)
print("β³ Copying unzipped segmented dataset to Google Drive, please wait...")
# Fast recursive copy
!cp -r "{source_dir}"/* "{drive_unzip_dest}"/
print(f"π Unzipped dataset successfully copied to Drive!\nπ Path: {drive_unzip_dest}")
β³ Copying unzipped segmented dataset to Google Drive, please wait... π Unzipped dataset successfully copied to Drive! π Path: /content/drive/MyDrive/Segmented_Dataset_Cleaned_Ratul