Это модуль достоверности, который я использую:< /p>
Код: Выделить всё
# Add a second output for confidence map
self.confidence_layer = nn.Sequential(
nn.Conv2d(filters[0], out_channels, kernel_size=3, padding=1), # 2-channel confidence map
nn.Sigmoid() # Confidence values between 0 and 1
)
Код: Выделить всё
x10 = self.up_residual_conv3(x9)
self.check_for_nan(x10, "After up_residual_conv3")
prediction = self.output_layer(x10)
self.check_for_nan(prediction, "After output layer")
#adding this confidence layer at the end to see if it can improve results
confidence_map = self.confidence_layer(x10)
# Return both the prediction and the confidence map
return prediction, confidence_map
Код: Выделить всё
loss_per_pixel = criterion(predictions, targets)
epsilon = 1e-6
weighted_loss = (confidence_map + epsilon) * loss_per_pixel
Я добавил значение эпсилон, чтобы предотвратить исчезновение градиента, когда достоверность равна нулю. Однако я не заметил особых изменений по сравнению с ситуацией, когда я не включал эпсилон. Это может быть связано с тем, как я реализовал уровень доверия в архитектуре, или с тем, как я упорядочил потери с помощью доверия, или, возможно, с тем и другим.
но какие изменения следует внести здесь?

Первая строка является входной, вторая строка — это предсказание модели, 3-я строка — это основная истина, а последняя строка — это просто изображение, которое дает нам представление о том, что находится в этих 3-х строках. Первые три строки имеют сероватый цвет, поскольку это разница изображений одной и той же сцены, но с двумя разными фильтрами. Добавление потери уверенности в качестве оболочки для моей потери приводит к двум вещам:
- введению артефакта
- созданию изображений ярче, чем на самом деле (поэтому яркость изображения изменилась, что нежелательно)
Подробнее здесь: https://stackoverflow.com/questions/790 ... larize-los