Привет,

Я использую Unet для выполнения семантической сегментации (я хочу сегментировать метастазы в печени). Я хочу «больше» взвесить пиксели метастаза по отношению к фону, но мне это не удается…

Код для создания архитектуры unet:

lgraph = unetLayers(imageSize, numClasses, ‘EncoderDepth’, 4);

Как я могу изменить «classWeights» в lgraph.Layers(end).pixelClassificationLayer, чтобы сделать это??

Если, например, я делаю это:

lgraph.Layers(end).pixelClassificationLayer.classWeights = [2, 0,5];

Я получаю сообщение об ошибке, говорящее мне, что я должен сначала поставить «метки» для параметров «классы» в lgraph.Layers(end), но если я сделаю это:

lgraph.Layers(end) = {‘метастазы’, ‘фон’};

Я получаю сообщение об ошибке, сообщающее, что этот слой находится в режиме «только для чтения»...

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Hi,

Объект unetLayers в MATLAB находится в режиме только для чтения, и мы не можем изменять свойства слоев как таковые. Вы можете удалить последний слой, который является слоем сегментации, и добавить новый слой сегментации с упомянутыми свойствами.

Следующий код поможет.

% Last Layer Name is 'Segmentation-Layer' 
% for checking layer name use :- lgraph.Layers 
lgraph = removeLayers(lgraph,'Segmentation-Layer'); 
layerlast = pixelClassificationLayer('Classes',{'metastatis','background'},'ClassWeights',[2,0.5],'Name','New_segmentation_Layer'); 
layer_to_add = [layerlast]; 
lgraph = addLayers(lgraph,layer_to_add);

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ