Implementação personalizada da rede U em Pytorch para o desafio de mascaramento de imagem de Carvana de Kaggle de imagens de alta definição.
Instale o CUDA
Instale o Pytorch 1.13 ou mais tarde
Instalar dependências
pip install -r requirements.txtbash scripts/download_data.sh
python train.py --ampcurl https://get.docker.com | sh && sudo systemctl --now enable dockerdistribution= $( . /etc/os-release ; echo $ID$VERSION_ID )
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
&& curl -s -L https://nvidia.github.io/nvidia-docker/ $distribution /nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart dockersudo docker run --rm --shm-size=8g --ulimit memlock=-1 --gpus all -it milesial/unetbash scripts/download_data.sh
python train.py --ampEste modelo foi treinado do zero com imagens de 5k e obteve um coeficiente de dados de 0,988423 em mais de 100 mil imagens de teste.
Pode ser facilmente usado para segmentação multiclasse, segmentação de retratos, segmentação médica, ...
Nota: Use Python 3.6 ou mais recente
Uma imagem do docker que contém o código e as dependências está disponível no DockerHub. Você pode baixar e pular no contêiner com (Docker> = 19.03):
docker run -it --rm --shm-size=8g --ulimit memlock=-1 --gpus all milesial/unet> python train.py -h
usage: train.py [-h] [--epochs E] [--batch-size B] [--learning-rate LR]
[--load LOAD] [--scale SCALE] [--validation VAL] [--amp]
Train the UNet on images and target masks
optional arguments:
-h, --help show this help message and exit
--epochs E, -e E Number of epochs
--batch-size B, -b B Batch size
--learning-rate LR, -l LR
Learning rate
--load LOAD, -f LOAD Load model from a .pth file
--scale SCALE, -s SCALE
Downscaling factor of the images
--validation VAL, -v VAL
Percent of the data that is used as validation (0-100)
--amp Use mixed precision Por padrão, a scale é 0,5; portanto, se você deseja obter melhores resultados (mas use mais memória), defina -o como 1.
A precisão mista automática também está disponível com o sinalizador --amp . A precisão mista permite que o modelo use menos memória e seja mais rápido nas GPUs recentes usando a aritmética FP16. A ativação do amplificador é recomendado.
Depois de treinar seu modelo e salvá -lo para MODEL.pth .
Para prever uma única imagem e salvá -la:
python predict.py -i image.jpg -o output.jpg
Para prever várias imagens e mostrá -las sem salvá -las:
python predict.py -i image1.jpg image2.jpg --viz --no-save
> python predict.py -h
usage: predict.py [-h] [--model FILE] --input INPUT [INPUT ...]
[--output INPUT [INPUT ...]] [--viz] [--no-save]
[--mask-threshold MASK_THRESHOLD] [--scale SCALE]
Predict masks from input images
optional arguments:
-h, --help show this help message and exit
--model FILE, -m FILE
Specify the file in which the model is stored
--input INPUT [INPUT ...], -i INPUT [INPUT ...]
Filenames of input images
--output INPUT [INPUT ...], -o INPUT [INPUT ...]
Filenames of output images
--viz, -v Visualize the images as they are processed
--no-save, -n Do not save the output masks
--mask-threshold MASK_THRESHOLD, -t MASK_THRESHOLD
Minimum probability value to consider a mask pixel white
--scale SCALE, -s SCALE
Scale factor for the input images Você pode especificar qual arquivo de modelo a ser usado com --model MODEL.pth .
O progresso do treinamento pode ser visualizado em tempo real usando pesos e vieses. Curvas de perda, curvas de validação, pesos e histogramas de gradiente, bem como máscaras previstas são registradas na plataforma.
Ao lançar um treinamento, um link será impresso no console. Clique nele para ir ao seu painel. Se você possui uma conta W&B existente, poderá vinculá -la definindo a variável WANDB_API_KEY AIMBORAL. Caso contrário, criará uma corrida anônima que é excluída automaticamente após 7 dias.
Um modelo pré -treinado está disponível para o conjunto de dados Carvana. Também pode ser carregado na tocha.hub:
net = torch . hub . load ( 'milesial/Pytorch-UNet' , 'unet_carvana' , pretrained = True , scale = 0.5 )As escalas disponíveis são de 0,5 e 1,0.
Os dados do Carvana estão disponíveis no site da Kaggle.
Você também pode baixá -lo usando o script auxiliar:
bash scripts/download_data.sh
As imagens de entrada e as máscaras de destino devem estar nas pastas de data/imgs e data/masks , respectivamente (observe que a pasta imgs e masks não deve conter nenhum sub-perfolador ou qualquer outro arquivo, devido ao carregador de dados ganancioso). Para o Carvana, as imagens são RGB e as máscaras são preto e branco.
Você pode usar seu próprio conjunto de dados, desde que ele seja carregado corretamente no utils/data_loading.py .
Artigo original de Olaf Ronneberger, Philipp Fischer, Thomas Brox:
U-Net: redes convolucionais para segmentação de imagem biomédica