ایک ریڈیولوجسٹ سی ٹی اسکین پر ٹیومر کو اس کے پار ایک سیدھی لکیر کھینچ کر نشان زد کر سکتا ہے۔ ایک مکمل 3D سیگمنٹیشن بنانے کے لیے ٹیومر کو اس سلائس پر خاکہ بنانے کی ضرورت ہوتی ہے جس میں یہ ظاہر ہوتا ہے، جس میں زیادہ وقت لگتا ہے۔
یہ ٹیوٹوریل بتاتا ہے کہ Lumina کیسے کام کرتا ہے۔ ایک ایسا نظام جو نشان زد ٹیومر کا 3D سیگمنٹیشن ماسک بنانے کے لیے CT اسکین اور ایک RECIST لائن کا استعمال کرتا ہے۔
Lumina کے لیے تیار کیا گیا تھا: FLARE 2026 Pan-Am Split Challenge. سسٹم کو 8 جی بی میموری کی حد اور 60 سیکنڈ انفرنس کی حد کے ساتھ CPUs پر چلانے کے لیے ڈیزائن کیا گیا ہے۔
اس ٹیوٹوریل میں ڈیزائن کے کلیدی فیصلوں، نفاذ کی تفصیلات، اور تجربات کا احاطہ کیا گیا ہے جنہوں نے حتمی نظام تشکیل دیا۔
ہم کیا احاطہ کریں گے:
لومینا کیا کرتی ہے۔
ایک ریڈیولوجسٹ ٹیومر کی پیمائش اس کے سب سے طویل دکھائی دینے والے قطر میں ایک لکیر کھینچ کر کر سکتا ہے۔ یہ ہے RECIST پیمائش (ٹھوس ٹیومر میں رسپانس ایویلیوایشن کرائیٹیریا) کینسر کے علاج کے دوران ٹیومر کے ردعمل کی پیمائش کے لیے بڑے پیمانے پر استعمال ہوتا ہے۔
RECIST لائنیں 2D قطر کے مارکر کی پیمائش کرتی ہیں۔ یہ ٹیومر کی مکمل 3D شکل کی وضاحت نہیں کرتا ہے۔
Lumina ان پیمائشوں کو 3D سیگمنٹیشن ماڈل بنانے کے لیے استعمال کرتا ہے۔
کام کو اس طرح بیان کیا جا سکتا ہے:
ان پٹ: 3D CT اسکین ایک ٹیومر اور 2D RECIST لائن دکھا رہا ہے۔
حساب کتاب: متعلقہ ٹیومر کا 3D ماسک (ایک لیبل فی ووکسیل کے ساتھ)۔
کوئی راستہ نہیں ووکسیل ایک پکسل کے 3D برابر ہے۔ ہر ووکسیل CT اسکین میں ٹشو کی ایک چھوٹی مقدار کی نمائندگی کرتا ہے۔
RECIST لائن ماڈل کو بتاتی ہے کہ کس ٹیومر کو سیگمنٹ کرنا ہے۔ اس کے بعد ماڈل ٹیومر کی تین جہتی حد کی پیش گوئی کرتا ہے۔
یہ تقسیم کے مسئلے کو مزید مخصوص بناتا ہے کیونکہ ماڈل کو اسکین میں تمام ممکنہ ٹیومر کی شناخت کرنے کی ضرورت نہیں ہوتی ہے۔
لومینا پائپ لائن کا جائزہ
پورے عمل میں کئی مراحل ہوتے ہیں۔ ہم ایک 3D CT اسکین اور ایک ٹیومر کو نشان زد کرنے والی RECIST لائن کے ساتھ شروع کرتے ہیں۔ اس کے بعد ہم لائنوں کو اضافی ان پٹ چینلز میں تبدیل کرتے ہیں، تصویر کو تراشتے اور دوبارہ نمونہ بناتے ہیں، اور تینوں چینلز کو 3D سیگمنٹیشن نیٹ ورک کے ذریعے منتقل کرتے ہیں۔
نیٹ ورک ایک امکانی نقشہ تیار کرتا ہے جو دوبارہ نمونہ سازی، حد بندی، اور منسلک اجزاء کے انتخاب کے ذریعے حتمی 3D ٹیومر ماسک میں تبدیل ہو جاتا ہے۔

اہم اقدامات ہیں:
-
CT اسکین اور RECIST مارکر کے لیے تیاری کریں۔
-
اضافی نیٹ ورک ان پٹ میں RECIST لائن کو انکوڈ کرتا ہے۔
-
تصویر کو کاٹ کر ایک عام گرڈ میں دوبارہ نمونہ بنائیں۔
-
3D سیگمنٹیشن نیٹ ورکس کا استعمال کرتے ہوئے ٹیومر کے امکانی نقشوں کی پیش گوئی کرنا۔
-
امکانی نقشے کو تراشیں اور اسے بائنری ماسک میں تبدیل کریں۔
-
اس بات کو یقینی بنانے کے لیے کہ پورا کیس رن ٹائم اور میموری کی حدود کے اندر رہے CPU ہیورسٹکس کو کنٹرول کرتا ہے۔
شرطیں
آپ اس ٹیوٹوریل سے مزید فائدہ اٹھائیں گے اگر آپ کے پاس ہے:
کسی تفصیلی طبی پس منظر کی ضرورت نہیں ہے۔ ٹیوٹوریل میڈیکل امیجنگ کے تصورات کا تعارف اور وضاحت کرتا ہے۔
نفاذ NumPy، SciPy، PyTorch، اور MONAI کا استعمال کرتا ہے، PyTorch پر بنایا گیا میڈیکل امیجنگ فریم ورک۔
مرحلہ 1: کوڈنگ سے پہلے ڈیٹا کا جائزہ لیں۔
ہمارا ڈیٹا مندرجہ ذیل فراہم کیا گیا تھا: .npz یہ فائل NumPy میں ایک کمپریسڈ اری فارمیٹ ہے۔
ہر فائل میں درج ذیل سے ملتے جلتے فیلڈز ہوتے ہیں۔
imgs # the CT scan, a 3D array
recist # the marker lines, same shape, one integer per tumour
spacing # how many millimetres apart the voxels are
origin # where the scan sits in the scanner's coordinates
direction # how the scan is rotated
gts # the ground-truth segmentation, training files only
ماڈل بنانے سے پہلے، ہم نے تصویری اقدار، صف کی شکلیں، اور مقامی میٹا ڈیٹا کا معائنہ کیا۔
دو تفصیلات خاص طور پر اہم تھیں۔
اسکین کی چمک پہلے ہی ایڈجسٹ کر دی گئی ہے۔
CT سکینر عام طور پر Hounsfield یونٹس میں تصاویر محفوظ کرتے ہیں۔ پانی میں تقریباً 0 HU ہے، جبکہ ہڈی 1000 HU سے زیادہ ہو سکتی ہے۔
اس ڈیٹاسیٹ میں، اسکینز کو پہلے ہی 0 سے 255 کی ایک مقررہ حد میں تبدیل کر دیا گیا ہے۔ اصل Hounsfield یونٹ کی قدریں دستیاب نہیں ہیں۔
اس کا مطلب ہے کہ عام سی ٹی ونڈونگ کے عمل کو اصل اقدار پر لاگو نہیں کیا جا سکتا۔ اس کے بجائے، ہم نے فراہم کردہ ڈیٹا کی شدت کی تقسیم کی پیمائش کی۔
مثال کے طور پر، 53.4% ووکسلز کی قدر بالکل 0 تھی، جو جسم سے باہر کی ہوا کے مساوی تھی۔
کوآرڈینیٹ آرڈر کا مسئلہ
کہ spacing صف اس طرح محفوظ ہے: (X, Y, Z)NumPy صفوں کو اس طرح ترتیب دیا گیا ہے: (Z, Y, X).
ان دو اصولوں کو ملانے کے نتیجے میں غلط مقامی پیمائش ہو سکتی ہے۔
ان پٹ باؤنڈری پر ایک بار نقاط کو تبدیل کریں اور (Z, Y, X) اندرونی طور پر، درج ذیل قوانین لاگو ہوتے ہیں:
def _to_zyx(vec3, order):
vec3 = np.asarray(vec3, dtype=float).ravel()
if order == "xyz":
return vec3[::-1].copy() # (x, y, z) -> (z, y, x)
if order == "zyx":
return vec3.copy()
raise ValueError(f"unknown geometry_order {order!r}")
ایک اہم سبق یہ ہے کہ پری پروسیسنگ پائپ لائن کو ڈیزائن کرنے سے پہلے متعدد فائلوں کی جانچ کریں۔
چیک کریں:
-
صف کی شکل
-
شدت کی حد
-
ووکسیل وقفہ کاری
-
ثالثی کے قواعد
-
میٹا ڈیٹا
-
دستیاب لیبلز
یہ نہ سمجھیں کہ آپ کا ڈیٹا دوسرے CT ڈیٹا سیٹس یا ٹیوٹوریلز کے اصولوں پر عمل کرتا ہے۔
مرحلہ 2: RECIST لائن کو نیٹ ورک ان پٹ میں تبدیل کریں۔
ایک نیورل نیٹ ورک ان پٹ چینلز کا ایک ڈھیر وصول کرتا ہے۔ سی ٹی اسکین پہلا چینل فراہم کرتا ہے۔ پھر یہ RECIST لائن کو ایک فارمیٹ میں پیش کرتا ہے جسے نیٹ ورک استعمال کر سکتا ہے۔
ہم تین چینلز استعمال کرتے ہیں:

-
سی ٹی اسکین
-
RECIST لائن، 3 ووکسلز موٹی کھینچی گئی۔
-
ہر اختتامی نقطہ کے ارد گرد Gaussians کے ساتھ اینڈ پوائنٹ ہیٹ میپ
دو اختتامی نقطے ناپے گئے قطر کی وضاحت کرتے ہیں اور نیٹ ورک کو RECIST پیمائش کا مقام اور لمبائی فراہم کرتے ہیں۔
اختتامی معلومات کا اظہار گاوسی فنکشن کا استعمال کرتے ہوئے کیا جاتا ہے۔ ہر گاوسی کی اپنی منزلوں کے قریب اعلیٰ قدریں ہوتی ہیں اور فاصلے کے ساتھ آہستہ آہستہ کم ہوتی جاتی ہیں۔
def _endpoint_heatmap(endpoints_zyx, shape, sigma):
d, h, w = (int(s) for s in shape)
heat = np.zeros((d, h, w), dtype=np.float32)
rad = max(1, int(np.ceil(3 * sigma)))
two_s2 = 2.0 * sigma * sigma
for z0, y0, x0 in np.asarray(endpoints_zyx, float):
zc, yc, xc = int(round(z0)), int(round(y0)), int(round(x0)))
zl, zr = max(0, zc - rad), min(d, zc + rad + 1)
yl, yr = max(0, yc - rad), min(h, yc + rad + 1)
xl, xr = max(0, xc - rad), min(w, xc + rad + 1)
zz, yy, xx = np.mgrid[
zl:zr, yl:yr, xl:xr
].astype(np.float32)
g = np.exp(
-((zz-z0)**2 + (yy-y0)**2 + (xx-x0)**2) / two_s2
)
np.maximum(
heat[zl:zr, yl:yr, xl:xr],
g,
out=heat[zl:zr, yl:yr, xl:xr]
)
return heat
Gaussians کا حساب صرف ہر نقطہ کے ارد گرد ایک چھوٹے سے علاقے میں کیا جاتا ہے۔
کے ساتھ sigma = 1.5قدریں اختتامی نقطہ سے چند ووکسلز کے فاصلے پر بہت چھوٹی ہو جاتی ہیں۔ لہذا پورے حجم پر گاوسی کا حساب لگانا غیر ضروری کام ہوگا۔
آپ کو مطلوبہ قرارداد پر لکیریں کھینچیں۔
یہ نیٹ ورک کے لیے مطلوبہ ریزولوشن پر دونوں اینڈ پوائنٹس سے RECIST لائنوں کو بھی دوبارہ بناتا ہے۔
میں ایک ریزولوشن میں لائنیں نہیں بناتا اور پھر تصویر کو فٹ کرنے کے لیے ان کی پیمائش کرتا ہوں۔ پتلی لکیروں کا سائز تبدیل کرنے سے وہ پتلی یا زیادہ ٹوٹ سکتی ہیں۔ اگر آپ لائن کو اختتامی نقطہ سے دوبارہ تخلیق کرتے ہیں، تو اشارے تصویری ریزولوشن کے ساتھ مطابقت پذیر رہیں گے۔
مرحلہ 3: تمام ٹیومر کو ایک مشترکہ گرڈ پر سیدھ کریں۔
CT اسکینوں میں مختلف ووکسیل اسپیسنگ ہوسکتی ہے۔
مثال کے طور پر، ایک اسکین میں پتلی سلائس ہوسکتی ہے اور دوسرے اسکین میں زیادہ موٹی سلائس ہوسکتی ہے۔ لہذا، ووکسلز کی ایک ہی تعداد سے ظاہر ہونے والا جسمانی سائز اسکین سے اسکین تک مختلف ہوسکتا ہے۔
ہر ظاہر شدہ ٹیومر کے لیے، ہم ایک مقررہ سائز کی فصل بناتے ہیں اور اسے ایک مقررہ ووکسیل وقفے پر دوبارہ نمونہ بناتے ہیں۔
ہماری ترتیب مندرجہ ذیل ہے۔
target_spacing: [2.5, 1.0, 1.0] # mm per voxel: z, y, x
crop_size: [64, 160, 160] # voxels: z, y, x
جہاز کے اندر کے طول و عرض مندرجہ ذیل فزیکل فیلڈز آف ویو کے مساوی ہیں:
160 × 160 mm
لہذا، نیٹ ورک مسلسل معلومات حاصل کرتا ہے. 64 × 160 × 160 ان پٹ
تربیتی ڈیٹا سے حاصل کردہ ہدف وقفہ استعمال کریں۔ 2.5 ملی میٹر سلائس سپیسنگ ٹریننگ سیٹ میں مرکزی سلائس سپیسنگ کے قریب ہے۔
ہم تربیتی ڈیٹا میں گھاووں کے سائز کی تقسیم کی بنیاد پر 160 ملی میٹر فصل استعمال کرتے ہیں۔ اس میں زخم کی حد کا 99 واں فیصد شامل ہے۔
شدت کو معمول بنانا
ہم تربیتی فصلوں سے شمار کیے گئے اعدادوشمار کا استعمال کرتے ہوئے CT کی شدت کی قدروں کو بھی معمول پر لاتے ہیں۔
intensity_mean: 96.88
intensity_std: 79.00
نارملائزیشن مندرجہ ذیل ہے:
image = (image - 96.88) / 79.00
ہم صرف تربیتی ڈیٹا کا استعمال کرتے ہوئے ان اعدادوشمار کا حساب لگاتے ہیں۔
توثیق اور ٹیسٹ ڈیٹا کے لیے ایک جیسی اقدار کا استعمال کریں۔ ہم ان اعدادوشمار کو توثیق یا ٹیسٹ سیٹ پر دوبارہ شمار نہیں کرتے ہیں۔ کیونکہ اس سیٹ میں موجود معلومات پری پروسیسنگ کو متاثر کر سکتی ہے۔
Lumina کے لیے، تربیتی اعداد و شمار کے اعداد و شمار ہیں۔ 96.88 اور معیاری انحراف ہے۔ 79.00. ہم ان اقدار کو ایک ترتیب میں محفوظ کرتے ہیں اور تربیت، توثیق اور تخمینہ کے دوران وہی پری پروسیسنگ استعمال کرتے ہیں۔
مرحلہ 4: ایک 3D سیگمنٹیشن نیٹ ورک بنانا
یہاں ہم MONAI کا DynUNet استعمال کریں گے۔
DynUNet ایک 3D U-Net فن تعمیر ہے جو nnU-Net کے خیالات پر مبنی ہے اور قابل ترتیب نیٹ ورک کی گہرائی، کرنل، سٹریڈ، اور بقایا کنکشن کو سپورٹ کرتا ہے۔

U-Net دو اہم حصوں پر مشتمل ہے:
-
انکوڈر آہستہ آہستہ اپنی مقامی ریزولوشن کو کم کرتا ہے کیونکہ یہ تیزی سے اعلی سطحی خصوصیات سیکھتا ہے۔
-
ڈیکوڈر پھر سیگمنٹیشن میپ تیار کرنے کے لیے مقامی ریزولوشن کو بحال کرتا ہے۔
کنکشن کو چھوڑیں انکوڈر سے ڈیکوڈر تک عمدہ مقامی تفصیلات منتقل کرتے ہیں۔ اس سے ڈیکوڈر کو ٹیومر کی حدود کو بحال کرنے میں مدد ملتی ہے جب حتمی انقطاع پیدا ہوتا ہے۔
Lumina کے لیے، نیٹ ورک کو تین چینلز موصول ہوتے ہیں:
-
سی ٹی
-
RECIST لائن
-
اختتامی نقطہ ہیٹ میپ۔
ماڈل کی ترتیب حسب ذیل ہے:
from monai.networks.nets import DynUNet
# 5 levels; the first downsample skips z (see below).
kernels = [[3, 3, 3]] * 5
strides = [[1, 1, 1], [1, 2, 2], [2, 2, 2], [2, 2, 2], [2, 2, 2]]
model = DynUNet(
spatial_dims=3,
in_channels=3, # CT + line + endpoint blobs
out_channels=1, # one probability per voxel
kernel_size=kernels,
strides=strides,
upsample_kernel_size=strides[1:],
filters=features,
res_block=True,
)
کہ strides فہرستیں تنظیم کا ایک اہم حصہ ہیں۔ ووکسلز سائز میں مختلف ہوتے ہیں۔ وہ ٹکڑوں کے درمیان 2.5 ملی میٹر کے فاصلے پر ہیں، لیکن ہر سلائس کے اندر صرف 1.0 ملی میٹر کا فاصلہ ہے۔ کسی بھی سطح پر تینوں جہتوں کو کم کرنے سے انٹر سلائس تفصیل بہت جلد ضائع ہو جاتی ہے۔ لہذا، ہم پہلے نمونے لینے کے پہلے مرحلے میں z کے طول و عرض کو بغیر کسی تبدیلی کے رکھتے ہیں۔ یہ تینوں سمتوں میں مفید معلومات کو محفوظ رکھنے میں مدد کرتا ہے۔
Lumina کا مرکزی ڈیزائن کا کام ان پٹ کی نمائندگی، پری پروسیسنگ، تربیتی حکمت عملی، پوسٹ پروسیسنگ، اور CPU تخمینہ سلوک پر مرکوز ہے۔
مرحلہ 5: نقصان کا فنکشن استعمال کریں جس میں باؤنڈری کی معلومات شامل ہوں۔
تربیت کے دوران، نیٹ ورک کو یہ اندازہ لگانے کے لیے ایک طریقہ کی ضرورت ہوتی ہے کہ اس کی پیشین گوئیاں اصل تقسیم سے کتنی مختلف ہیں۔ یہ پیمائش نقصان کی تقریب. نیٹ ورک ان نقصانات کو کم کرنے کے لیے وزن کو ایڈجسٹ کرتا ہے۔
Lumina کے لیے، ہم دو عام نقصانات کو یکجا کرتے ہیں۔ نرد کا نقصان اور بائنری کراس اینٹروپی (بی سی ای).
نرد کا نقصان
نرد کا نقصان پیش گوئی شدہ اور حقیقی ٹیومر والے علاقوں کے درمیان اوورلیپ پر مرکوز ہے۔
یہ اس وقت مفید ہے جب آپ اس بات کو یقینی بنانا چاہتے ہیں کہ پیشین گوئی والے علاقے کا مجموعی سائز اور شکل حوالہ سیگمنٹیشن سے مماثل ہے۔
بائنری کراس اینٹروپی
بائنری کراس اینٹروپی ووکسیل سطح پر کام کرتی ہے۔ ہر ووکسیل کے لیے، نیٹ ورک 0 اور 1 کے درمیان امکان کی پیش گوئی کرتا ہے۔
اصل قدریں ہیں:
BCE نیٹ ورک کو جرمانہ کرتا ہے جب پیشین گوئی کا امکان اصل قدر سے مختلف ہوتا ہے۔
مثال کے طور پر، ایک ٹیومر ووکسیل کی پیش گوئی کا امکان ہے1جرمانہ چھوٹا ہے۔ جرمانہ بڑا ہے اگر نیٹ ورک ٹیومر ووکسلز کے پس منظر کے خلاف معتبر طریقے سے پیش گوئی کرتا ہے۔
ہم ان دونوں نقصانات کو جوڑ کر یکجا کرتے ہیں۔
loss = dice_loss + bce_loss
دو شرائط مختلف تربیتی اشارے فراہم کرتی ہیں۔
حدود کی معلومات شامل کریں۔
ڈائس اور بی سی ای زخم کی حدود پر کوئی خاص علاج نہیں کرتے ہیں۔
یہ اس لیے اہم ہے کیونکہ سیگمنٹیشن میں مجموعی طور پر اچھا اوورلیپ ہو سکتا ہے جبکہ ابھی بھی غلط حدود موجود ہیں۔
Lumina دونوں کا استعمال کرتے ہوئے اندازہ کیا جاتا ہے:
-
نردعلاقائی اوورلیپ کی پیمائش کریں۔
-
نارملائزڈ سرفیس ڈائس (NSD)ایک مخصوص فاصلے کے اندر سطح کے اتفاق کی پیمائش کرتا ہے۔
سرکاری چیلنج رواداری مندرجہ ذیل ہیں: 1 ملی میٹر.
ہم نیٹ ورک کو کناروں کے بارے میں اضافی معلومات فراہم کرنے کے لیے ایج بینڈ نقصان کی اصطلاح شامل کرتے ہیں۔
زمینی سچائی کی سطح کے ارد گرد ایک پتلی بینڈ بنانے کے لیے ہدف کے ماسک کو پھیلائیں اور معاہدہ کریں۔
shell = dilate(target) & ~erode(target)
loss = (
dice_loss
+ bce_loss
+ 0.5 * bce_loss_on(shell)
)
تو تینوں اصطلاحات مختلف کردار ادا کرتی ہیں۔
-
ڈائس کا نقصان: پورا علاقہ اوورلیپ
-
BCE: ووکسیل سطح کی پیشن گوئی کی درستگی
-
بارڈر لائن نقصان: زخم کی سطح کے قریب ووکسلز پر خصوصی توجہ دی جاتی ہے۔
اضافی حد کی شرائط کو 0.5 کا وزن دیا گیا ہے۔
کنارے کے نقصان کا موازنہ
MONAI بھی پیش کرتا ہے۔ HausdorffDTLossفاصلاتی تبدیلی پر مبنی فارمولہ استعمال کرتا ہے۔
تربیت کے دوران مختلف طریقوں کی کمپیوٹیشنل لاگت کا موازنہ کیا جا سکتا ہے۔
| نقصان | وقت فی قدم |
|---|---|
| ڈائس + کراس اینٹروپی | 7ms |
| ہمارا (بارڈر گارڈ) | 203ms |
| MONAI HausdorffDTLoss | 957ms |
Hausdorff فاصلے کے نقصان کے لیے تیز رفتار راستے کی ضرورت ہے: cupy یہ ایک لائبریری ہے جو ہمارے تربیتی ماحول میں نہیں بن سکتی۔ سی پی یو کے نفاذ بہت زیادہ مہنگے تھے۔
ہمارا ایج بینڈ اپروچ زیادہ سے زیادہ پولنگ کی بنیاد پر مورفولوجیکل آپریشنز کا استعمال کرتا ہے اور اس کی کمپیوٹیشنل لاگت کم ہے۔
باؤنڈری کی شرائط نے بڑے ٹیومر کے لیے ڈائس کو اس طرح بہتر کیا: 0.0136. نتائج چھوٹے ٹیومر میں مخلوط تھے. 15 میں بہتری اور 13 خراب ہوئے۔
مرحلہ 6: امکانی نقشہ کو سیگمنٹیشن ماسک میں تبدیل کریں۔
سیگمنٹیشن نیٹ ورک امکانی نقشہ تیار کرتا ہے۔ اس نقشے میں ہر ووکسل میں 0 اور 1 کے درمیان ایک قدر ہوتی ہے جو اس امکان کی نشاندہی کرتی ہے کہ ووکسل کا تعلق ٹیومر سے ہے۔ اب ہم اس امکانی نقشے کو حتمی 3D سیگمنٹیشن ماسک میں تبدیل کر سکتے ہیں۔ تین مراحل ہیں:
-
امکانی نقشے کو اصل CT گرڈ پر دوبارہ نمونہ کریں۔
-
بائنری ماسک بنانے کے لیے ایک حد لگائیں۔
-
جڑے ہوئے اجزاء کو RECIST لائن سے منسلک رکھیں۔
امکانات کا نقشہ دوبارہ نمونہ کرنا
پری پروسیسنگ کے دوران، CT امیجز کو کاٹ کر ایک مقررہ سائز میں دوبارہ نمونہ بنایا جاتا ہے۔ 64 × 160 × 160 ووکسیل لہذا، نیٹ ورک پروسیس شدہ گرڈ کے لیے پیشین گوئیاں تیار کرتا ہے۔
حتمی ماسک بنانے سے پہلے امکان کا نقشہ اصل CT امیج گرڈ پر واپس جائیں۔
prob_original = resample_to_original_grid(
probability_map,
original_image
)
ہم یہ حد کی وضاحت کرنے سے پہلے کرتے ہیں تاکہ امکانی قدروں کو اصل گرڈ میں داخل کیا جا سکے۔ یہ حتمی حد کی زیادہ درست نمائندگی کی اجازت دیتا ہے۔
حد لگائیں۔
نیٹ ورک ان کے درمیان امکانات پیدا کرتا ہے: 0 اور 1 ہر ووکسیل کے لیے۔ ہم ایک حد استعمال کرتے ہیں۔ 0.35 اس امکانی نقشے کو بائنری سیگمنٹیشن ماسک میں تبدیل کریں۔
mask = prob_original >= 0.35
کم از کم امکان کے ساتھ ووکسلز 0.35 یہ پیش گوئی شدہ ٹیومر کا حصہ بن جاتا ہے اور باقی ووکسلز کو پس منظر کے طور پر سمجھا جاتا ہے۔
دہلیز 0.35 اسے Lumina کے توثیق کے تجربات کے دوران منتخب کیا گیا تھا اور یہ حتمی تخمینہ پائپ لائن کا حصہ ہے۔
ٹیومر کو RECIST لائن سے منسلک رکھیں
تھریشولڈ ماسک میں چھوٹے منقطع علاقے شامل ہو سکتے ہیں۔ ان میں سے کچھ علاقوں کا تعلق ٹیومر سے نہیں ہوسکتا ہے۔
چونکہ ہم جانتے ہیں کہ ٹیومر کو کہاں نشان زد کیا گیا ہے، ہم متعلقہ منسلک جزو کو منتخب کرنے کے لیے RECIST لائن کا استعمال کرتے ہیں۔
components = connected_components(mask)
tumor_mask = select_component(
components,
recist_line
)
ہم ان اجزاء کو رکھتے ہیں جو RECIST لائن کے ساتھ کاٹتے ہیں حتمی ٹیومر سیگمنٹیشن میں۔
اگر RECIST لائن تھریشولڈ سیٹ کرنے کے بعد کسی بھی جز کو کاٹتی نہیں ہے، تو لائن کے وسط پوائنٹ کے قریب ترین جزو کو فال بیک کے طور پر استعمال کیا جاتا ہے۔
ان کاموں کی ترتیب اہم ہے۔
Probability map
↓
Resample to original CT grid
↓
Apply threshold (0.35)
↓
Connected-component selection
↓
Final 3D tumor mask
میں حد مقرر کرنے سے پہلے دوبارہ نمونے کیوں انجام دیتا ہوں؟
ہم ہیں حد سے پہلے امکان کا نقشہ امکانی قدروں کو اصل CT گرڈ میں انٹرپولیٹ کیا جا سکتا ہے۔ ترقی کے دوران، ہم نے دوبارہ نمونے لینے سے پہلے تھریشولڈ ٹیسٹنگ بھی کی۔ اس نقطہ نظر کے نتیجے میں گھاووں کی حدود میں چھوٹی تبدیلیاں ہوئیں کیونکہ بائنری ماسک پر انٹرپولیشن کا طریقہ پہلے ہی لاگو کیا گیا تھا۔
امکانی نقشہ کا استعمال انٹرپولیشن کے دوران مزید معلومات کو محفوظ رکھتا ہے اور حتمی تقسیم کے لیے زیادہ درست حدود فراہم کرتا ہے۔
نتیجہ اصل CT اسکین کے ساتھ منسلک ایک 3D بائنری ماسک ہے، جو تشخیص یا تصور کے لیے تیار ہے۔
مرحلہ 7: تیز کریں اور CPU انفرنس کی مستقل مزاجی کو یقینی بنائیں
CPU اور میموری کی حدود قیاس ڈیزائن کو متاثر کرتی ہیں۔
ہم متعدد تکنیکوں کو چیلنج کی رکاوٹوں کے اندر رکھنے کے لیے استعمال کرتے ہیں۔
دھاگوں کی مقررہ تعداد
مختلف نمبروں کے دھاگوں کے ساتھ حسابات چلاتے وقت CPU آپریشنز معمولی عددی فرق پیدا کر سکتے ہیں۔
تقسیم کی حد کے قریب: 0.35امکان میں بہت چھوٹی تبدیلیاں اس بات پر اثر انداز ہو سکتی ہیں کہ آیا حتمی ماسک میں ووکسیل شامل ہے۔
لہذا، ہم واضح طور پر PyTorch تھریڈز کی تعداد مقرر کرتے ہیں۔
torch.set_num_threads(8)
پھانسی کے دوران ایک ہی تھریڈ کنفیگریشن کو استعمال کرنے سے تخمینہ کے عمل کو دوبارہ پیدا کرنے کے قابل رکھنے میں مدد ملتی ہے۔
تخمینہ پاس بجٹ
ہم ملبوسات کا استعمال کرتے ہیں کیونکہ متعدد ماڈل پاسز سے پیشین گوئیوں کو یکجا کرنے سے تقسیم کے نتائج بہتر ہوتے ہیں۔
جوڑا مختلف آدانوں سے پیشین گوئیوں کا استعمال کرتا ہے، بشمول تصویر کا الٹا ورژن اور الگ سے تربیت یافتہ SegResNet ماڈل۔
گھاووں کی تعداد اسکین سے اسکین تک مختلف ہوسکتی ہے۔ اگر آپ تمام گھاووں کے لیے 4 پاس استعمال کرتے ہیں، تو 5 گھاووں کے ساتھ اسکین کے لیے 20 ماڈل پاسز کی ضرورت ہوگی۔ یہ چیلنج کے رن ٹائم کی حد سے تجاوز کر سکتا ہے۔
اس لیے، ہم ہر اسکین کے لیے پاسز کی زیادہ سے زیادہ تعداد مقرر کرتے ہیں اور دکھائے گئے زخموں کی تعداد کے لحاظ سے پاسز کی تعداد کو ایڈجسٹ کرتے ہیں۔
یہاں ایک آسان ورژن ہے:
want = max(
1,
min(len(members) + 1, cap // max(len(ids), 1))
)
| ٹیومر کی تعداد | پاس فی ٹیومر |
|---|---|
| 1 | 4 |
| 2 | 3 |
| 3 | 2 |
| 3 یا اس سے زیادہ | 1 |

تخمینہ شروع ہونے سے پہلے مارکروں کی تعداد منصوبہ کا تعین کرتی ہے۔ یہ حساب کی مقدار کو قابل قیاس رکھتا ہے اور عملدرآمد کے دوران باقی وقت کے لحاظ سے نتائج کو مختلف ہونے سے روکتا ہے۔
ماپا نتائج مندرجہ ذیل ہیں:
| ماحول | سکور |
|---|---|
| کوئی جوڑ نہیں۔ | 0.7242 |
| ٹوپی 4 | 0.7324 |
| ٹوپی 6 | 0.7361 |
| کوئی حد نہیں (ہمیشہ 4 پاس) | 0.7410 |
غیر محدود جوڑ نے سب سے زیادہ اسکور حاصل کیا لیکن رن ٹائم کی رکاوٹوں کو پورا نہیں کیا۔ چھ رکاوٹوں نے ضروری حدود کے اندر اندر رہتے ہوئے زیادہ تر جوڑ کی بہتری کو برقرار رکھا۔
انفرادی ناکامی کو سنبھالنا
متعدد کیسز کو سنبھالتے وقت، ایک ناکام کیس پوری پائپ لائن کو روکنے کا سبب نہیں بننا چاہیے۔
اگر کوئی کیس ہینڈل نہیں کیا جا سکتا ہے، تو یہ ایک خالی ماسک بناتا ہے اور ایک غلطی کو لاگ کرتا ہے۔ پائپ لائن پھر باقی مقدمات کے ساتھ جاری ہے.
یہ یقینی بناتا ہے کہ پورے بیچ کو مکمل کیا جا سکتا ہے یہاں تک کہ اگر انفرادی معاملات میں مسائل ہوں.
نتیجہ
217 چھپے ہوئے ٹیسٹ اسکینوں میں، Lumina نے درج ذیل حاصل کیے:
NSD قدریں فارمولہ استعمال کرتی ہیں: 1 ملی میٹر رواداری.
فی کیس اوسط تخمینہ وقت ہے: 20.3 سیکنڈ. سب سے سست رن ٹائمز کا مشاہدہ کیا گیا ہے: 31.8 سیکنڈ.
میموری کا زیادہ سے زیادہ استعمال ہے۔ 2.22 جی بی ایک 8GB کنٹینر کے اندر۔
ڈاکر کی تصویر تقریبا اس طرح نظر آتی ہے: 559 ایم بی.
معیار کے نتائج
واضح حدود کے ساتھ بڑا زخم
پہلی مثال 272.9 cm3 کے حجم کے ساتھ ایک بڑا گھاو ہے۔ یہاں ہم نے کیا حاصل کیا:

گھاو اچھی طرح سے طواف شدہ ہے اور ارد گرد کی چربی کے ساتھ واضح سرحد رکھتا ہے۔
پیش گوئی کی گئی سموچ زخم کی ظاہری حد تک حوالہ کی حد کی قریب سے پیروی کرتا ہے۔
غیر واضح سرحدوں کے ساتھ درمیانی زخم
دوسری مثال 28.4 cm3 کے حجم کے ساتھ درمیانے درجے کا زخم ہے۔ یہاں ہم نے کیا حاصل کیا:

پیشین گوئیاں حوالہ جات کی تشریحات سے زیادہ وسیع علاقے کا احاطہ کرتی ہیں۔
ایک ریڈیولوجسٹ کے جائزے سے پتہ چلتا ہے کہ اس قسم کے معاملات میں خود حوالہ کی حدود میں غیر یقینی صورتحال ہوسکتی ہے۔ لہذا، ایک کم عددی سکور کا مطلب یہ نہیں ہے کہ پیش گوئی کی گئی سموچ طبی طور پر ناقابل قبول ہے۔
ریڈیولوجسٹ کے جائزے کے نتائج
لومینا کی غلطیوں کی اقسام کو بہتر طور پر سمجھنے کے لیے ہم نے ریڈیولوجسٹ کے ساتھ 30 زخموں کا بھی جائزہ لیا۔
ہمارے جائزے سے پتہ چلتا ہے کہ گھاووں کا سائز واحد عنصر نہیں ہے جو تقسیم کو متاثر کرتا ہے۔
واضح حدود والے گھاووں کو عام طور پر تقسیم کرنا آسان ہوتا ہے۔ زیادہ مشکل صورتوں میں، سرحد کی وضاحت اچھی طرح سے نہیں کی گئی تھی یا اس کی ظاہری شکل ارد گرد کے ٹشو کی طرح تھی۔
اہم غلطیاں یہ ہیں:
-
Hyposegmentation: زخم کا کچھ حصہ غائب ہے۔
-
ہائپر سیگمنٹیشن: ارد گرد کے ٹشو شامل ہیں۔
-
باؤنڈری کی خرابی: پیش گوئی کی گئی سموچ غیر واضح ہے یا مداخلت کرنے والے مارجن کی پیروی نہیں کرتی ہے۔
جائزے نے یہ بھی ظاہر کیا کہ عددی میٹرکس کی تشریح مرئی گھاووں کی حدود کے ساتھ مل کر کی جانی چاہیے۔
کچھ معاملات میں، حوالہ کی حدود خود بیان کرنا مشکل تھا۔ لہذا، کم سکور کا لازمی طور پر یہ مطلب نہیں ہے کہ پیش گوئی کی گئی سموچ طبی طور پر ناقابل قبول ہے۔
یہ مشکل گھاووں میں مشاہدہ کی گئی کم سطح کی درستگی سے مطابقت رکھتا ہے، جہاں چھوٹے سرحدی فرق NSD پر بڑا اثر ڈال سکتے ہیں۔
تین اسباق جو دوسرے منصوبوں پر لاگو ہوتے ہیں۔
1. اپنے تصدیقی ڈیٹا کو نمائندہ بنائیں
توثیق کے سیٹ کو تقسیم کی عکاسی کرنی چاہیے جس کے خلاف حتمی نظام کا جائزہ لیا جائے گا۔
اندرونی توثیق کی تقسیم تربیت کے ڈیٹا سے آئی ہے۔ درمیانی ٹیومر کے حجم تھے: 814mm³.
مقابلہ کرنے والے اسکورنگ سیٹ کا میڈین ٹیومر کا حجم تھا۔ 16,805mm³یہ بہت بڑا تھا۔
ان اختلافات نے متاثر کیا کہ ترقی کے دوران کچھ بہتری کیسے ظاہر ہوئی۔
مثال کے طور پر، باؤنڈری نقصان کو ایک سے زیادہ عہدوں پر اندرونی توثیق کے سیٹوں پر بہت کم بہتری دکھانے کے لیے دکھایا گیا ہے۔ بڑے گھاووں پر مشتمل عوامی توثیق کی تقسیم میں یہ اثر زیادہ مفید تھا۔
اگر بہتری ڈیٹا کی تقسیم کے ایک مخصوص حصے کو نشانہ بناتی ہے، تو اس تقسیم کو توثیق میں نظر آنا چاہیے۔
2. اپنی پری پروسیسنگ کی حدود کی پیمائش کریں۔
160mm کی فصل Lumina کے لیے ڈیزائن کا ایک اہم انتخاب تھا۔
کچھ بڑے گھاووں کو اس فیلڈ آف ویو سے آگے بڑھایا گیا ہے۔
فصل کے سائز کو تبدیل کرنے سے پہلے، ہم نے کٹائی اور دوبارہ نمونے کے ذریعے متعارف کرائی گئی غلطیوں کی پیمائش کی۔
ہم نے زمینی سچائی کے ماسک کو اسی کراپنگ اور ری سیمپلنگ پائپ لائن سے گزارا اور نتیجے میں سطح کے اسکور کی پیمائش کی۔
بڑے گھاووں کے لیے، ہندسی چھتیں استعمال کی گئیں۔ 0.9699NSDجبکہ ماڈل حاصل کیا جاتا ہے۔ 0.5353NSD.
اس سے ظاہر ہوتا ہے کہ پری پروسیسنگ پائپ لائن نے زخم کی سطح کو معقول حد تک محفوظ رکھا ہے۔ اکیلے پری پروسیسنگ نے باقی خلا کی وضاحت نہیں کی۔
مزید برآں، اپنے افق کو وسیع کرنے کے لیے، ہم نے کئی طریقوں کا تجربہ کیا:
-
اوورلیپنگ ٹائلیں
-
انکولی زوم
-
بڑی فصلیں
ان تبدیلیوں سے حتمی سکور میں بہتری نہیں آئی۔
ہماری پری پروسیسنگ حدود کی پیمائش کرنے سے ہمیں اپنے ماڈل اور انفرنس پائپ لائن پر مزید ترقی پر توجہ مرکوز کرنے میں مدد ملی۔
3. یہ لکھیں کہ فون نمبر کہاں سے آیا ہے۔
ماڈل کی ترقی میں بہت سی ترتیب کی اقدار شامل ہیں:
-
دہلیز
-
فصل کا سائز
-
ووکسیل وقفہ کاری
-
وزن میں کمی
-
نمونے لینے کا وزن
-
جوڑ کی ترتیبات
-
رن ٹائم کی حدود
ہر قدر کا ایک واضح ذریعہ ہونا ضروری ہے۔
مثال کے طور پر لکھیں:
-
جو ناپا جاتا ہے۔
-
کون سا ڈیٹا سیٹ استعمال کیا گیا۔
-
جب پیمائش کی گئی۔
-
آزمائشی متبادل
-
حتمی قیمت کیوں منتخب کی گئی۔
اس سے تجربات کو دوبارہ تیار کرنا اور ڈیزائن کے فیصلوں کو بعد میں سمجھنا آسان ہو جاتا ہے۔
نتیجہ
Lumina ظاہر کرتا ہے کہ ایک واحد RECIST لائن CT اسکین سے ٹیومر کی 3D حد کو دوبارہ تشکیل دے سکتی ہے۔
یہ نظام پرامپٹ پر مبنی ان پٹ چینلز، فکسڈ فزیکل کراپنگ، 3D DynUNet، باؤنڈری سے آگاہی کی تربیت، امکان پر مبنی پوسٹ پروسیسنگ، اور کنٹرولڈ CPU تخمینہ کو یکجا کرتا ہے۔
217 زیر التوا مقدمات میں، Lumina ڈائس اسکور 0.7619 اور 0.6094 کا NSD سرکاری رواداری 1 ملی میٹر ہے۔
اوسط تخمینہ وقت ہے۔ 20.3 سیکنڈمیموری کا زیادہ سے زیادہ استعمال ہے۔ 2.22 جی بیچیلنج کی رکاوٹوں کے اندر نظام کو برقرار رکھیں۔
تجربات نے یہ بھی ظاہر کیا کہ حد کی درستگی بہتری کے لیے ایک اہم علاقہ ہے۔ یہ خاص طور پر بڑے، کم واضح طور پر بیان کردہ گھاووں کے لیے درست ہے۔
ہندسی چھت کے تجزیے سے پتہ چلتا ہے کہ فصل کی کٹائی اور دوبارہ نمونے لینے والی پائپ لائن زخم کی سطح کو اچھی طرح سے محفوظ رکھتی ہے، جس سے یہ ظاہر ہوتا ہے کہ مزید بہتریوں کو سیگمنٹیشن کی درستگی اور مضبوطی پر توجہ مرکوز کرنی چاہیے۔
مجموعی طور پر، Lumina سخت کمپیوٹیشنل رکاوٹوں کو پورا کرتے ہوئے 2D RECIST پیمائشوں کو 3D لیزن سیگمنٹیشن میں تبدیل کرنے کے لیے ایک عملی نقطہ نظر کا مظاہرہ کرتا ہے۔