سلام
معیار Dice یا DSC معمولاً برای محاسبه شباهت دو تصویر استفاده می شه. البته برای هر نوع داده دیگری هم قابل استفاده هست.
Dice یکی از معیار های اصلی برای ارزیابی نتایج بخش بندی تصاویر پزشکی هم هست. مقدار Dice نشان می دهد که نتایج مدل بخش بندی، چقدر به ماسک حقیقی بافت، شباهت دارند.
- فرمول Dice
دو برابر اشتراک دو تصویر تقسیم بر اجتماع دو تصویر.
یا برای مسائل کلاسیفیکیشن میشه به صورت زیر هم نوشت:
به عنوان مثال، برای محاسبه Dice بین خروجی یک مدل بخش بندی یک بافت (y_pred) و ماسک واقعی آن بافت (y_true) در کتابخانه keras از کد زیر استفاده می شه:
K = keras.backend
def dice_coef(y_true, y_pred.):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2. * intersection) / (K.sum(y_true_f) + K.sum(y_pred_f))
حاصل Dice یک عدد بین 0 تا 1 هست که هرچقدر به 1 نزدیک تر باشد، شباهت بیشتری بین دو تصویر وجود دارد. معمولاً در مقالات، با ضرب کردن Dice در 100 آن را بین 0 تا 100 ارائه می دهند (%DSC)
نکته: اگر بخواهیم از این معیار، به عنوان تابع هزینه در آموزش مدل، استفاده کنیم باید آن را منفی کنیم تا در فرآیند بهینه سازی به سمت حداقل مقدار یا 1- حرکت کند:
dice_coef_loss(y_true, y_pred):
-dice_coef(y_true, y_pred)
یا برای مثبت ماندن مقادیر می توان به صورت زیر هم عمل کرد:
dice_coef_loss(y_true, y_pred):
1-dice_coef(y_true, y_pred)