Мы пытаемся создать трехмерное легочное сосудистое дерево, используя компьютерные томограммы. Мы используем VGG-16 в качестве кодера и идентичные слои (без переноса весов) в качестве декодера. Поскольку изображения КТ существенно отличаются от изображений, используемых на тренировке VGG-16, точная настройка применяется ко всей сети.
Набор данных состоит из более 22000 обучающих данных и 8000 проверочных данных. Для каждой эпохи сеть случайным образом выбирала 2000 обучающих данных и 800 проверочных данных. Кроме того, размер партии выбран как 3.
Наша проблема заключается в том, что сеть не может сегментировать небольшие суда. Например, у нас есть:
Исходное изображение CT как: исходное изображение
Метка изображения: изображение с меткой
Прогнозирование сети: прогнозируемое изображение
До сих пор мы пытались изменить структуру сети со стандартного u- net на u- net с помощью обучения с переносом. Кроме того, мы попытались сделать изображения ярче, но эти изменения не решили проблему.
Я также могу предоставить код предварительной обработки:
# Pixel intensities we interested in
pixel_range = (-6000, 6000)
# Normalizing the images
image = ((image-pixel_range[0]) / (pixel_range[1]-pixel_range[0]))*255
image[image>255] = 255
image[image<0] = 0
# Histogram equalization
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
histogram_equalized_image = clahe.apply(image)
# Enhancing the image
maxIntensity = 255.0
phi = 1
theta = 1
ratio = 1.5
enhanced_image = (maxIntensity/phi)*(histogram_equalized_image/(maxIntensity/theta))**ratio
enhanced_image = np.array(enhanced_image, dtype=np.uint8)