zoukankan      html  css  js  c++  java
  • 转载:从loss处理图像分割中类别极度不均衡的状况---keras

    转载:医学类图像分割的各种loss优化与对比:https://blog.csdn.net/m0_37477175/article/details/83004746 *****

    医学图像分割Dice loss:https://zhuanlan.zhihu.com/p/86704421 https://www.aiuai.cn/aifarm1159.html

    前言
    最近在做小目标图像分割任务(医疗方向),往往一幅图像中只有一个或者两个目标,而且目标的像素比例比较小,使网络训练较为困难,一般可能有三种的解决方式:

    选择合适的loss function,对网络进行合理的优化,关注较小的目标。
    改变网络结构,使用attention机制(类别判断作为辅助)。
    与2的根本原理一致,类属attention,即:先检测目标区域,裁剪之后进行分割训练。
    通过使用设计合理的loss function,相比于另两种方式更加简单易行,能够保留图像所有信息的情况下进行网络优化,达到对小目标精确分割的目的。

    场景

      1. 使用U-Net作为基准网络。
      2. 实现使用keras
      3. 小目标图像分割场景,如下图举例。
        AI Challenger眼底水肿病变区域自动分割,背景占据了很大的一部分
        在这里插入图片描述
        segthor医疗影像器官分割
        在这里插入图片描述

    loss function

     此处的案例可以参考airbus-ship-detection

     

     

     代码:https://github.com/mkocabas/focal-loss-keras

    from keras import backend as K
    '''
    Compatible with tensorflow backend
    '''
    def focal_loss(gamma=2., alpha=.25):
    	def focal_loss_fixed(y_true, y_pred):
    		pt_1 = tf.where(tf.equal(y_true, 1), y_pred, tf.ones_like(y_pred))
            pt_0 = tf.where(tf.equal(y_true, 0), y_pred, tf.zeros_like(y_pred))
            return -K.sum(alpha * K.pow(1. - pt_1, gamma) * K.log(pt_1))-K.sum((1-alpha) * K.pow( pt_0, gamma) * K.log(1. - pt_0))
    	return focal_loss_fixed
    

     使用方法:model_prn.compile(optimizer=optimizer, loss=[focal_loss(alpha=.25, gamma=2)])

    -K.mean(alpha * K.pow(1. - pt_1, gamma) * K.log(pt_1)) - K.mean((1 - alpha) * K.pow(pt_0, gamma) * K.log(1. - pt_0))
    

      

  • 相关阅读:
    MYSQL[34]
    MYSQL[32]
    mysql字符集的问题
    MYSQL[31]
    开源RPC框架简介
    MYSQL[35]
    版本号的表示方法
    MYSQL[29]
    MYSQL[39]
    hdu 1166【树状数组】
  • 原文地址:https://www.cnblogs.com/hansjorn/p/13217005.html
Copyright © 2011-2022 走看看