Встречается на 5% собеседований по Data Engineer

Как построить модель для классификации изображений на бинарной маске с квадратами, кругами и треугольниками

Для классификации изображений с бинарными масками можно использовать CNN (свёрточные нейронные сети). Вот пример кода на PyTorch:

python
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, Dataset

class SimpleCNN(nn.Module):
    def __init__(self, num_classes=3):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 16, kernel_size=3, stride=1, padding=1)
        self.conv2 = nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)
        self.fc = nn.Linear(32 * 64 * 64, num_classes)  # Предполагаем размер 64x64
        
    def forward(self, x):
        x = torch.relu(self.conv1(x))
        x = torch.max_pool2d(x, 2)
        x = torch.relu(self.conv2(x))
        x = torch.max_pool2d(x, 2)
        x = x.view(x.size(0), -1)
        return self.fc(x)

model = SimpleCNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())

text

Ключевые моменты:
1. Используйте бинарные маски (1 канал) как вход
2. Добавьте аугментации (повороты, сдвиги) для улучшения обобщения
3. Для простых форм может хватить 2-3 свёрточных слоёв
4. Размер выхода равен количеству классов (3 в данном случае)

Для более сложных случаев рассмотрите предобученные архитектуры типа ResNet.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы