Как постепенно обучать модель распознавания лиц без переобучения с нуля?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как постепенно обучать модель распознавания лиц без переобучения с нуля?

Сообщение Anonymous »

Я создаю модель распознавания лиц. Я уже обучил модель, используя образы двух человек (Криштиану Роналду и Лионеля Месси). Теперь я хочу добавить в модель больше людей (например, Марию Шарапову), не переучивая все с нуля.
Есть ли способ обучить модель новой модели, используя новый набор данных? Если да, то как я могу эффективно объединить новые данные обучения с существующей моделью?
Вот мой существующий код
import torch
import torchvision
from torchvision import datasets, models, transforms
import os

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

data_transforms = {
'train': transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
'test': transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
}

data_dir = './new_dataset'
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x])
for x in ['train', 'test']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4, shuffle=True)
for x in ['train', 'test']}
class_names = image_datasets['train'].classes

model = models.resnet18(pretrained=True, progress=True)

num_classes = len(class_names)
model.fc = torch.nn.Linear(model.fc.in_features, num_classes)

device = torch.device("cpu")
model = model.to(device)

criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

num_epochs = 10

for epoch in range(num_epochs):
for inputs, labels in dataloaders['train']:
inputs = inputs.to(device)
labels = labels.to(device)

optimizer.zero_grad()

outputs = model(inputs)
loss = criterion(outputs, labels)

loss.backward()
optimizer.step()

torch.save(model.state_dict(), 'model.pth')

model.eval()

correct = 0
total = 0

with torch.no_grad():
for inputs, labels in dataloaders['test']:
inputs = inputs.to(device)
labels = labels.to(device)

outputs = model(inputs)
_, predicted = torch.max(outputs.data, 1)

total += labels.size(0)
correct += (predicted == labels).sum().item()

accuracy = 100 * correct / total
print(f"Accuracy on the test set: {accuracy}%")

Папка ./new_dataset выглядит следующим образом
new_dataset/
--test/
----cristiano_ronaldo
----lione_messi
--train/
----cristiano_ronaldo
----lione_messi


Подробнее здесь: https://stackoverflow.com/questions/791 ... -from-scra
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Не может обучать контролируемую модель и модель машинного обучения в коде Visual Studio
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Как обучать модели GPT в трансформаторах с нуля?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как обучать модели GPT в трансформаторах с нуля? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как создать модель распознавания речи с нуля в Python
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Низкая производительность и признаки переобучения при точной настройке BART с помощью адаптеров на наборе данных CNN/Dai
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»