تنفيذ Pytorch من 3D U-Net ومتغيراتها:
UNet3D القياسي 3D U-net على أساس 3D U-Net: تعلم تجزئة حجمية كثيفة من التعليق التوضيحي المتناثر
ResidualUNet3D المتبقية 3D U-NET بناء
ResidualUNetSE3D على غرار ResidualUNet3D مع إضافة كتل الضغط والإثارة بناءً على تجزئة الدلالية التعليمية العميقة لأحجام طبية عالية الدقة. الضغط الأصلي والورقة الإثارة: شبكات الضغط والإثبات
يسمح الرمز بتدريب U-NET لكليهما: تجزئة الدلالية (ثنائية ومتعددة الطبقة) ومشاكل الانحدار (مثل إلغاء الضوضاء ، التعلم deconvolutions).
يتم دعم 2D U-NET أيضًا ، انظر 2DUNET_CONFOCAL أو 2DUNET_DSB2018 على سبيل المثال التكوين. فقط تأكد من الحفاظ على singleton z-dimension في مجموعة بيانات H5 الخاصة بك (أي (1, Y, X) بدلاً من (Y, X) ) ، لأن تحميل البيانات / زيادة البيانات يتطلب موتر من المرتبة 3. يستخدم 2d U-net نفس الطبقات الأناكلية 2D بدلاً من الاهتمامات 3D ذات حجم الكيرنيل (1, 3, 3) لأسباب تتعلق بالأداء.
يجب تخزين بيانات الإدخال في ملفات HDF5. يجب أن تحتوي ملفات HDF5 للتدريب على مجموعتين من البيانات: raw و label . اختياريا ، عند التدريب مع PixelWiseCrossEntropyLoss يجب على واحد توفير مجموعة بيانات weight . يجب أن تحتوي مجموعة البيانات raw على بيانات الإدخال ، في حين أن مجموعة بيانات label في ملصقات الحقيقة الأرضية. يجب أن تحتوي مجموعة بيانات weight الاختيارية على قيم ترجيح وظيفة الخسارة في مناطق مختلفة من الإدخال ويجب أن تكون بنفس حجم مجموعة بيانات label . يعتمد تنسيق مجموعات بيانات raw / label على ما إذا كانت المشكلة ثنائية أو ثلاثية الأبعاد وما إذا كانت البيانات عبارة عن قناة واحدة أو قناة متعددة ، انظر الجدول أدناه:
| 2D | 3D | |
|---|---|---|
| قناة واحدة | (1 ، ص ، س) | (z ، y ، x) |
| متعدد القنوات | (C ، 1 ، Y ، X) | (C ، Z ، Y ، X) |
pytorch-3dunet عبارة عن حزمة متداخلة وتشغيلها على Windows و OS X أيضًا.
pytorch-3dunet هي عبر كوندا/مامبا: conda install -c conda-forge mamba
mamba create -n pytorch-3dunet -c pytorch -c nvidia -c conda-forge pytorch pytorch-cuda=12.1 pytorch-3dunet
conda activate pytorch-3dunet
بعد التثبيت ، يمكن الوصول إلى الأوامر التالية داخل بيئة كوندا: train3dunet لتدريب الشبكة predict3dunet بالتنبؤ (انظر أدناه).
python setup.py install
تأكد من أن pytorch المثبت متوافق مع إصدار CUDA الخاص بك ، وإلا فإن التدريب/التنبؤ سيفشل في تشغيل GPU.
بالنظر إلى أن حزمة pytorch-3dunet تم تثبيتها عبر كوندا كما هو موضح أعلاه ، يمكن للمرء أن يتدرب على الشبكة من خلال التذرع ببساطة:
train3dunet --config <CONFIG>
عندما يكون CONFIG هو المسار إلى ملف تكوين YAML ، والذي يحدد جميع جوانب إجراء التدريب.
من أجل التدريب على بياناتك الخاصة ، فقط توفير مسارات لمجموعات بيانات التدريب والتحقق من HDF5 في التكوين.
يمكن للمرء مراقبة تقدم التدريب مع Tensorboard tensorboard --logdir <checkpoint_dir>/logs/ (تحتاج إلى تثبيت tensorflow في conda env) ، حيث يكون checkpoint_dir هو المسار إلى دليل نقطة التفتيش المحدد في التكوين.
BCEWithLogitsLoss ، DiceLoss ، BCEDiceLoss ، GeneralizedDiceLoss : يجب أن تكون البيانات المستهدفة 4D (قناع ثنائي مستهدف لكل قناة). عند التدريب مع WeightedCrossEntropyLoss ، CrossEntropyLoss ، PixelWiseCrossEntropyLoss يجب أن تكون مجموعة البيانات المستهدفة 3D ، انظر أيضًا وثائق pytorch لفقدان CE: https://pytorch.org/docs/master/generated/torch.nn.crossentropyloss.htmloss.htmlossfinal_sigmoid في قسم التكوين model فقط على وقت الاستدلال (التحقق من الصحة ، الاختبار):GeneralizedDiceLoss التدريب final_sigmoid=True BCEWithLogitsLoss ، DiceLoss ، BCEDiceLossWeightedCrossEntropyLoss ، CrossEntropyLoss ، PixelWiseCrossEntropyLoss ) ، قم بتعيين final_sigmoid=False بحيث يتم تطبيق تطبيع Softmax على الإخراج. بالنظر إلى أن حزمة pytorch-3dunet تم تثبيتها عبر كوندا كما هو موضح أعلاه ، يمكن للمرء تشغيل التنبؤ عبر:
predict3dunet --config <CONFIG>
من أجل التنبؤ ببياناتك الخاصة ، ما عليك سوى توفير المسار إلى النموذج الخاص بك وكذلك المسارات إلى ملفات اختبار HDF5 (انظر مثال test_config_segressation.yaml).
LazyHDF5Dataset و LazyPredictor في التكوين. سيؤدي ذلك إلى حفظ الذاكرة عن طريق تحميل البيانات أثناء الطيران على حساب وقت التنبؤ الأبطأ. انظر test_config_lazy للحصول على مثال على التكوين.save_segmentation: true في قسم predictor من التكوين (انظر test_config_multiclass). افتراضيًا ، إذا كانت وحدات معالجة الرسومات المتعددة متوفرة/سيتم تشغيل التدريب/التنبؤ على جميع وحدات معالجة الرسومات باستخدام DataParalled. إذا لم يكن التدريب/التنبؤ على جميع وحدات معالجة الرسومات المتاحة غير مرغوب فيه ، فقم بتقييد عدد وحدات معالجة الرسومات باستخدام CUDA_VISIBLE_DEVICES ، على سبيل المثال
CUDA_VISIBLE_DEVICES=0,1 train3dunet --config < CONFIG >أو
CUDA_VISIBLE_DEVICES=0,1 predict3dunet --config < CONFIG > BCEWithLogitsLoss (إدخال ثنائي)DiceLoss ( DiceLoss القياسية المعرّفة على أنها 1 - DiceCoefficient المستخدمة للتجزئة الدلالية الثنائية ؛ عندما تكون أكثر من فئتين موجودة في الحقيقة ، فإنه يحسب DiceLoss لكل قناة ويبلغ متوسط القيم)BCEDiceLoss (مزيج خطي من BCE و DICE خسائر ، أي alpha * BCE + beta * Dice ، alpha, beta يمكن تحديدها في قسم loss من التكوين)CrossEntropyLoss (يمكن للمرء تحديد أوزان الفئة عبر weight: [w_1, ..., w_k] في قسم loss في التكوين)PixelWiseCrossEntropyLoss (يمكن للمرء تحديد أوزان لكل بكسل من أجل إعطاء المزيد من التدرج للمناطق المهمة/غير الممثلة تمثيلا في الحقيقة ؛ يجب توفير مجموعة بيانات weight في ملفات H5 للتدريب والتحقق ؛ انظر تكوين العينة في Train_Config.ymlWeightedCrossEntropyLoss (انظر "إدخال مرجح (WCE)" في الورقة أدناه للحصول على شرح مفصل)GeneralizedDiceLoss (انظر "فقدان النرد المعمم (GDL)" في الورقة أدناه للحصول على تفسير مفصل) ملاحظة: استخدم وظيفة الخسارة هذه فقط إذا كانت الملصقات في مجموعة بيانات التدريب غير متوازنة للغاية على سبيل المثال ، فئة واحدة على الأقل من الحجم من الفوكسل أكثر من غيرها. خلاف ذلك ، استخدم DiceLoss القياسية.للحصول على شرح مفصل لبعض وظائف الخسارة المدعومة ، انظر: يتداخل النرد المعمم كدالة لخسارة التعلم العميقة للقطاعات غير المتوازنة للغاية.
MSELoss (يعني فقدان الخطأ التربيعي)L1Loss (يعني فقدان الخطأ المطلق)SmoothL1Loss (أقل حساسية للقيم المتطرفة من mseloss)WeightedSmoothL1Loss (امتداد SmoothL1Loss الذي يسمح لوزن قيم voxel أعلى/أقل من عتبة معينة بشكل مختلف) MeanIoU (يعني التقاطع على الاتحاد)DiceCoefficient (يحسب كل معامل نرد القناة وإرجاع المتوسط) إذا تم تدريب شبكة U 3D للتنبؤ بالحدود الخلوية ، يمكن للمرء استخدام مقاييس تجزئة المثيلات الدلالية التالية (يتم حساب المقاييس أدناه عن طريق تشغيل المكونات المتصلة على خريطة حدود العتبة ومقارنة الحالات الناتجة مع ترتيب مثال الحقيقة الأرضية):BoundaryAveragePrecision (متوسط الدقة المطبقة على خرائط الاحتمالات الحدودية: عتبات الإخراج من الشبكة ، يعمل على تشغيل المكونات المتصلة للحصول على التجزئة وحساب AP بين التجزئة الناتجة والحقيقة الأساسية)AdaptedRandError (انظر http://brainiac2.mit.edu/snemi3d/evaluation للحصول على شرح مفصل)AveragePrecision (انظر https://www.kaggle.com/stkbailey/step-by-step-explanation-of-scoring-metric) إذا لم يتم تحديد MeanIoU سيتم استخدامه افتراضيًا.
PSNR (إشارة الذروة إلى نسبة الضوضاء)MSE (يعني خطأ تربيعي) يمكن العثور على تكوينات التدريب/التنبؤات في 3Dunet_Lightsheet_Boundary. الأوزان النموذجية التي تم تدريبها مسبقًا متوفرة هنا. من أجل استخدام النموذج الذي تم تدريبه مسبقًا على بياناتك الخاصة:
best_checkpoint.pytorch من الرابط أعلاهpredict3dunet --config test_config.ymlpre_trained في تكوين YAML للإشارة إلى best_checkpoint.pytorch مساريمكن تنزيل البيانات المستخدمة للتدريب من مشروع OSF التالي:
تنبؤات شريحة z عينة على مجموعة الاختبار (أعلى: المدخلات الخام ، القاع: تنبؤات الحدود):


يمكن العثور على تكوينات التدريب/التنبؤات في 3Dunet_Confocal_boundary. الأوزان النموذجية التي تم تدريبها مسبقًا متوفرة هنا. من أجل استخدام النموذج الذي تم تدريبه مسبقًا على بياناتك الخاصة:
best_checkpoint.pytorch من الرابط أعلاهpredict3dunet --config test_config.ymlpre_trained في تكوين YAML للإشارة إلى best_checkpoint.pytorch مساريمكن تنزيل البيانات المستخدمة للتدريب من مشروع OSF التالي:
تنبؤات شريحة z عينة على مجموعة الاختبار (أعلى: المدخلات الخام ، القاع: تنبؤات الحدود):


يمكن العثور على تكوينات التدريب/التنبؤات في 3Dunet_Lightsheet_Nuclei. الأوزان النموذجية التي تم تدريبها مسبقًا متوفرة هنا. من أجل استخدام النموذج الذي تم تدريبه مسبقًا على بياناتك الخاصة:
best_checkpoint.pytorch من الرابط أعلاهpredict3dunet --config test_config.ymlpre_trained في تكوين YAML للإشارة إلى best_checkpoint.pytorch مساريمكن تنزيل مجموعات التدريب والتحقق من صحة من مشروع OSF التالي: https://osf.io/thxzn/
تنبؤات شريحة z عينة على مجموعة الاختبار (أعلى: المدخلات الخام ، القاع: تنبؤات النوى):


يمكن تنزيل البيانات من: https://www.kaggle.com/c/data-science-bowl-2018/data
يمكن العثور على تكوينات التدريب/التنبؤ في 2DUnet_DSB2018.
تنبؤات عينة على صورة الاختبار (أعلى: المدخلات الخام ، القاع: تنبؤات النوى):


إذا كنت تريد المساهمة مرة أخرى ، فيرجى تقديم طلب سحب.
إذا كنت تستخدم هذا الرمز لبحثك ، فيرجى الإشارة إلى:
@article {10.7554/eLife.57613,
article_type = {journal},
title = {Accurate and versatile 3D segmentation of plant tissues at cellular resolution},
author = {Wolny, Adrian and Cerrone, Lorenzo and Vijayan, Athul and Tofanelli, Rachele and Barro, Amaya Vilches and Louveaux, Marion and Wenzl, Christian and Strauss, Sören and Wilson-Sánchez, David and Lymbouridou, Rena and Steigleder, Susanne S and Pape, Constantin and Bailoni, Alberto and Duran-Nebreda, Salva and Bassel, George W and Lohmann, Jan U and Tsiantis, Miltos and Hamprecht, Fred A and Schneitz, Kay and Maizel, Alexis and Kreshuk, Anna},
editor = {Hardtke, Christian S and Bergmann, Dominique C and Bergmann, Dominique C and Graeff, Moritz},
volume = 9,
year = 2020,
month = {jul},
pub_date = {2020-07-29},
pages = {e57613},
citation = {eLife 2020;9:e57613},
doi = {10.7554/eLife.57613},
url = {https://doi.org/10.7554/eLife.57613},
keywords = {instance segmentation, cell segmentation, deep learning, image analysis},
journal = {eLife},
issn = {2050-084X},
publisher = {eLife Sciences Publications, Ltd},
}