当前位置:网站首页>Implement your own dataset using bisenet

Implement your own dataset using bisenet

2022-07-07 08:23:00 I am a little rice

Data set preparation

Data sets : Remote sensing house image segmentation , There are two times , It is mainly to realize the area change of building area with time .
 Insert picture description here

Baidu cloud :https://pan.baidu.com/s/1HlnKWToc00986jiTxhq_CA
Extraction code :RSAI

Data processing

1. Data sets

The data set is stored in the root directory datasets Under the folder , And coco and city Data set juxtaposition , If the label of your dataset is already 0,1, Then don't worry label_255, If the label has not passed 255-->1 The transformation of , You can put the label file in label_255 Next .

—BiSeNet
---------datasets
-----------------coco
-----------------cityscapes
-----------------time
-----------------------train
------------------------------image
------------------------------label_255
------------------------------label
-----------------------val
------------------------------image
------------------------------label_255
------------------------------label

2. stay datasets/times/ Create under folder one.py

The aim is to 0,255 The label of is converted to 0,1, If it's multi class , Then the label is 0,1,2,3,...n
In the code, only train Documents in , To transform val Documents in , modify train by val that will do

import os
import cv2 as cv
labels_path = './train/label_255'
labels_save_path = './train/label'
lab_names = os.listdir(labels_path)
for s in lab_names:
    label_path = os.path.join(labels_path, s)
    label_save_path = os.path.join(labels_save_path, s)
    label = cv.imread(label_path, 0)
    label[label!=0]=1
    cv.imwrite(label_save_path, label)

2. stay datasets/times/ Create under folder util.py file

The goal is to generate train.txt Document and val.txt file , To transform val.txt file , Just add all of the following code train Switch to val that will do ( There are three )

import os
image_path = './train/image'
label_path = './train/label'
image_names = os.listdir(image_path)
for s in image_names:
    image = os.path.join(image_path, s)
    label = os.path.join(label_path, s)
    with open('train.txt', 'a') as fin:
        fin.write(image[2:] +","+ label[2:] +"\n")
        fin.close()

Network model address

Model modification

1. modify configs/bisenet_customer.py file

 Insert picture description here
n_cats: Number of categories including background , The category here is 2
max_iter: Training times
im_root: Data path
train_im_anns: Just generated train.txt route
val_im_anns: Just generated val.txt route
cropsize: Change to image size
eval_crop: Change to image size ( I don't know the effect )
ims_per_gpu:gpu Number

2. Modify category

This dataset category is 2
If configs/bisenet_customer.py Medium model_type='bisenetv2' modify lib/models/bisenetv2.py In the document n_classes=2

 Insert picture description here
If configs/bisenet_customer.py Medium model_type='bisenetv1' modify lib/models/bisenetv1.py In the document BiSeNetV1(2)
 Insert picture description here

Run the command

--nproc_per_node Do not know what that mean? , there 2 yes gpu The number of

CUDA_VISIBLE_DEVICES=0,1 torchrun --nproc_per_node=2  tools/train_amp.py --config configs/bisenet_customer.py

And it's going to work !!

原网站

版权声明
本文为[I am a little rice]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070518493959.html