Есть ли способ пропустить целевые классы VGG16? - PullRequest
0 голосов
/ 23 октября 2019

У меня есть куча медицинских изображений, и я хочу извлечь из них некоторые функции. Для этого я намерен использовать предварительно обученный CNN VGG16. У него есть список целевых классов, который состоит из имени обычных объектов. Как я могу изменить его, чтобы сделать извлечение признаков вместо классификации объектов? Я имею в виду, какие изменения я должен внести в его архитектуру?

1 Ответ

0 голосов
/ 23 октября 2019

Это зависит от языка и структуры, которую вы используете, вы должны указать такие вещи в своих вопросах. В Pytorch вы можете сделать это следующим образом:

original_model = models.vgg19(pretrained=True).eval()
feature_extractor = nn.Sequential(*list(original_model.features.children()))
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                 std=[0.229, 0.224, 0.225])
img = io.imread("some_image.png")
img = transform.resize(img, (224, 224), order=3)
img = torch.from_numpy(img)
img = img.permute(2, 0, 1)
img = normalize(img)
img = img.unsqueeze(0)
with torch.no_grad():
    features = feature_extractor.forward(img)

Обратите внимание на масштабирование и нормализацию, vgg лучше всего работает для нормализованных 224x224 (со значениями из кода).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...