Spaces:
Sleeping
Sleeping
File size: 1,123 Bytes
d7e3c30 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # Contenido de: VisionEnsembleModel.py
import torch
import torch.nn as nn
import timm
class VisionEnsembleModel(nn.Module):
def __init__(self, num_classes, cnn_model_name='efficientnet_b2', vit_model_name='vit_small_patch16_224'):
super().__init__()
self.cnn = timm.create_model(cnn_model_name, pretrained=False, num_classes=num_classes)
cnn_features = self.cnn.get_classifier().in_features
self.cnn.reset_classifier(0)
self.vit = timm.create_model(vit_model_name, pretrained=False, num_classes=num_classes)
vit_features = self.vit.head.in_features
self.vit.head = nn.Identity()
self.classifier = nn.Sequential(
nn.BatchNorm1d(cnn_features + vit_features),
nn.Linear(cnn_features + vit_features, 512),
nn.ReLU(),
nn.Dropout(0.5),
nn.Linear(512, num_classes)
)
def forward(self, image):
cnn_feat = self.cnn(image)
vit_feat = self.vit(image)
combined = torch.cat([cnn_feat, vit_feat], dim=1)
output = self.classifier(combined)
return output |