Instalar:
pip install nnunetv2
## 或者是把他下载下来,自行安装
git clone https://github.com/MIC-DKFZ/nnUNet.git
cd nnUNet
pip install -e .
Código de GitHub:
Diez conjuntos de datos de segmentación médica:
Nota: No debes usar magia al instalar, de lo contrario será Voldemort (Falso)
Configuración:
Aquí hay algunos jugos de hierro, puede referirse a ellos juntos, tomar el de ellos como principal, el mío como suplemento y comer juntos
Guía incompleta de nnUNet (Parte 1) - Sin sitio web de visitantes (Aquí está el código json generado personalizado)
Permítanme citar:
from collections import OrderedDict
from batchgenerators.utilities.file_and_folder_operations import save_json
def main():
foldername = "Task128_LungLobe"
numTraining = 80
numTest = 6
numClass = 6
json_dict = OrderedDict()
json_dict['name'] = foldername
json_dict['description'] = foldername
json_dict['tensorImageSize'] = "4D"
json_dict['reference'] = "see challenge website"
json_dict['licence'] = "see challenge website"
json_dict['release'] = "0.0"
json_dict['modality'] = {
"0": "CT",
}
json_dict['labels'] = {i: str(i) for i in range(numClass)}
json_dict['numTraining'] = numTraining
json_dict['numTest'] = numTest
json_dict['training'] = [{'image': "./imagesTr/LungLobe_{:0>3d}.nii.gz".format(i),
"label": "./labelsTr/LungLobe_{:0>3d}.nii.gz".format(i)}
for i in range(numTraining)]
json_dict['test'] = ["./imagesTs/LungLobe_{:0>3d}.nii.gz".format(i)
for i in range(numTraining, numTraining+numTest)]
save_json(json_dict, "./dataset.json")
if __name__ == "__main__":
main()
Carpeta de datos:
De hecho, debe crear manualmente varias carpetas usted mismo.
Entra en la carpeta roja:
En la carpeta roja, colóquelo como la carpeta de datos Task14_Vessel, que es un formulario de nombre fijo Task number_name
Para números, se recomienda tener más de 10, pero no tres dígitos. Si tiene 13, no use 013. Si el formato de datos en sus datos es correcto, es decir, si los datos de entrenamiento van seguidos de _0000, sufijo nii.gz, puede ignorar esta regla y saltar directamente a --entonces
Porque mis datos son así
No debe ajustarse al formato, por lo que debe cambiarse. Puede usar el código que viene con nnunet para realizar cambios:
nnUNet_convert_decathlon_task -i F:/data/data_1100/nnUNet_raw_data_base/nnUNet_raw/nnUNet_raw_dat
a/Task14_Vessel
En este momento, generará una carpeta nuevamente, esta carpeta se llama Task014_Vessel, la original se llama Task14_Vessel, ¡así que debes entender! ! !
Encontrarás errores durante este proceso , si tu entorno es Windows, la solución es la siguiente:
Errores encontrados por nnUNet windows_nnunet windows_*Xiaodai's Blog-CSDN Blog
Lo más importante es que la imagen y la etiqueta tengan el mismo nombre
Entonces
Ejecute el comando, el número es el nombre en clave de su propia tarea:
nnUNet_plan_and_preprocess -t 14 --verify_dataset_integrity
## 或者是
nnUNet_plan_and_preprocess -t 14
Luego encontré un informe de error , que generalmente se informa en este paso:
Archivo "D: \ Python \ anaconda3 \ envs \ pytorch \ lib \ sitio-packages \ nnunet \ preprocessing \ sanity_checks.py", línea 129, en verify_dataSet_inteGricity afirmar isfile (esperado_label_file), "no podría encontrar el archivo de etiqueta para el caso s. 1. Archivo
esperado
:
Todos los problemas anteriores ocurrieron bajo Windows.Para Linux, lo pasé una vez.
Solución: instale la versión de Windows de nnunet, resolverá el problema del subproceso en Windows y no informará tantos problemas extraños
Finalmente, ejecute el comando para el entrenamiento :
nnUNet_train 3d_fullres nnUNetTrainerV2 13 0-4
nnUNetTrainerV2: El representante es el modelo entrenado,
13: Conjunto de datos de tareas
0-4: 10 % de descuento 50 % de descuento
Si el entrenamiento está a la mitad y quieres continuar entrenando, entonces
nnUNet_train 3d_fullres nnUNetTrainerV2 13 0-4 -c
-c: el significado de continuar
Por defecto, nnunet guarda cada 50 épocas
Entrena por un total de 1000 épocas
#########################################################################
Resumen de comandos
#########################################################################
nnUNet_convert_decathlon_task -i F:/data/data_1100/nnUNet_raw_data_base/nnUNet_raw/nnUNet_raw_dat
a/Task14_VesselnnUNet_plan_and_preprocess -t 14
nnUNet_train 3d_fullres nnUNetTrainerV2 13 0
ubicación del archivo
nnUNet_convert_decathlon_task:
\nnunet\experiment_planning\ nnUNet_convert_decathlon_task
nnUNet_plan_and_preprocess:
\nnunet\experiment_planning\ nnUNet_plan_and_preprocess
nnUNet_tren:
\nnunet\run\run_training
################################################################################################################## ##############################
Algunas notas de código fuente para entrenamiento
Si usa nnUNet_train 3d_fullres nnUNetTrainerV2, observe principalmente estos cinco códigos de archivo:
run_training.py:
Ubicación: \nnunet\run\run_training
Función:
El proceso principal está aquí.
nnUNetTrainerV2.py:
Ubicación: \nnunet\training\network_training\nnUNetTrainerV2
Función:
1. Defina el modelo de red entrenado e inicialice la red
2. Cargar y descomprimir conjuntos de datos , mejora de datos
3. Definir funciones de pérdida, optimizadores, tasas de aprendizaje, etc.
4. Definición de parámetros de carga de datos
5. La entrada del entrenamiento, (en el último párrafo del código)
nnUNetTrainer.py:
Ubicación: \nnunet\training\nnUNetTrainer.py
Función:
1. Definición de algunos parámetros de datos cargados, asignados a sí mismo como un todo
2. Aquí puede cambiar el tamaño del lote y patch_size usted mismo
Por lo general, el lote predeterminado es 2 y patch_size es [90,190,190]
self.batch_size 和 self.patch_size
3. Divida el conjunto de entrenamiento y el conjunto de validación
4. Cargue el conjunto de datos
entrenador_de_red.py:
Ubicación:
Ubicación: \nnunet\training\network_trainer.py
Función:
1. Establecer algunos parámetros
self.num_batches_per_epoch = 250 ## bloques de entrenamiento
self.num_val_batches_per_epoch = 50 ## bloques de prueba
self.save_every = 50 ## Guardar cada número de épocas
2. Peso de la carga
3. Guarde el archivo de registro de depuración en la carpeta de salida
4. Durante el entrenamiento : época < max_num_epochs: aquí
generic_UNet.py:
Ubicación: \nnunet\network_architecture\generic_UNet.py
Función:
modelo de estructura de red