From 4799da54ce77fab7dc465db2de0cbe191f74063e Mon Sep 17 00:00:00 2001 From: 54108 <3318195572@qq.com> Date: Tue, 15 Oct 2024 19:01:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20.gitignore=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=9B=B4=E6=96=B0=E8=AE=AD=E7=BB=83=E5=92=8C?= =?UTF-8?q?=E9=A2=84=E6=B5=8B=E9=85=8D=E7=BD=AE=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E7=B1=BB=E5=88=AB=EF=BC=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=86=97=E4=BD=99=E7=9A=84=20readme=20=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E5=AD=A6=E4=B9=A0=E7=8E=87=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E5=99=A8=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + config/lr_scheduler.yaml | 4 +- config/model.yaml | 4 +- config/predict.yaml | 2 +- config/train.yaml | 10 ++-- dataset/train/images/readme | 1 - dataset/train/labels/readme | 1 - dataset/val/images/readme | 1 - dataset/val/labels/readme | 1 - learning_rate_scheduler.py | 2 +- pretrained/readme | 1 - test.ipynb | 110 ++++++++++++++++++++++++++++++++++++ train.py | 8 ++- 13 files changed, 132 insertions(+), 16 deletions(-) create mode 100644 .gitignore delete mode 100644 dataset/train/images/readme delete mode 100644 dataset/train/labels/readme delete mode 100644 dataset/val/images/readme delete mode 100644 dataset/val/labels/readme delete mode 100644 pretrained/readme create mode 100644 test.ipynb diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2407183 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.jpg +*.png +__pycache__ diff --git a/config/lr_scheduler.yaml b/config/lr_scheduler.yaml index 7767b09..e021f03 100644 --- a/config/lr_scheduler.yaml +++ b/config/lr_scheduler.yaml @@ -3,8 +3,8 @@ scheduler_type: LINEAR_WARMUP_THEN_POLY_SCHEDULER # total_iters=epochs * 训练的图像数量 kwargs: | { - "warmup_iters": 62, - "total_iters": 620, + "warmup_iters": 4356, + "total_iters": 290400, "warmup_ratio": 0.000001, "min_lr": 0., "power": 1. diff --git a/config/model.yaml b/config/model.yaml index 70cde97..eaa6075 100644 --- a/config/model.yaml +++ b/config/model.yaml @@ -40,4 +40,6 @@ nmf2d_config: # 类别 classes: - background # 必须要 - - leaf + - 1 + - 2 + - 3 diff --git a/config/predict.yaml b/config/predict.yaml index 4801558..c5bac2b 100644 --- a/config/predict.yaml +++ b/config/predict.yaml @@ -3,7 +3,7 @@ device: "cuda" # -1表示从不加载任何权重就进行预测 # 0表示使用官方提供的权重进行预测 # 1表示使用自己的权重进行预测 -mode: 0 +mode: -1 checkpoint: - pretrained # 目录 - segnext_tiny_512x512_ade_160k.pth # 文件名 diff --git a/config/train.yaml b/config/train.yaml index f4cd8c5..5733fcc 100644 --- a/config/train.yaml +++ b/config/train.yaml @@ -1,9 +1,9 @@ device: cuda -batch_size: 2 -image_height: 512 -image_width: 512 +batch_size: 16 +image_height: 200 +image_width: 200 workers: 0 -epochs: 10 +epochs: 100 # 每一类的占比权重,如果要让每一类的占比权重相同,为1.0即可 weight: @@ -30,7 +30,7 @@ save_path: # -1表示从零开始训练网络,即不加载任何权重 # 0表示使用官方提供的权重 # 1表示使用自己的权重 -mode: 0 +mode: -1 checkpoint: - pretrained # 目录 - segnext_tiny_512x512_ade_160k.pth # 文件名 diff --git a/dataset/train/images/readme b/dataset/train/images/readme deleted file mode 100644 index 6c6f498..0000000 --- a/dataset/train/images/readme +++ /dev/null @@ -1 +0,0 @@ -训练图像 diff --git a/dataset/train/labels/readme b/dataset/train/labels/readme deleted file mode 100644 index af2210e..0000000 --- a/dataset/train/labels/readme +++ /dev/null @@ -1 +0,0 @@ -标签 diff --git a/dataset/val/images/readme b/dataset/val/images/readme deleted file mode 100644 index e2e37a7..0000000 --- a/dataset/val/images/readme +++ /dev/null @@ -1 +0,0 @@ -验证图像数据 diff --git a/dataset/val/labels/readme b/dataset/val/labels/readme deleted file mode 100644 index 0333f51..0000000 --- a/dataset/val/labels/readme +++ /dev/null @@ -1 +0,0 @@ -标签数据 diff --git a/learning_rate_scheduler.py b/learning_rate_scheduler.py index 70aa797..c06a497 100644 --- a/learning_rate_scheduler.py +++ b/learning_rate_scheduler.py @@ -187,7 +187,7 @@ class LinearWarmupThenPolyScheduler: total_iters: 总训练步数 min_lr: 最低学习率 """ - def __init__(self, optimizer, warmup_iters=1500, total_iters=2000, warmup_ratio=1e-6, min_lr=0., power=1.): + def __init__(self, optimizer, warmup_iters=1500, total_iters=20000, warmup_ratio=1e-6, min_lr=0., power=1.): self.optimizer = optimizer self.current_iters = 0 self.warmup_iters = warmup_iters diff --git a/pretrained/readme b/pretrained/readme deleted file mode 100644 index d1b0f36..0000000 --- a/pretrained/readme +++ /dev/null @@ -1 +0,0 @@ -权重, 预训练权重文件请移步官方实现的仓库下载 diff --git a/test.ipynb b/test.ipynb new file mode 100644 index 0000000..fcd37e5 --- /dev/null +++ b/test.ipynb @@ -0,0 +1,110 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from PIL import Image\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(200, 200, 3)\n", + "[[[226 226 226]\n", + " [227 227 227]\n", + " [225 225 225]\n", + " ...\n", + " [153 153 153]\n", + " [153 153 153]\n", + " [152 152 152]]\n", + "\n", + " [[227 227 227]\n", + " [222 222 222]\n", + " [221 221 221]\n", + " ...\n", + " [151 151 151]\n", + " [150 150 150]\n", + " [149 149 149]]\n", + "\n", + " [[227 227 227]\n", + " [226 226 226]\n", + " [221 221 221]\n", + " ...\n", + " [153 153 153]\n", + " [152 152 152]\n", + " [153 153 153]]\n", + "\n", + " ...\n", + "\n", + " [[234 234 234]\n", + " [229 229 229]\n", + " [229 229 229]\n", + " ...\n", + " [160 160 160]\n", + " [159 159 159]\n", + " [159 159 159]]\n", + "\n", + " [[231 231 231]\n", + " [233 233 233]\n", + " [230 230 230]\n", + " ...\n", + " [159 159 159]\n", + " [160 160 160]\n", + " [159 159 159]]\n", + "\n", + " [[230 230 230]\n", + " [236 236 236]\n", + " [234 234 234]\n", + " ...\n", + " [155 155 155]\n", + " [156 156 156]\n", + " [154 154 154]]]\n" + ] + } + ], + "source": [ + "# 读取图片\n", + "image_path = 'dataset/train/images/000229.jpg'\n", + "image = Image.open(image_path)\n", + "\n", + "# 将图片转换为 NumPy 数组\n", + "image_array = np.array(image)\n", + "\n", + "# 显示图片的像素值\n", + "print(image_array.shape)\n", + "print(image_array)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "torch", + "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/train.py b/train.py index 44cce08..4839d94 100644 --- a/train.py +++ b/train.py @@ -260,7 +260,8 @@ def train( f=f"{os.path.sep.join(train_config['save_path'])}_val_Iou{100 * best_val_model['avg_iou']:.3f}_{datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')}.pth" ) - +def count_parameters(model): + return sum(p.numel() for p in model.parameters() if p.requires_grad) @@ -273,6 +274,11 @@ if __name__ == "__main__": net=net, optimizer=optimizer ) + + # 计算并打印网络的参数量 + # num_params = count_parameters(net) + # print(f"网络的参数量: {num_params}") + train( net=net, optimizer=optimizer,