Solución al problema de cargar el código de archivo set_mobile de datos

Hubo algunos problemas al reproducir el proyecto de GitHub. Es extraño que todos los proyectos encuentren problemas que no se habían visto antes. Con la ayuda del autor, comencé con éxito a entrenar este proyecto: Normalización de la región para la pintura en la imagen.
Ayer, leí detenidamente el código. Aunque no lo entiendo completamente , la cantidad de código en este proyecto no es grande. Lo lógico La relación en la mayoría de los lugares es clara, lo que es una depuración beneficiosa.

Pregunta :
1.Inserte la descripción de la imagen aquí
Este problema apareció por primera vez La información básica que se encuentra en Internet es que el programa no tiene permiso para acceder a esta ruta '/ data'. Después de buscar y pensar cuidadosamente, descubrí que no existe tal ruta en mi cuenta. Más tarde, descubrí que era un parámetro del objeto creado por el programa, que era la ruta de guardado del modelo predeterminada. Simplemente cámbielo a su propio camino.

2.Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
Aunque una de las dos imágenes anteriores puede ejecutar el programa y un error, pero el mismo error. Puede ver que el número de archivos cargados después de cargar conjuntos de datos es 1 y el otro es 0. Obviamente, debe haber un problema con solo 1 conjunto de entrenamiento.

¡Empiece con un solo paso!
El siguiente es un registro de depuración de un solo paso: el
problema radica en el módulo del cargador de datos, luego establece un punto de interrupción donde imprime el '===> Cargando conjuntos de datos'.
Inserte la descripción de la imagen aquí
Aquí también puede usar pycharm para ver el código, lo que puede facilitar la comprensión del código. Por ejemplo, puede saber que cuando pase a la línea 262, ingresará la función build_dataloader. Después de ingresar la función en linux, pycharm también va al código de destino.
Inserte la descripción de la imagen aquí
Aquí puede ver que ha entrado de nuevo en la función Daraset. Continúe con el seguimiento.
Inserte la descripción de la imagen aquí
Puede ver que flist es la ruta del conjunto de datos que proporcionamos, apuntando a un archivo flist, el contenido de este archivo es la imagen del conjunto de entrenamiento. No hay problema aquí, continúe ingresando la función self.load_flist ().
Inserte la descripción de la imagen aquí
Aquí puede ver que la función load_flist carga el conjunto de datos y finalmente solo carga el archivo 'val_image.flist', pero no el conjunto de datos apuntado por el contenido del archivo. El número total de instancias anterior = 1 también es claro.
Inserte la descripción de la imagen aquí
Puede ver que el problema radica en el archivo flist, que es generado por el código dado en el proyecto del autor. Si no funciona, no lo uses. En el código para cargar el conjunto de datos anterior, se puede ver que cuando se lee el conjunto de datos, se juzga si la ruta de datos proporcionada al ejecutar el programa es un directorio o un archivo. Para image_flist y mask_flist en la figura siguiente, les daré directamente la ruta absoluta del conjunto de datos. Lo siguiente es antes y después de la modificación. Hasta
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
ahora, puede cargar el conjunto de datos especificando directamente la ruta.

3. Al
final, apareció el siguiente error. Estaba
Inserte la descripción de la imagen aquí
perplejo. Después de revisarlo durante mucho tiempo, no encontré una solución precisa. Finalmente, el autor recordó que la ruta de la máscara era incorrecta y no estaba cargada. Después de la modificación, la formación comenzó con éxito.

otro:

En el proceso de depuración de este código, me familiaricé con isinstance () para determinar el tipo de objeto, glob.glob () para que coincida con el nombre del archivo, y fue la primera vez que usé pdb para depurar Python en un solo paso.
Debido a que las imágenes con contenido diferente en el conjunto de datos se encuentran en carpetas diferentes, deben recopilarse en una carpeta y se utilizan las siguientes funciones

import os,shutil
sourceDir=''			#源目录
targetDir=''            #目标目录
for root, dirs, files in os.walk(sourceDir):
    for file in files:
        shutil.copy(os.path.join(root,file),targetDir) #复制
      # shutil.move(os.path.join(root,file),targetDir) #移动

Donde root es el directorio actual,
dirs son todos los subdirectorios
del directorio actual , archivos son todos los archivos en el directorio actual,
este programa puede atravesar todos los archivos en los subdirectorios del directorio sourceDir.

Supongo que te gusta

Origin blog.csdn.net/qq_41872271/article/details/105285028
Recomendado
Clasificación