从零开始复现seaformer(语义分割)训练自己的数据集——linux

这篇具有很好参考价值的文章主要介绍了从零开始复现seaformer(语义分割)训练自己的数据集——linux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言:

出于模型轻量化需求,需对原有的皮肤分割模型进行重新研发。seaformer是作为今年复旦大学和腾讯联合提出的轻量级语义分割算法,具有很好的参考价值。因此,作者基于seaformer算法对自研数据集进行训练,完成轻量级皮肤分割模型的开发。

一、seaformer源码下载

1.下载地址:https://github.com/fudan-zvg/SeaFormer

2.解压到自己的目录当中,我们主要使用sesaformer-seg,具体结构如下:

seaformer,linux,服务器,python,人工智能,pytorch

二、制作相关数据集

1.使用labelme工具对自己的数据进行标注,具体不再赘述

2.通过labelme工具进行数据标注后,我们可以得到原图和.json文件

seaformer,linux,服务器,python,人工智能,pytorch

3.将.josn文件批量转换为用于训练的mask,文件具体格式如下:

seaformer,linux,服务器,python,人工智能,pytorch

批量转换可参考:将labelme的json文件批量转为png形式 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/649269470创建data文件夹,在data文件夹下新建cityscapes文件夹,cityscapes文件夹底下再新建gtFine与leftImg8bit文件夹(gtFine与leftImg8bit同级)。在leftImg8bit文件夹中存放原图(后缀为.png格式),gtFine文件夹用来存放8bit的全黑mask图像(此时暂为空)。具体结构如下:

seaformer,linux,服务器,python,人工智能,pytorch

.json文件完成转换后,第一张全黑的图片就是我们需要的图像,参照seaformer中训练数据集cityscapes,要求的标签图像格式为8bit(原标签图像为24bit),通过以下代码实现转换:

import cv2
import os

# 24bit to 8bit
bit24_dir = r'E:\Face_Parsing_BiseNetV2-master\ATR\masks'  # 存放.json转换后的24bit全黑图像文件夹
if not os.path.exists('data/cityscapes/gtFine'):
    os.makedirs('data/cityscapes/gtFine')
bit8_dir = 'data/cityscapes/gtFine'
png_names = os.listdir(bit24_dir)
for i in png_names:
    img = cv2.imread(bit24_dir + '/' + i)
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    cv2.imencode('.png', gray)[1].tofile(bit8_dir + '/' + i)

4.创建并运行train_val.py完成训练数据集与测试数据集的划分

import os
import random
import shutil

total_list = []
train_list = []
val_list = []

image_path = 'data/cityscapes/leftImg8bit'
label_path = 'data/cityscapes/gtFine'

# 清空
for dir in ['train', 'val']:
    image_dir = os.path.join(image_path, dir)
    label_dir = os.path.join(label_path, dir)
    if os.path.exists(image_dir):
        shutil.rmtree(image_dir)
    os.makedirs(image_dir)
    if os.path.exists(label_dir):
        shutil.rmtree(label_dir)
    os.makedirs(label_dir)

for root, dirs, files in os.walk(image_path):
    for file in files:
        if file.endswith('png'):
            total_list.append(file)

total_size = len(total_list)
train_size = int(total_size * 0.8)
val_size = total_size - train_size

train_list = random.sample(total_list, train_size)
remain_list = list(set(total_list) - set(train_list))
val_list = random.sample(remain_list, val_size)

for file in total_list:
    image_path_0 = os.path.join(image_path, file)
    label_file = file.split('.')[0] + '.png'
    label_path_0 = os.path.join(label_path, label_file)
    if file in train_list:
        image_path_1 = os.path.join(image_path, 'train', file)
        shutil.move(image_path_0, image_path_1)

        label_path_1 = os.path.join(label_path, 'train', label_file)
        shutil.move(label_path_0, label_path_1)

    elif file in val_list:
        image_path_1 = os.path.join(image_path, 'val', file)
        shutil.move(image_path_0, image_path_1)

        label_path_1 = os.path.join(label_path, 'val', label_file)
        shutil.move(label_path_0, label_path_1)

print(len(total_list))
print(len(train_list))
print(len(val_list))

生成目录格式:

seaformer,linux,服务器,python,人工智能,pytorch

三、训练seaformer网络

1.环境搭建:

1)conda 虚拟环境创建

conda create -n your_env_name python=x.x  #python==3.8(作者版本)

2)激活虚拟环境并安装pytorch(gpu),建议安装1.8版本,太高版本的pytorch在安装mmcv-full时会在build时出现报错

3)安装mmcv-full

pip install -U openmim
mim install mmcv-full==1.5.0 #seaformer要求1.3.14版本(1.5.0为作者版本)

4)安装相关依赖包

cd /home/uboot/chen/SeaFormer-main/seaformer-seg
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.修改相关代码文件

1)修改SeaFormer-main\seaformer-seg\local_configs\seaformer\seaformer_small_1024x512_160k_1x8city.py文件

seaformer,linux,服务器,python,人工智能,pytorch

将num_classes修改为自己的类别数,background算一个类,其他按照自己的图像尺寸进行修改。

2)在seaformer-seg下创建modelzoos文件夹,在modelzoos文件夹下创建classification文件夹用于存放seaformer提供的预训练权重文件,将下载的预训练权重改名为SeaFormer_S.pth。修改SeaFormer-main\seaformer-seg\local_configs\seaformer\seaformer_small.py,改为自己的类别数并将第一行中的SyncBN改为BN

seaformer,linux,服务器,python,人工智能,pytorch

3)修改SeaFormer-main\seaformer-seg\mmseg\datasets\cityscapes.py,修改为自己的标签名,颜色随便填;img_suffix和seg_map_suffix记得修改不然会出现加载不到图像报错的情况。

seaformer,linux,服务器,python,人工智能,pytorch

四、开始训练

bash tools/dist_train.sh local_configs/seaformer/seaformer_small_1024x512_160k_1x8city.py 1

seaformer,linux,服务器,python,人工智能,pytorch

迭代次数可以在SeaFormer-main\seaformer-seg\local_configs\_base_\schedules\schedule_160k.py中设置

seaformer,linux,服务器,python,人工智能,pytorch

五、结果输出

seaformer,linux,服务器,python,人工智能,pytorch

记录一下,若存在不对的地方,请大家多多包涵~文章来源地址https://www.toymoban.com/news/detail-849263.html

到了这里,关于从零开始复现seaformer(语义分割)训练自己的数据集——linux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLOv5目标检测:ubuntu1804从零开始使用YOLOv5训练自己的数据集(亲测有效,一步一步来一定行)

    (1)首先需要安装Anaconda,这个网上教程太多了,下载最新版本就行,在这里就不在赘述了。 (2)安装Pytorch 1. 首先创建python3.6以上版本的conda环境,在这里我用的是python3.8,环境名称为mypytorch 2. 激活创建好的conda环境 3.在PyTorch官网上选择指定版本安装Pytorch Install PyTorch: h

    2024年02月19日
    浏览(47)
  • 适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

      目录 一、前期准备+所需环境配置  1.1. 虚拟环境创建 1.2 下载yolov8源码,在pycharm中进行配置 1.2.1 下载源码 1.2.2 在pycharm终端中配置conda 1.3 在pycharm的terminal中激活虚拟环境  1.4 安装requirements.txt中的相关包 1.5 pip安装其他包 1.6 预训练权重的下载  1.7 验证环境配置是否成功

    2024年02月05日
    浏览(61)
  • 学习Segformer语义分割模型并训练测试cityscapes数据集

    官方的segformer源码是基于MMCV框架,整体包装较多,自己不便于阅读和学习,我这里使用的是Bubbliiiing大佬github复现的segformer版本。 Bubbliiiing大佬代码下载链接: https://github.com/bubbliiiing/segformer-pytorch 大佬的代码很优秀简练,注释也很详细,代码里采用的是VOC数据集的格式,因

    2024年02月15日
    浏览(30)
  • YOLOv5入门实践(5)——从零开始,手把手教你训练自己的目标检测模型(包含pyqt5界面)

      通过前几篇文章,相信大家已经学会训练自己的数据集了。本篇是YOLOv5入门实践系列的最后一篇,也是一篇总结,我们再来一起按着 配置环境--标注数据集--划分数据集--训练模型--测试模型--推理模型 的步骤,从零开始,一起实现自己的目标检测模型吧! 前期回顾: YOLO

    2023年04月26日
    浏览(45)
  • 基于MindSpore复现UNet—语义分割

    Unet模型于2015年在论文《U-Net: Convolutional Networks for Biomedical Image Segmentation》中被提出,最初的提出是为了解决医学图像分割问题,用于细胞层面的图像分割任务。 UNet模型是在FCN网络的基础上构建的,但由于FCN无法获取上下文信息以及位置信息,导致准确性较低,UNet模型由此

    2024年02月05日
    浏览(38)
  • 复现PointNet++(语义分割网络):Windows + PyTorch + S3DIS语义分割 + 代码

    Windows 10 GPU RTX 3090 + CUDA 11.1 + cudnn 8.9.6 Python 3.9 Torch 1.9.1 + cu111 所用的原始代码:https://github.com/yanx27/Pointnet_Pointnet2_pytorch Stanford3dDataset_v1.2_Aligned_Version 分享给有需要的人,代码质量勿喷。 对源代码进行了简化和注释。 分割结果保存成txt,或者利用 laspy 生成点云。 别问为啥在

    2024年01月21日
    浏览(31)
  • YOLOv8训练自己的分割数据集

    Ultralytics YOLOv8 是由 Ultralytics 开发的一个前沿的 SOTA 模型。它在以前成功的 YOLO 版本基础上,引入了新的功能和改进,进一步提升了其性能和灵活性。YOLOv8 基于快速、准确和易于使用的设计理念,使其成为广泛的目标检测、图像分割和图像分类任务的绝佳选择。YOLOv5 自

    2024年02月04日
    浏览(53)
  • YOLOv8检测、分割和分类训练自己数据集

    本人写了一键制作三种数据集的代码,还带数据增强哦,可联系QQ:1781419402获取,小偿! Yolov8下载地址:GitHub - ultralytics/ultralytics: YOLOv8 🚀 in PyTorch ONNX CoreML TFLitexx 下载完成后 按照YOLOv8教程系列:一、使用自定义数据集训练YOLOv8模型(详细版教程,你只看一篇->调参攻略),

    2023年04月17日
    浏览(38)
  • 完整且详细的Yolov8复现+训练自己的数据集

    Yolov8 的源代码下载: ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch ONNX CoreML TFLite (github.com) https://github.com/ultralytics/ultralytics Yolov8的权重下载: Releases · ultralytics/assets · GitHub Ultralytics assets. Contribute to ultralytics/assets development by creating an account on GitHub. https://github.com/ultralytics/assets

    2024年02月16日
    浏览(27)
  • InternImage segmentation部分代码复现及训练自己的数据集(一)

    所谓“复现”,不过是跑通了官方的代码,以下仅为个人的一些经验和理解,欢迎指正。 (其实仅作为个人学习使用,也欢迎交流) 首先贴出官方文献和代码: 官方文献:InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions,链接:InternImage: Exploring Large-Sca

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包