diff --git a/1.JPG b/1.JPG new file mode 100644 index 0000000..3bbacec Binary files /dev/null and b/1.JPG differ diff --git a/2.JPG b/2.JPG new file mode 100644 index 0000000..452bdef Binary files /dev/null and b/2.JPG differ diff --git a/data.yaml b/data.yaml index 1c49be9..9db6c88 100644 --- a/data.yaml +++ b/data.yaml @@ -1,5 +1,5 @@ names: 0: palmprint -path: ./dataset +path: ./yolo_seg_1612 train: train.txt val: val.txt diff --git a/train_by_yolo.ipynb b/train_by_yolo.ipynb index 521258f..bc84106 100644 --- a/train_by_yolo.ipynb +++ b/train_by_yolo.ipynb @@ -9,82 +9,46 @@ "name": "stdout", "output_type": "stream", "text": [ - "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\n", - "Collecting ultralytics\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/6f/3a/83d0d5544b34cecb0ab447cbda7bd43203489c0966015bbf603f1cc422d9/ultralytics-8.2.102-py3-none-any.whl (874 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m874.8/874.8 kB\u001b[0m \u001b[31m862.9 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", - "\u001b[?25hCollecting numpy<2.0.0,>=1.23.0 (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)\n", - "Requirement already satisfied: matplotlib>=3.3.0 in ./.venv/lib/python3.10/site-packages (from ultralytics) (3.9.2)\n", - "Requirement already satisfied: opencv-python>=4.6.0 in ./.venv/lib/python3.10/site-packages (from ultralytics) (4.10.0.84)\n", - "Requirement already satisfied: pillow>=7.1.2 in ./.venv/lib/python3.10/site-packages (from ultralytics) (10.4.0)\n", - "Collecting pyyaml>=5.3.1 (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (751 kB)\n", - "Collecting requests>=2.23.0 (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl (64 kB)\n", - "Collecting scipy>=1.4.1 (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/47/78/b0c2c23880dd1e99e938ad49ccfb011ae353758a2dc5ed7ee59baff684c3/scipy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (41.2 MB)\n", - "Requirement already satisfied: torch>=1.8.0 in ./.venv/lib/python3.10/site-packages (from ultralytics) (2.4.1)\n", - "Requirement already satisfied: torchvision>=0.9.0 in ./.venv/lib/python3.10/site-packages (from ultralytics) (0.19.1)\n", - "Collecting tqdm>=4.64.0 (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl (78 kB)\n", - "Requirement already satisfied: psutil in ./.venv/lib/python3.10/site-packages (from ultralytics) (6.0.0)\n", - "Collecting py-cpuinfo (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl (22 kB)\n", - "Collecting pandas>=1.1.4 (from ultralytics)\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/44/50/7db2cd5e6373ae796f0ddad3675268c8d59fb6076e66f0c339d61cea886b/pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.1 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.1/13.1 MB\u001b[0m \u001b[31m1.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0mm\n", - "\u001b[?25hCollecting seaborn>=0.11.0 (from ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl (294 kB)\n", - "Collecting ultralytics-thop>=2.0.0 (from ultralytics)\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/22/4b/126ba8e757f83fb735d44344491a0ebd814ba90eff0639c56ea90e3b71f0/ultralytics_thop-2.0.8-py3-none-any.whl (26 kB)\n", - "Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (1.3.0)\n", - "Requirement already satisfied: cycler>=0.10 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (4.54.1)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (1.4.7)\n", - "Requirement already satisfied: packaging>=20.0 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (24.1)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (3.1.4)\n", - "Requirement already satisfied: python-dateutil>=2.7 in ./.venv/lib/python3.10/site-packages (from matplotlib>=3.3.0->ultralytics) (2.9.0.post0)\n", - "Collecting pytz>=2020.1 (from pandas>=1.1.4->ultralytics)\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl (508 kB)\n", - "Collecting tzdata>=2022.7 (from pandas>=1.1.4->ultralytics)\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a6/ab/7e5f53c3b9d14972843a647d8d7a853969a58aecc7559cb3267302c94774/tzdata-2024.2-py2.py3-none-any.whl (346 kB)\n", - "Collecting charset-normalizer<4,>=2 (from requests>=2.23.0->ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/da/f1/3702ba2a7470666a62fd81c58a4c40be00670e5006a67f4d626e57f013ae/charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)\n", - "Collecting idna<4,>=2.5 (from requests>=2.23.0->ultralytics)\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl (70 kB)\n", - "Collecting urllib3<3,>=1.21.1 (from requests>=2.23.0->ultralytics)\n", - " Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl (126 kB)\n", - "Collecting certifi>=2017.4.17 (from requests>=2.23.0->ultralytics)\n", - " Using cached https://pypi.tuna.tsinghua.edu.cn/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl (167 kB)\n", - "Requirement already satisfied: filelock in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (3.16.1)\n", - "Requirement already satisfied: typing-extensions>=4.8.0 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (4.12.2)\n", - "Requirement already satisfied: sympy in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (1.13.3)\n", - "Requirement already satisfied: networkx in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (3.3)\n", - "Requirement already satisfied: jinja2 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (3.1.4)\n", - "Requirement already satisfied: fsspec in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (2024.9.0)\n", - "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.1.105 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (12.1.105)\n", - "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.1.105 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (12.1.105)\n", - "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.1.105 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (12.1.105)\n", - "Requirement already satisfied: nvidia-cudnn-cu12==9.1.0.70 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (9.1.0.70)\n", - "Requirement already satisfied: nvidia-cublas-cu12==12.1.3.1 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (12.1.3.1)\n", - "Requirement already satisfied: nvidia-cufft-cu12==11.0.2.54 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (11.0.2.54)\n", - "Requirement already satisfied: nvidia-curand-cu12==10.3.2.106 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (10.3.2.106)\n", - "Requirement already satisfied: nvidia-cusolver-cu12==11.4.5.107 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (11.4.5.107)\n", - "Requirement already satisfied: nvidia-cusparse-cu12==12.1.0.106 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (12.1.0.106)\n", - "Requirement already satisfied: nvidia-nccl-cu12==2.20.5 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (2.20.5)\n", - "Requirement already satisfied: nvidia-nvtx-cu12==12.1.105 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (12.1.105)\n", - "Requirement already satisfied: triton==3.0.0 in ./.venv/lib/python3.10/site-packages (from torch>=1.8.0->ultralytics) (3.0.0)\n", - "Requirement already satisfied: nvidia-nvjitlink-cu12 in ./.venv/lib/python3.10/site-packages (from nvidia-cusolver-cu12==11.4.5.107->torch>=1.8.0->ultralytics) (12.6.68)\n", - "Requirement already satisfied: six>=1.5 in ./.venv/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib>=3.3.0->ultralytics) (1.16.0)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in ./.venv/lib/python3.10/site-packages (from jinja2->torch>=1.8.0->ultralytics) (2.1.5)\n", - "Requirement already satisfied: mpmath<1.4,>=1.1.0 in ./.venv/lib/python3.10/site-packages (from sympy->torch>=1.8.0->ultralytics) (1.3.0)\n", - "Installing collected packages: pytz, py-cpuinfo, urllib3, tzdata, tqdm, pyyaml, numpy, idna, charset-normalizer, certifi, scipy, requests, pandas, ultralytics-thop, seaborn, ultralytics\n", - " Attempting uninstall: numpy\n", - " Found existing installation: numpy 2.1.1\n", - " Uninstalling numpy-2.1.1:\n", - " Successfully uninstalled numpy-2.1.1\n", - "Successfully installed certifi-2024.8.30 charset-normalizer-3.3.2 idna-3.10 numpy-1.26.4 pandas-2.2.3 py-cpuinfo-9.0.0 pytz-2024.2 pyyaml-6.0.2 requests-2.32.3 scipy-1.14.1 seaborn-0.13.2 tqdm-4.66.5 tzdata-2024.2 ultralytics-8.2.102 ultralytics-thop-2.0.8 urllib3-2.2.3\n", + "Looking in indexes: https://mirrors.aliyun.com/pypi/simple\n", + "Requirement already satisfied: ultralytics in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (8.2.102)\n", + "Requirement already satisfied: numpy<2.0.0,>=1.23.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (1.26.4)\n", + "Requirement already satisfied: matplotlib>=3.3.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (3.9.2)\n", + "Requirement already satisfied: opencv-python>=4.6.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (4.10.0.84)\n", + "Requirement already satisfied: pillow>=7.1.2 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (10.4.0)\n", + "Requirement already satisfied: pyyaml>=5.3.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (6.0.2)\n", + "Requirement already satisfied: requests>=2.23.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (2.32.3)\n", + "Requirement already satisfied: scipy>=1.4.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (1.14.1)\n", + "Requirement already satisfied: torch>=1.8.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (2.4.1)\n", + "Requirement already satisfied: torchvision>=0.9.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (0.19.1)\n", + "Requirement already satisfied: tqdm>=4.64.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (4.66.5)\n", + "Requirement already satisfied: psutil in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (6.0.0)\n", + "Requirement already satisfied: py-cpuinfo in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (9.0.0)\n", + "Requirement already satisfied: pandas>=1.1.4 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (2.2.3)\n", + "Requirement already satisfied: seaborn>=0.11.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (0.13.2)\n", + "Requirement already satisfied: ultralytics-thop>=2.0.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from ultralytics) (2.0.8)\n", + "Requirement already satisfied: contourpy>=1.0.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (1.3.0)\n", + "Requirement already satisfied: cycler>=0.10 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (4.54.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (1.4.7)\n", + "Requirement already satisfied: packaging>=20.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (24.1)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (3.1.4)\n", + "Requirement already satisfied: python-dateutil>=2.7 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from matplotlib>=3.3.0->ultralytics) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from pandas>=1.1.4->ultralytics) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from pandas>=1.1.4->ultralytics) (2024.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from requests>=2.23.0->ultralytics) (3.3.2)\n", + "Requirement already satisfied: idna<4,>=2.5 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from requests>=2.23.0->ultralytics) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from requests>=2.23.0->ultralytics) (2.2.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from requests>=2.23.0->ultralytics) (2024.8.30)\n", + "Requirement already satisfied: filelock in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from torch>=1.8.0->ultralytics) (3.16.1)\n", + "Requirement already satisfied: typing-extensions>=4.8.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from torch>=1.8.0->ultralytics) (4.12.2)\n", + "Requirement already satisfied: sympy in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from torch>=1.8.0->ultralytics) (1.13.3)\n", + "Requirement already satisfied: networkx in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from torch>=1.8.0->ultralytics) (3.3)\n", + "Requirement already satisfied: jinja2 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from torch>=1.8.0->ultralytics) (3.1.4)\n", + "Requirement already satisfied: fsspec in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from torch>=1.8.0->ultralytics) (2024.9.0)\n", + "Requirement already satisfied: colorama in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from tqdm>=4.64.0->ultralytics) (0.4.6)\n", + "Requirement already satisfied: six>=1.5 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from python-dateutil>=2.7->matplotlib>=3.3.0->ultralytics) (1.16.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from jinja2->torch>=1.8.0->ultralytics) (2.1.5)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from sympy->torch>=1.8.0->ultralytics) (1.3.0)\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -97,17 +61,7 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Creating new Ultralytics Settings v0.0.6 file ✅ \n", - "View Ultralytics Settings with 'yolo settings' or at '/home/moweilin/.config/Ultralytics/settings.json'\n", - "Update 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" - ] - } - ], + "outputs": [], "source": [ "from ultralytics import YOLO\n" ] @@ -123,22 +77,7 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8n-seg.pt to 'yolov8n-seg.pt'...\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 6.74M/6.74M [00:15<00:00, 463kB/s]\n" - ] - } - ], + "outputs": [], "source": [ "\n", "# Load a model\n", @@ -154,35 +93,167 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Ultralytics YOLOv8.2.102 🚀 Python-3.10.12 torch-2.4.1+cu121 CUDA:0 (Tesla T4, 14931MiB)\n", - "\u001b[34m\u001b[1mengine/trainer: \u001b[0mtask=segment, mode=train, model=yolov8n-seg.pt, data=data.yaml, epochs=1, time=None, patience=100, batch=16, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=train6, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=True, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=/home/moweilin/projects/palmprint-recognition/runs/segment/train6\n" + "Ultralytics YOLOv8.2.102 Python-3.10.11 torch-2.4.1+cpu CPU (AMD Ryzen 7 5700G with Radeon Graphics)\n", + "\u001b[34m\u001b[1mengine\\trainer: \u001b[0mtask=segment, mode=train, model=yolov8n-seg.pt, data=data.yaml, epochs=1, time=None, patience=100, batch=16, imgsz=640, save=True, save_period=-1, cache=False, device=None, workers=8, project=None, name=train8, exist_ok=False, pretrained=True, optimizer=auto, verbose=True, seed=0, deterministic=True, single_cls=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, amp=True, fraction=1.0, profile=False, freeze=None, multi_scale=False, overlap_mask=True, mask_ratio=4, dropout=0.0, val=True, split=val, save_json=False, save_hybrid=False, conf=None, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=None, vid_stride=1, stream_buffer=False, visualize=False, augment=False, agnostic_nms=False, classes=None, retina_masks=False, embed=None, show=False, save_frames=False, save_txt=False, save_conf=False, save_crop=False, show_labels=True, show_conf=True, show_boxes=True, line_width=None, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=True, opset=None, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, pose=12.0, kobj=1.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, bgr=0.0, mosaic=1.0, mixup=0.0, copy_paste=0.0, auto_augment=randaugment, erasing=0.4, crop_fraction=1.0, cfg=None, tracker=botsort.yaml, save_dir=d:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\n", + "\n", + " from n params module arguments \n", + " 0 -1 1 464 ultralytics.nn.modules.conv.Conv [3, 16, 3, 2] \n", + " 1 -1 1 4672 ultralytics.nn.modules.conv.Conv [16, 32, 3, 2] \n", + " 2 -1 1 7360 ultralytics.nn.modules.block.C2f [32, 32, 1, True] \n", + " 3 -1 1 18560 ultralytics.nn.modules.conv.Conv [32, 64, 3, 2] \n", + " 4 -1 2 49664 ultralytics.nn.modules.block.C2f [64, 64, 2, True] \n", + " 5 -1 1 73984 ultralytics.nn.modules.conv.Conv [64, 128, 3, 2] \n", + " 6 -1 2 197632 ultralytics.nn.modules.block.C2f [128, 128, 2, True] \n", + " 7 -1 1 295424 ultralytics.nn.modules.conv.Conv [128, 256, 3, 2] \n", + " 8 -1 1 460288 ultralytics.nn.modules.block.C2f [256, 256, 1, True] \n", + " 9 -1 1 164608 ultralytics.nn.modules.block.SPPF [256, 256, 5] \n", + " 10 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 11 [-1, 6] 1 0 ultralytics.nn.modules.conv.Concat [1] \n", + " 12 -1 1 148224 ultralytics.nn.modules.block.C2f [384, 128, 1] \n", + " 13 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 14 [-1, 4] 1 0 ultralytics.nn.modules.conv.Concat [1] \n", + " 15 -1 1 37248 ultralytics.nn.modules.block.C2f [192, 64, 1] \n", + " 16 -1 1 36992 ultralytics.nn.modules.conv.Conv [64, 64, 3, 2] \n", + " 17 [-1, 12] 1 0 ultralytics.nn.modules.conv.Concat [1] \n", + " 18 -1 1 123648 ultralytics.nn.modules.block.C2f [192, 128, 1] \n", + " 19 -1 1 147712 ultralytics.nn.modules.conv.Conv [128, 128, 3, 2] \n", + " 20 [-1, 9] 1 0 ultralytics.nn.modules.conv.Concat [1] \n", + " 21 -1 1 493056 ultralytics.nn.modules.block.C2f [384, 256, 1] \n", + " 22 [15, 18, 21] 1 1004275 ultralytics.nn.modules.head.Segment [1, 32, 64, [64, 128, 256]] \n", + "YOLOv8n-seg summary: 261 layers, 3,263,811 parameters, 3,263,795 gradients, 12.1 GFLOPs\n", + "\n", + "Transferred 417/417 items from pretrained weights\n", + "Freezing layer 'model.22.dfl.conv.weight'\n" ] }, { - "ename": "RuntimeError", - "evalue": "Dataset 'data.yaml' error ❌ \nDataset 'data.yaml' images not found ⚠️, missing path '/home/moweilin/projects/datasets/dataset/val.txt'\nNote dataset download directory is '/home/moweilin/projects/datasets'. You can update this in '/home/moweilin/.config/Ultralytics/settings.json'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/projects/palmprint-recognition/.venv/lib/python3.10/site-packages/ultralytics/engine/trainer.py:557\u001b[0m, in \u001b[0;36mBaseTrainer.get_dataset\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 551\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39msplit(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;129;01min\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myaml\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myml\u001b[39m\u001b[38;5;124m\"\u001b[39m} \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs\u001b[38;5;241m.\u001b[39mtask \u001b[38;5;129;01min\u001b[39;00m {\n\u001b[1;32m 552\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdetect\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 553\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msegment\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 554\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpose\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 555\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mobb\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 556\u001b[0m }:\n\u001b[0;32m--> 557\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43mcheck_det_dataset\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43margs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 558\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myaml_file\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m data:\n", - "File \u001b[0;32m~/projects/palmprint-recognition/.venv/lib/python3.10/site-packages/ultralytics/data/utils.py:328\u001b[0m, in \u001b[0;36mcheck_det_dataset\u001b[0;34m(dataset, autodownload)\u001b[0m\n\u001b[1;32m 327\u001b[0m m \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124mNote dataset download directory is \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mDATASETS_DIR\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m. You can update this in \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mSETTINGS_FILE\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 328\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mFileNotFoundError\u001b[39;00m(m)\n\u001b[1;32m 329\u001b[0m t \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: \nDataset 'data.yaml' images not found ⚠️, missing path '/home/moweilin/projects/datasets/dataset/val.txt'\nNote dataset download directory is '/home/moweilin/projects/datasets'. You can update this in '/home/moweilin/.config/Ultralytics/settings.json'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[9], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Train the model\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata.yaml\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mimgsz\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m640\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/projects/palmprint-recognition/.venv/lib/python3.10/site-packages/ultralytics/engine/model.py:797\u001b[0m, in \u001b[0;36mModel.train\u001b[0;34m(self, trainer, **kwargs)\u001b[0m\n\u001b[1;32m 794\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m args\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresume\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 795\u001b[0m args[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresume\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mckpt_path\n\u001b[0;32m--> 797\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer \u001b[38;5;241m=\u001b[39m \u001b[43m(\u001b[49m\u001b[43mtrainer\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_smart_load\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtrainer\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\u001b[43moverrides\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_callbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcallbacks\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 798\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m args\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresume\u001b[39m\u001b[38;5;124m\"\u001b[39m): \u001b[38;5;66;03m# manually set model only if not resuming\u001b[39;00m\n\u001b[1;32m 799\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainer\u001b[38;5;241m.\u001b[39mget_model(weights\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mckpt \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m, cfg\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel\u001b[38;5;241m.\u001b[39myaml)\n", - "File \u001b[0;32m~/projects/palmprint-recognition/.venv/lib/python3.10/site-packages/ultralytics/models/yolo/segment/train.py:30\u001b[0m, in \u001b[0;36mSegmentationTrainer.__init__\u001b[0;34m(self, cfg, overrides, _callbacks)\u001b[0m\n\u001b[1;32m 28\u001b[0m overrides \u001b[38;5;241m=\u001b[39m {}\n\u001b[1;32m 29\u001b[0m overrides[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtask\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msegment\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m---> 30\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcfg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moverrides\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_callbacks\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/projects/palmprint-recognition/.venv/lib/python3.10/site-packages/ultralytics/engine/trainer.py:133\u001b[0m, in \u001b[0;36mBaseTrainer.__init__\u001b[0;34m(self, cfg, overrides, _callbacks)\u001b[0m\n\u001b[1;32m 131\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmodel \u001b[38;5;241m=\u001b[39m check_model_file_from_stem(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs\u001b[38;5;241m.\u001b[39mmodel) \u001b[38;5;66;03m# add suffix, i.e. yolov8n -> yolov8n.pt\u001b[39;00m\n\u001b[1;32m 132\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m torch_distributed_zero_first(LOCAL_RANK): \u001b[38;5;66;03m# avoid auto-downloading dataset multiple times\u001b[39;00m\n\u001b[0;32m--> 133\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtrainset, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtestset \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_dataset\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mema \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;66;03m# Optimization utils init\u001b[39;00m\n", - "File \u001b[0;32m~/projects/palmprint-recognition/.venv/lib/python3.10/site-packages/ultralytics/engine/trainer.py:561\u001b[0m, in \u001b[0;36mBaseTrainer.get_dataset\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 559\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs\u001b[38;5;241m.\u001b[39mdata \u001b[38;5;241m=\u001b[39m data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124myaml_file\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;66;03m# for validating 'yolo train data=url.zip' usage\u001b[39;00m\n\u001b[1;32m 560\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 561\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(emojis(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDataset \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclean_url(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs\u001b[38;5;241m.\u001b[39mdata)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m error ❌ \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m 562\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata \u001b[38;5;241m=\u001b[39m data\n\u001b[1;32m 563\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtrain\u001b[39m\u001b[38;5;124m\"\u001b[39m], data\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mval\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m data\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "\u001b[0;31mRuntimeError\u001b[0m: Dataset 'data.yaml' error ❌ \nDataset 'data.yaml' images not found ⚠️, missing path '/home/moweilin/projects/datasets/dataset/val.txt'\nNote dataset download directory is '/home/moweilin/projects/datasets'. You can update this in '/home/moweilin/.config/Ultralytics/settings.json'" + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mtrain: \u001b[0mScanning images\\train\\Birjand University Mobile Palmprint Database (BMPD)\\001... 0 images, 1289 backgrounds, 0 corrupt: 100%|██████████| 1289/1289 [00:01<00:00, 880.89it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mtrain: \u001b[0mWARNING No labels found in images\\train\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache. See https://docs.ultralytics.com/datasets for dataset formatting guidance.\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: images\\train\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache\n", + "WARNING No labels found in images\\train\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache, training may not work correctly. See https://docs.ultralytics.com/datasets for dataset formatting guidance.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning images\\val\\Birjand University Mobile Palmprint Database (BMPD)\\001... 0 images, 323 backgrounds, 0 corrupt: 100%|██████████| 323/323 [00:00<00:00, 873.37it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mval: \u001b[0mWARNING No labels found in images\\val\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache. See https://docs.ultralytics.com/datasets for dataset formatting guidance.\n", + "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: images\\val\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache\n", + "WARNING No labels found in images\\val\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache, training may not work correctly. See https://docs.ultralytics.com/datasets for dataset formatting guidance.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Plotting labels to d:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\\labels.jpg... \n", + "zero-size array to reduction operation maximum which has no identity\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 66 weight(decay=0.0), 77 weight(decay=0.0005), 76 bias(decay=0.0)\n", + "Image sizes 640 train, 640 val\n", + "Using 0 dataloader workers\n", + "Logging results to \u001b[1md:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\u001b[0m\n", + "Starting training for 1 epochs...\n", + "\n", + " Epoch GPU_mem box_loss seg_loss cls_loss dfl_loss Instances Size\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 1/1 0G 0 0 89.74 0 0 640: 100%|██████████| 81/81 [12:26<00:00, 9.21s/it]\n", + " Class Images Instances Box(P R mAP50 mAP50-95) Mask(P R mAP50 mAP50-95): 100%|██████████| 11/11 [01:27<00:00, 8.00s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " all 323 0 0 0 0 0 0 0 0 0\n", + "WARNING no labels found in segment set, can not compute metrics without labels\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "1 epochs completed in 0.232 hours.\n", + "Optimizer stripped from d:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\\weights\\last.pt, 6.8MB\n", + "Optimizer stripped from d:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\\weights\\best.pt, 6.8MB\n", + "\n", + "Validating d:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\\weights\\best.pt...\n", + "Ultralytics YOLOv8.2.102 Python-3.10.11 torch-2.4.1+cpu CPU (AMD Ryzen 7 5700G with Radeon Graphics)\n", + "YOLOv8n-seg summary (fused): 195 layers, 3,258,259 parameters, 0 gradients, 12.0 GFLOPs\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " Class Images Instances Box(P R mAP50 mAP50-95) Mask(P R mAP50 mAP50-95): 100%|██████████| 11/11 [01:19<00:00, 7.27s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " all 323 0 0 0 0 0 0 0 0 0\n", + "WARNING no labels found in segment set, can not compute metrics without labels\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Speed: 3.2ms preprocess, 127.8ms inference, 0.0ms loss, 4.8ms postprocess per image\n", + "Results saved to \u001b[1md:\\Projects\\test\\palmprint-recognition\\runs\\segment\\train8\u001b[0m\n" ] } ], @@ -207,9 +278,73 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ultralytics YOLOv8.2.102 Python-3.10.11 torch-2.4.1+cpu CPU (AMD Ryzen 7 5700G with Radeon Graphics)\n", + "YOLOv8n-seg summary (fused): 195 layers, 3,258,259 parameters, 0 gradients, 12.0 GFLOPs\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mval: \u001b[0mScanning images\\val\\Birjand University Mobile Palmprint Database (BMPD)\\001.cache... 0 images, 323 backgrounds, 0 corrupt: 100%|██████████| 323/323 [00:00=1.22.4 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from pandas) (1.26.4)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from pandas) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from pandas) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from pandas) (2024.2)\n", + "Requirement already satisfied: scipy>=1.6.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from scikit-learn) (1.14.1)\n", + "Requirement already satisfied: joblib>=1.2.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from scikit-learn) (1.4.2)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from scikit-learn) (3.5.0)\n", + "Requirement already satisfied: six>=1.5 in d:\\projects\\test\\palmprint-recognition\\.venv\\lib\\site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install pandas scikit-learn" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
0data/images/train/Birjand University Mobile Pa...
1data/images/train/Birjand University Mobile Pa...
2data/images/train/Birjand University Mobile Pa...
3data/images/train/Birjand University Mobile Pa...
4data/images/train/Birjand University Mobile Pa...
......
1607data/images/train/Birjand University Mobile Pa...
1608data/images/train/Birjand University Mobile Pa...
1609data/images/train/Birjand University Mobile Pa...
1610data/images/train/Birjand University Mobile Pa...
1611data/images/train/Birjand University Mobile Pa...
\n", + "

1612 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " 0\n", + "0 data/images/train/Birjand University Mobile Pa...\n", + "1 data/images/train/Birjand University Mobile Pa...\n", + "2 data/images/train/Birjand University Mobile Pa...\n", + "3 data/images/train/Birjand University Mobile Pa...\n", + "4 data/images/train/Birjand University Mobile Pa...\n", + "... ...\n", + "1607 data/images/train/Birjand University Mobile Pa...\n", + "1608 data/images/train/Birjand University Mobile Pa...\n", + "1609 data/images/train/Birjand University Mobile Pa...\n", + "1610 data/images/train/Birjand University Mobile Pa...\n", + "1611 data/images/train/Birjand University Mobile Pa...\n", + "\n", + "[1612 rows x 1 columns]" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(os.path.join(origin_data_dir, \"train.txt\"),header=None)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 images/train/Birjand University Mobile Palmpri...\n", + "1 images/train/Birjand University Mobile Palmpri...\n", + "2 images/train/Birjand University Mobile Palmpri...\n", + "3 images/train/Birjand University Mobile Palmpri...\n", + "4 images/train/Birjand University Mobile Palmpri...\n", + " ... \n", + "1607 images/train/Birjand University Mobile Palmpri...\n", + "1608 images/train/Birjand University Mobile Palmpri...\n", + "1609 images/train/Birjand University Mobile Palmpri...\n", + "1610 images/train/Birjand University Mobile Palmpri...\n", + "1611 images/train/Birjand University Mobile Palmpri...\n", + "Name: 0, Length: 1612, dtype: object" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[0] = df[0].apply(lambda x: x.lstrip(\"/data\"))\n", + "df[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0\n", + "1138 images/train/Birjand University Mobile Palmpri...\n", + "316 images/train/Birjand University Mobile Palmpri...\n", + "303 images/train/Birjand University Mobile Palmpri...\n", + "545 images/train/Birjand University Mobile Palmpri...\n", + "744 images/train/Birjand University Mobile Palmpri...\n", + "... ...\n", + "406 images/train/Birjand University Mobile Palmpri...\n", + "1414 images/train/Birjand University Mobile Palmpri...\n", + "143 images/train/Birjand University Mobile Palmpri...\n", + "1265 images/train/Birjand University Mobile Palmpri...\n", + "623 images/train/Birjand University Mobile Palmpri...\n", + "\n", + "[1289 rows x 1 columns]\n", + " 0 \\\n", + "1574 images/train/Birjand University Mobile Palmpri... \n", + "1097 images/train/Birjand University Mobile Palmpri... \n", + "141 images/train/Birjand University Mobile Palmpri... \n", + "958 images/train/Birjand University Mobile Palmpri... \n", + "609 images/train/Birjand University Mobile Palmpri... \n", + "... ... \n", + "750 images/train/Birjand University Mobile Palmpri... \n", + "1547 images/train/Birjand University Mobile Palmpri... \n", + "817 images/train/Birjand University Mobile Palmpri... \n", + "1514 images/train/Birjand University Mobile Palmpri... \n", + "1164 images/train/Birjand University Mobile Palmpri... \n", + "\n", + " 1 \n", + "1574 images/val/Birjand University Mobile Palmprint... \n", + "1097 images/val/Birjand University Mobile Palmprint... \n", + "141 images/val/Birjand University Mobile Palmprint... \n", + "958 images/val/Birjand University Mobile Palmprint... \n", + "609 images/val/Birjand University Mobile Palmprint... \n", + "... ... \n", + "750 images/val/Birjand University Mobile Palmprint... \n", + "1547 images/val/Birjand University Mobile Palmprint... \n", + "817 images/val/Birjand University Mobile Palmprint... \n", + "1514 images/val/Birjand University Mobile Palmprint... \n", + "1164 images/val/Birjand University Mobile Palmprint... \n", + "\n", + "[323 rows x 2 columns]\n" + ] + } + ], + "source": [ + "train,test = train_test_split(df,test_size=0.2,random_state=17)\n", + "test[1]=test[0].apply(lambda x: \"images/val/\" + x.lstrip(\"images/train\"))\n", + "print(train)\n", + "print(test)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "if not os.path.exists(target_data_dir):\n", + " os.makedirs(target_data_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "train.to_csv(os.path.join(target_data_dir,\"train.txt\"),index=False,header=None)\n", + "test[1].to_csv(os.path.join(target_data_dir,\"val.txt\"),index=False,header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "import shutil" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "def copy_images(df:pd.DataFrame,target:str,labels:bool):\n", + " kind = \"labels\" if labels else \"images\"\n", + " targetRoot = os.path.join(target_data_dir,kind,target)\n", + " if os.path.exists(targetRoot):\n", + " shutil.rmtree(targetRoot)\n", + " for _,it in df.iterrows():\n", + " f:str = it[0]\n", + " f = re.sub(r'\\.[^.]+$', '.txt', f) if labels else f\n", + " f = kind + f.lstrip(\"images\")\n", + " # print(f)\n", + " source_f = os.path.normpath(os.path.join(origin_data_dir,f))\n", + " target_f = os.path.normpath(os.path.join(targetRoot,f.lstrip(kind + \"/train\")))\n", + " os.makedirs(os.path.dirname(target_f), exist_ok=True)\n", + " shutil.copyfile(source_f,target_f)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "copy_images(df=train,target=\"train\",labels=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "copy_images(df=test,target=\"val\",labels=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "copy_images(df=train,target=\"train\",labels=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [], + "source": [ + "copy_images(df=test,target=\"val\",labels=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.11" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}