การปรับแต่งการปรับแต่งของ U-Net ใน Pytorch สำหรับความท้าทายในการปิดบังภาพ Carvana ของ Kaggle จากภาพความละเอียดสูง
ติดตั้ง cuda
ติดตั้ง pytorch 1.13 หรือใหม่กว่า
ติดตั้งการพึ่งพา
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 --ampรุ่นนี้ได้รับการฝึกฝนตั้งแต่เริ่มต้นด้วยภาพ 5K และทำสัมประสิทธิ์ลูกเต๋า 0.988423 บนภาพทดสอบมากกว่า 100k
สามารถใช้งานได้ง่ายสำหรับการแบ่งส่วนแบบหลายชั้นการแบ่งส่วนภาพบุคคลการแบ่งส่วนทางการแพทย์ ...
หมายเหตุ: ใช้ Python 3.6 หรือใหม่กว่า
อิมเมจนักเทียบท่าที่มีรหัสและการพึ่งพามีอยู่ใน DockerHub คุณสามารถดาวน์โหลดและกระโดดในคอนเทนเนอร์ด้วย (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 โดยค่าเริ่มต้น scale คือ 0.5 ดังนั้นหากคุณต้องการให้ได้ผลลัพธ์ที่ดีกว่า (แต่ใช้หน่วยความจำมากขึ้น) ให้ตั้งเป็น 1
ความแม่นยำแบบผสมอัตโนมัติยังมีอยู่ในธง --amp มป์ ความแม่นยำแบบผสมช่วยให้แบบจำลองใช้หน่วยความจำน้อยลงและเร็วขึ้นใน GPU ล่าสุดโดยใช้เลขคณิต FP16 แนะนำให้ใช้แอมป์
หลังจากฝึกอบรมโมเดลของคุณและบันทึกเป็นแบบ MODEL.pth คุณสามารถทดสอบมาสก์เอาท์พุทบนภาพของคุณผ่าน CLI ได้อย่างง่ายดาย
เพื่อทำนายภาพเดียวและบันทึก:
python predict.py -i image.jpg -o output.jpg
เพื่อทำนายภาพหลายภาพและแสดงโดยไม่บันทึกไว้:
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 คุณสามารถระบุไฟล์โมเดลที่จะใช้กับ --model MODEL.pth PTH
ความคืบหน้าการฝึกอบรมสามารถมองเห็นได้แบบเรียลไทม์โดยใช้น้ำหนักและอคติ เส้นโค้งการสูญเสียเส้นโค้งการตรวจสอบความถูกต้องน้ำหนักและฮิสโตแกรมไล่ระดับสีรวมถึงหน้ากากที่คาดการณ์ไว้จะถูกบันทึกไว้ที่แพลตฟอร์ม
เมื่อเปิดตัวการฝึกอบรมลิงค์จะถูกพิมพ์ในคอนโซล คลิกที่มันเพื่อไปที่แผงควบคุมของคุณ หากคุณมีบัญชี W&B ที่มีอยู่คุณสามารถเชื่อมโยงได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม WANDB_API_KEY ถ้าไม่มันจะสร้างการวิ่งที่ไม่ระบุชื่อซึ่งจะถูกลบโดยอัตโนมัติหลังจาก 7 วัน
มีรูปแบบที่ผ่านการฝึกอบรมไว้สำหรับชุดข้อมูล Carvana นอกจากนี้ยังสามารถโหลดได้จาก Torch.hub:
net = torch . hub . load ( 'milesial/Pytorch-UNet' , 'unet_carvana' , pretrained = True , scale = 0.5 )เครื่องชั่งที่มีอยู่คือ 0.5 และ 1.0
ข้อมูล Carvana มีอยู่ในเว็บไซต์ Kaggle
นอกจากนี้คุณยังสามารถดาวน์โหลดได้โดยใช้สคริปต์ผู้ช่วย:
bash scripts/download_data.sh
ภาพอินพุตและมาสก์เป้าหมายควรอยู่ในโฟลเดอร์ data/imgs และ data/masks ตามลำดับ (โปรดทราบว่าโฟลเดอร์ imgs และ masks ไม่ควรมีโฟลเดอร์ย่อยหรือไฟล์อื่น ๆ เนื่องจากตัวโหลดข้อมูลโลภ) สำหรับ Carvana รูปภาพคือ RGB และหน้ากากเป็นขาวดำ
คุณสามารถใช้ชุดข้อมูลของคุณเองได้ตราบใดที่คุณแน่ใจว่าโหลดได้อย่างถูกต้องใน utils/data_loading.py
กระดาษต้นฉบับโดย Olaf Ronneberger, Philipp Fischer, Thomas Brox:
U-Net: เครือข่าย convolutional สำหรับการแบ่งส่วนภาพชีวการแพทย์