Implementasi U-NET yang disesuaikan di Pytorch untuk tantangan masking gambar carvana Kaggle dari gambar definisi tinggi.
Instal Cuda
Instal Pytorch 1.13 atau lebih baru
Instal dependensi
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 --ampModel ini dilatih dari awal dengan gambar 5K dan mencetak koefisien dadu 0,988423 pada lebih dari 100 ribu gambar uji.
Ini dapat dengan mudah digunakan untuk segmentasi multiclass, segmentasi potret, segmentasi medis, ...
Catatan: Gunakan Python 3.6 atau yang lebih baru
Gambar Docker yang berisi kode dan dependensi tersedia di Dockerhub. Anda dapat mengunduh dan melompat dalam wadah dengan (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 Secara default, scale 0,5, jadi jika Anda ingin mendapatkan hasil yang lebih baik (tetapi gunakan lebih banyak memori), atur ke 1.
Presisi campuran otomatis juga tersedia dengan bendera --amp . Presisi campuran memungkinkan model untuk menggunakan lebih sedikit memori dan lebih cepat pada GPU terbaru dengan menggunakan aritmatika FP16. AMP disarankan.
Setelah melatih model Anda dan menyimpannya ke MODEL.pth , Anda dapat dengan mudah menguji topeng output pada gambar Anda melalui CLI.
Untuk memprediksi satu gambar dan menyimpannya:
python predict.py -i image.jpg -o output.jpg
Untuk memprediksi banyak gambar dan menunjukkannya tanpa menyimpannya:
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 Anda dapat menentukan file model mana yang akan digunakan dengan --model MODEL.pth .
Kemajuan pelatihan dapat divisualisasikan secara real-time menggunakan bobot & bias. Kurva kehilangan, kurva validasi, bobot dan histogram gradien, serta topeng yang diprediksi dicatat ke platform.
Saat meluncurkan pelatihan, tautan akan dicetak di konsol. Klik untuk pergi ke dasbor Anda. Jika Anda memiliki akun W&B yang ada, Anda dapat menautkannya dengan mengatur variabel lingkungan WANDB_API_KEY . Jika tidak, itu akan membuat menjalankan anonim yang secara otomatis dihapus setelah 7 hari.
Model pretrained tersedia untuk dataset Carvana. Itu juga dapat dimuat dari obor.hub:
net = torch . hub . load ( 'milesial/Pytorch-UNet' , 'unet_carvana' , pretrained = True , scale = 0.5 )Skala yang tersedia adalah 0,5 dan 1,0.
Data Carvana tersedia di situs web Kaggle.
Anda juga dapat mengunduhnya menggunakan skrip helper:
bash scripts/download_data.sh
Gambar input dan masker target harus ada di folder data/imgs dan data/masks masing-masing (perhatikan bahwa folder imgs dan masks tidak boleh berisi sub-folder atau file lain, karena loader data serakah). Untuk carvana, gambar adalah RGB dan topeng berwarna hitam dan putih.
Anda dapat menggunakan dataset Anda sendiri selama Anda memastikan itu dimuat dengan benar di utils/data_loading.py .
Kertas asli oleh Olaf Ronneberger, Philipp Fischer, Thomas Brox:
U-Net: Jaringan Konvolusional untuk Segmentasi Gambar Biomedis