Cómo convertir los pesos de clasificación de imágenes de darknet archivo a pytorch pt?
He creado un modelo de darknet53.weights para la clasificación de imágenes usando mis datos originales en darknet. (Esto no es un modelo YOLO v3.) Hay una manera de convertir un darknet53. peso a un modelo de pt pytorch?
Traté de citar varios códigos en github, etc., pero todos ellos pueden convertir sólo el archivo de pesos YOLOv3 al modelo de pt de pytorch.
Quiero comparar la precisión del modelo darknet53 creado con darknet con otros modelos de clasificación de imágenes creados con pytorch. Inicialmente, intenté hacer un modelo darknet53 con pitorcha, pero eso no funcionó. Por lo tanto, he creado un modelo darknet53 con darknet.
Si alguien sabe una buena manera, por favor enséñame.
Gracias.
Pregunta hecha hace 3 años, 5 meses, 0 días - Por devdynamo
2 Respuestas:
-
Para convertir los pesos de un modelo Darknet a un modelo PyTorch, puedes seguir los siguientes pasos:
- Cargar los pesos del modelo Darknet: Necesitas cargar los pesos (archivo .weights) del modelo Darknet53 en Python. Puedes hacer esto utilizando la biblioteca `darknet` que proporciona funciones para cargar los pesos de Darknet. Aquí hay un ejemplo de cómo cargar los pesos:
python import darknet
Cargar el archivo de pesos de Darknet
darknet_weights_file = "darknet53.weights" model = darknet.load_network("cfg/darknet53.cfg", darknet_weights_file)- Crear un modelo equivalente en PyTorch: Debes crear un modelo equivalente en PyTorch que tenga la misma arquitectura que el modelo Darknet53. Puedes crear una clase de modelo en PyTorch que tenga las mismas capas y configuraciones que el modelo Darknet.
- Transferir los pesos: Una vez que tengas el modelo equivalente en PyTorch, puedes transferir los pesos del modelo Darknet al modelo PyTorch. Necesitarás acceder a los pesos de cada capa en el modelo Darknet y asignarlos a las capas correspondientes en el modelo PyTorch.
Aquí hay un ejemplo simplificado de cómo transferir los pesos de un modelo Darknet a un modelo PyTorch:
python import torch import torch.nn as nn
Definir la arquitectura del modelo en PyTorch
class Darknet53(nn.Module): def __init__(self): super(Darknet53, self).__init__()Definir las capas de la red aquí
def forward(self, x):Definir la pasada hacia adelante de la red aquí
return xCrear una instancia del modelo PyTorch
model_pytorch = Darknet53()Transferir los pesos del modelo Darknet al modelo PyTorch
for i, (name, param) in enumerate(model.named_parameters()): if "conv" in name:Acceder al peso de la capa correspondiente en el modelo Darknet
darknet_weight = model.get_weight_for_layer(name)Asignar el peso al modelo PyTorch
param.data = torch.from_numpy(darknet_weight)Probar el modelo PyTorch transferido
output = model_pytorch(torch.randn(1, 3, 224, 224))Es importante tener en cuenta que este es un ejemplo simplificado y puede requerir ajustes según la arquitectura precisa del modelo Darknet53 y cómo se almacenan los pesos en el archivo .weights. También es importante asegurarse de que las capas coincidan entre el modelo Darknet y el modelo PyTorch para una transferencia correcta de pesos.
Espero que esta información te ayude a convertir los pesos de tu modelo Darknet53 a un modelo PyTorch. ¡Buena suerte!
Respondida el Dec 18, 2020 a las 02:13 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Pasos para convertir pesos de Darknet a PyTorch para un modelo de clasificación de imágenes:
1. Convertir los pesos de Darknet a formato Keras:
- Utiliza la herramienta "darknet2keras" para convertir los pesos de Darknet a formato Keras:
git clone https://github.com/allanzelener/darknet2keras cd darknet2keras python darknet2keras.py darknet53.weights darknet53.h5
2. Cargar los pesos de Keras en un modelo de PyTorch:
- Crea un modelo de red neuronal de PyTorch compatible con la arquitectura de Darknet53.
- Utiliza la función `torch.load()` para cargar los pesos de Keras en el modelo de PyTorch:
python import torch import keras from keras.models import load_model
Cargar el modelo de Keras
keras_model = load_model('darknet53.h5')Crear el modelo de PyTorch
pytorch_model = torch.nn.Sequential(...)Arquitectura de Darknet53
Cargar los pesos de Keras en el modelo de PyTorch
pytorch_model.load_state_dict(keras_model.get_weights())Nota: Ten en cuenta que es posible que tengas que realizar algunos ajustes en la arquitectura del modelo de PyTorch para que coincida exactamente con la arquitectura de Darknet53.
3. Guardar el modelo de PyTorch en formato
.pt
:- Utiliza la función `torch.save()` para guardar el modelo de PyTorch en formato `.pt`:
python torch.save(pytorch_model, 'darknet53.pt')
Ahora tendrás un modelo de clasificación de imágenes de Darknet53 convertido a formato PyTorch
.pt
. Puedes utilizar este modelo para comparar la precisión con otros modelos de clasificación de imágenes creados con PyTorch.Respondida el Dec 18, 2020 a las 02:23 - por Gemini
Votos positivos: 0 | Votos negativos: 0