Comments (5)
Hi @GuobinZhangTJU ,
Sorry for my late reply. I'm quite busy recently.
I used this implementation
I also upload the trainer https://github.com/JunMa11/SegLoss/blob/master/test/network_training/nnUNetTrainer_DiceHD.py
Tip: I would recommend to first train your network with Dice loss and then finetune with DiceHD loss.
Best,
Jun
from seglossodyssey.
Hi @GuobinZhangTJU ,
Sorry for my late reply. I'm quite busy recently.
I used this implementation
I also upload the trainer https://github.com/JunMa11/SegLoss/blob/master/test/network_training/nnUNetTrainer_DiceHD.py
Tip: I would recommend to first train your network with Dice loss and then finetune with DiceHD loss.
Best,
Jun
Many thanks, Jun, wish the work is great~~
from seglossodyssey.
Hi @GuobinZhangTJU ,
Sorry for my late reply. I'm quite busy recently.
I used this implementation
I also upload the trainer https://github.com/JunMa11/SegLoss/blob/master/test/network_training/nnUNetTrainer_DiceHD.py
Tip: I would recommend to first train your network with Dice loss and then finetune with DiceHD loss.
Best,
Jun
class DC_and_HD_loss(nn.Module):
def __init__(self, soft_dice_kwargs, hd_kwargs, aggregate="sum"):
super(DC_and_HD_loss, self).__init__()
self.aggregate = aggregate
self.dc = SoftDiceLoss(apply_nonlin=softmax_helper, **soft_dice_kwargs)
self.hd = HDLoss(**hd_kwargs)
def forward(self, net_output, target):
dc_loss = self.dc(net_output, target)
hd_loss = self.hd(net_output, target)
if self.aggregate == "sum":
with torch.no_grad():
alpha = hd_loss / (dc_loss + 1e-5 ) ## Here 1
result = alpha * dc_loss + hd_loss ## Here 2
else:
raise NotImplementedError("nah son")
return result
Hi, Jun, in ## Here 1 and ## Here 2,
alpha = hd_loss / (dc_loss + 1e-5 ),
result = alpha * dc_loss + hd_loss,
alpha * dc_loss = hd_loss / (dc_loss + 1e-5 ) * dc_loss, where 1e-5 is too small which can be ignore, then the result will be
hd_loss , the final result will equals to 2*hd_loss, not hd_loss+dc_loss, isn't it?
from seglossodyssey.
The direct answer is no.
alpha is a scalar, which does not participate in BP and can not be merged in Here 2
.
In other words, it is just a weight.
from seglossodyssey.
The direct answer is no.
alpha is a scalar, which does not participate in BP and can not be merged in
Here 2
.
In other words, it is just a weight.
Got it~ Thanks~~Jun~
from seglossodyssey.
Related Issues (20)
- can this be used in 2D seg ? HOT 2
- What loss is worth trying for multi classification unbalanced data sets? HOT 1
- hi, how could we use boundary loss for nnunet? HOT 1
- Please add a license to this repository HOT 2
- about gradient HOT 5
- About distance map HOT 1
- Why some loss functions in README figure1 have same color? HOT 1
- How long will it take to train with DICEHD on multiorgan dataset by nnunet? HOT 2
- Polyloss HOT 1
- the time training for one epoch with boundary-loss is too long, are there some answers? HOT 2
- multi focal loss alpha HOT 1
- multi focal loss alpha HOT 1
- About Sensitivity Specificity loss function implementation HOT 1
- Hello, can you provide the ASOCA dataset? HOT 1
- why is there no resolution input in the distance_map computing(scipy.ndimage.distance_transform_edt)? HOT 1
- AttributeError: 'IoULoss' object has no attribute 'backward'
- Violin plot HOT 1
- is nnUNetTrainerV2.py available? HOT 1
- Request to include FCM loss.
- Remove additional entry of seglossbias?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from seglossodyssey.