multi_U2NET
大小:12.61MB
价格:27积分
下载量:0
评分:
5.0
上传者:jin__9981
更新日期:2025-09-22

多类别语义分割U2net

资源文件列表(大概)

文件名
大小
multi_U2NET/
-
multi_U2NET/.idea/
-
multi_U2NET/.idea/.gitignore
184B
multi_U2NET/.idea/inspectionProfiles/
-
multi_U2NET/.idea/inspectionProfiles/profiles_settings.xml
174B
multi_U2NET/.idea/inspectionProfiles/Project_Default.xml
2.3KB
multi_U2NET/.idea/misc.xml
188B
multi_U2NET/.idea/modules.xml
281B
multi_U2NET/.idea/multi_U2NET.iml
324B
multi_U2NET/.idea/workspace.xml
19.42KB
multi_U2NET/create_u2net_pretrain_model.py
1.58KB
multi_U2NET/data_loader.py
12.83KB
multi_U2NET/miou_out/
-
multi_U2NET/miou_out/confusion_matrix.csv
59B
multi_U2NET/miou_out/mIoU.png
14.9KB
multi_U2NET/miou_out/mPA.png
14.06KB
multi_U2NET/miou_out/Precision.png
14.2KB
multi_U2NET/miou_out/Recall.png
13.31KB
multi_U2NET/model/
-
multi_U2NET/model/u2net.py
16.63KB
multi_U2NET/model/u2net_onnx.py
16.94KB
multi_U2NET/model/__init__.py
51B
multi_U2NET/model/__pycache__/
-
multi_U2NET/model/__pycache__/u2net.cpython-310.pyc
12.51KB
multi_U2NET/model/__pycache__/u2net.cpython-36.pyc
11.31KB
multi_U2NET/model/__pycache__/u2net.cpython-37.pyc
17.95KB
multi_U2NET/model/__pycache__/u2net.cpython-38.pyc
10.29KB
multi_U2NET/model/__pycache__/u2net.cpython-39.pyc
16.12KB
multi_U2NET/model/__pycache__/u2net5p_cbam.cpython-39.pyc
11.25KB
multi_U2NET/model/__pycache__/u2net5p_cbam_onnx.cpython-39.pyc
11.34KB
multi_U2NET/model/__pycache__/u2net5p_se.cpython-39.pyc
9.59KB
multi_U2NET/model/__pycache__/u2net_onnx.cpython-310.pyc
13.4KB
multi_U2NET/model/__pycache__/u2net_onnx.cpython-37.pyc
20.16KB
multi_U2NET/model/__pycache__/u2net_onnx.cpython-39.pyc
16.36KB
multi_U2NET/model/__pycache__/u2next4p.cpython-310.pyc
9.22KB
multi_U2NET/model/__pycache__/u2next_onnx.cpython-310.pyc
9.22KB
multi_U2NET/model/__pycache__/__init__.cpython-310.pyc
208B
multi_U2NET/model/__pycache__/__init__.cpython-36.pyc
257B
multi_U2NET/model/__pycache__/__init__.cpython-37.pyc
209B
multi_U2NET/model/__pycache__/__init__.cpython-38.pyc
203B
multi_U2NET/model/__pycache__/__init__.cpython-39.pyc
193B
multi_U2NET/onnx_infer.py
2.87KB
multi_U2NET/onnx_opencv_infer.py
4.53KB
multi_U2NET/README.md
5.1KB
multi_U2NET/results_onnx.png
59.27KB
multi_U2NET/saved_models/
-
multi_U2NET/saved_models/pretrain_model/
-
multi_U2NET/saved_models/pretrain_model/power_seg_u2netp.pth
4.67MB
multi_U2NET/saved_models/pretrain_model/segm_u2net.pth
4.61MB
multi_U2NET/saved_models/u2netp/
-
multi_U2NET/saved_models/u2netp.pth
4.47MB
multi_U2NET/se.py
1.06KB
multi_U2NET/test_out/
-
multi_U2NET/test_out/852.png
58.2KB
multi_U2NET/test_out/969.png
12.85KB
multi_U2NET/test_out/Image_20230420111440899-2.bmp
949.46KB
multi_U2NET/test_out/Image_20230420111440899.bmp
949.46KB
multi_U2NET/tools/
-
multi_U2NET/tools/Augmentor数据增强.py
865B
multi_U2NET/tools/create_mask.py
1.69KB
multi_U2NET/tools/data_split.py
846B
multi_U2NET/tools/data_split_seg.py
2.07KB
multi_U2NET/tools/img_resize.py
720B
multi_U2NET/tools/saving_utils.py
1.49KB
multi_U2NET/tools/__pycache__/
-
multi_U2NET/tools/__pycache__/saving_utils.cpython-37.pyc
1.51KB
multi_U2NET/tools/图像翻转.py
856B
multi_U2NET/tools/弹性形变.py
2.89KB
multi_U2NET/tools/随机裁剪.py
3.56KB
multi_U2NET/torch2onnx.py
1.42KB
multi_U2NET/train.sh
153B
multi_U2NET/u2net_demo.py
3.79KB
multi_U2NET/u2net_train.py
7KB
multi_U2NET/u2net_val.py
5.87KB
multi_U2NET/utils_metrics.py
9KB
multi_U2NET/__pycache__/
-
multi_U2NET/__pycache__/data_loader.cpython-310.pyc
9.42KB
multi_U2NET/__pycache__/data_loader.cpython-37.pyc
9.75KB
multi_U2NET/__pycache__/u2net_val.cpython-310.pyc
3.76KB
multi_U2NET/__pycache__/u2net_val.cpython-37.pyc
3.71KB
multi_U2NET/__pycache__/utils_metrics.cpython-310.pyc
5.65KB
multi_U2NET/__pycache__/utils_metrics.cpython-37.pyc
5.69KB

资源内容介绍

1、SOD的多类别语义分割2、将作者二类别语义分割改为多类别语义分割3、具体可参考文章:https://blog.csdn.net/jin__9981/article/details/1327120934、文章展示了多类别效果、代码修改内容、可行性
# U2Net训练多类别分割## 注意:​训练模型的时候,调用的是 models 文件夹内的 u2net.py​torch2onnx的时候, 调用的是 models 文件夹内的 u2net_onnx.py​嵌入了 记忆力机制的 u2net5p_x.py 的那两个脚本,仅能成功调用,模型的性能还未稳定。## 数据增广```tools/Augmentor数据增强.pytools/img_resize.pytools/弹性形变.pytools/随机裁剪.pytools/图像翻转.py```## 数据划分​1、目录结构```U-2-Net-master└── datasets└── train_data ├── images # 所有的原图 ├── masks # 所有的mask └── predict_masks └── test_data ├── images # 所有的测试原图 ├── masks # 所有的mask └── predict_masks # u2net_test.py 的推理结果保存路径```## 数据标注​images+masks​原图:datasets/train_data/images​datasets/test_data/images​类似于纯黑的mask图:datasets/train_data/masks​datasets/test_data/masks## 预训练模型的转化```python create_u2net_pretrain_model.py```其中,读取的是 u2netp,位于 save_models/u2netp.pth转化预训练权重的时候,其动作为,将 u2netp 的除最后一层 sigmoid 进行移除,并保存为新的权重文件但要注意转化时的输出通道 out_ch 为分类类别(包含背景)其中,u2net5p 是最小的模型,u2net是最大的模型```u_net = U2NETP(in_ch=3, out_ch=2)```保存为:saved_models/pretrain_model/segm_u2net.pth,并使用 u2net_train.py 中 137行的代码,进行预训练权重的加载。## 训练模型```shellpython u2net_train.py```### 相关脚本u2net_train.py、u2net_val.py、utils_metrics.py​u2net_val.py 可直接执行 ( python u2net_val.py )u2net_train.py 中需要设置 weights---类别的加权系数训练模型时,数据预处理的部分、模型类别数通道都要保持一致:​u2net_train.py 的第 137、138、144~156 行、第 75 行设置模型类别​u2net_val.py 的第 49、68、69 行注意:如果训练图片的 mask 图并未将像素值转化为 0~n,那要加上 data_loader.py 的292~298行的代码,做一个标签值的映射,但这个映射结果是随机的,可能。### 训练参数```python# 损失函数:CrossEntropyLossdevice = torch.device("cuda:0")# background 的权重是 1 ,其他类别的为 1.5,总共的数量和 U2NETP(3, 6) 的第二个参数对应weights = np.array([1.00, 1.50, 1.50, 1.50, 1.50, 1.50], dtype=np.float32)weights = torch.from_numpy(weights).to(device)loss_CE = nn.CrossEntropyLoss(weight=weights).to(device)# 图片文件类型image_ext = '.jpg'label_ext = '.png'# 模型类型:u2netp 大概4.7MB,是最小的那个model_name = 'u2netp' # 'u2net'# 模型通道数:3是 图片颜色的通道数,这个不变,5是类别数,算上背景总共5个类别net = U2NETP(3, 6)# 定义分割类别num_classes = 6name_classes = ["background", "first", "second", "third", "4th", "5th"]# 训练集图片data_dir = os.path.join(os.getcwd(), 'datasets', 'train_data' + os.sep)tra_image_dir = os.path.join('images' + os.sep)tra_label_dir = os.path.join('masks' + os.sep)# 验证集图片images_path = "datasets/test_data/images/"gt_dir = "datasets/test_data/masks/"# 存放推理结果图片的路径pred_dir = "datasets/test_data/predict_masks/"# 验证集的推理结果保存# 存放 miou 计算结果的 图片miou_out_path = "miou_out"# 权重文件的路径model_dir = os.path.join(os.getcwd(), 'saved_models', model_name + os.sep)# 保存权重文件并测试的频率为 200 个 iters 一次save_frq = 200# 训练回合数epoch_num = 120# batch sizebatch_size = 4```## torch转onnx​u2net_onnx.py 的所有参数应该与 u2net.py 保持一致。​转了 onnx 以后注意一下 onnx 权重的 输入名字 和 输出名字```python torch2onnx.py```## 模型微调​如果要在原有的训练好的基础上进行模型微调,就把预训练权重改成上一次训练好的模型,需要调整学习率、损失系数等等的参数,看情况使用 u2net_train.py 中 180~184 行的代码进行梯度裁剪。## 测试脚本```python u2net_demo.py # 调用 pth 权重的测试python onnx_infer.py # onnxruntime 调用 onnx 权重的测试python onnx_opencv_infer.py # opencv 调用 onnx 权重的测试```图片保存于 ./test_out/配置类别对应颜色注意一下,输出的推理结果输出的是12345的rgb值,这个推理结果的rgb和标签的rgb是对应的```python# 这里给的顺序是 rgbcls = dict([(1,(0,0,255)), # 蓝 (2,(255,0,0)), # 红 (3,(255,0,255)), # 粉 (4,(0,255,0)), # 绿 (5,(0,255,255))]) # 青 ```

用户评论 (0)

发表评论

captcha