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

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

Сообщение Anonymous »

У меня есть набор данных из 1,6 тыс. изображений (разделение: поезд — 90%, проверка — 10%) с кусочками бумаги (1280x720x1). И у меня есть для них ограничительные рамки. Вот пример изображения и ограничивающей рамки. Итак, мне нужно создать модель для обнаружения углов бумаги.
Я создал ее на pytorch:

Код: Выделить всё

class PaperCorners(torch.nn.Module):
def __init__(self):
super().__init__()
# Input image (1280x720x1)
self.conv1 = torch.nn.Conv2d(in_channels = 1, out_channels = 4,
kernel_size = (5, 5), stride = 3)
# After conv1 (426x239x4)
self.act1 = torch.nn.ReLU()
# After act1 (426x239x4)
self.conv2 = torch.nn.Conv2d(in_channels = 4, out_channels = 8,
kernel_size = (5, 5), stride = 3)
# After conv2 (141x79x8)
self.act2 = torch.nn.ReLU()
# After act2 (141x79x8)
self.conv4 = torch.nn.Conv2d(in_channels = 8, out_channels = 16,
kernel_size = (3, 3), stride = 2)
# After conv4 (70x39x16)
self.act4 = torch.nn.ReLU()
# After act4 (70x39x16)
self.conv5 = torch.nn.Conv2d(in_channels = 16, out_channels = 32,
kernel_size = (3, 3), stride = 2)
# After conv5 (34x19x32)
self.act5 = torch.nn.ReLU()
# After act5 (34x19x32)
self.conv6 = torch.nn.Conv2d(in_channels = 32, out_channels = 64,
kernel_size = (3, 3), stride = 2)
# After conv6 (16x9x64)
self.act6 = torch.nn.ReLU()
# After act6 (16x9x64)

self.gmp = torch.nn.AdaptiveMaxPool2d(output_size = 1)
#After gmp and squeeze (64)

self.lin1 = torch.nn.Linear(in_features = 64, out_features = 128)
# After lin1 (128)
self.act7 = torch.nn.ReLU()
# After act7 (128)

self.lin2 = torch.nn.Linear(in_features = 128, out_features = 128)
# After lin2 (128)
self.act8 = torch.nn.ReLU()
# After act8 (128)

self.lin3 = torch.nn.Linear(in_features = 128, out_features = 64)
# After lin3 (64)
self.act9 = torch.nn.ReLU()
# After act9 (64)

self.lin4 = torch.nn.Linear(in_features = 64, out_features = 4)
# After lin4 (4)
self.act10 = torch.nn.ReLU()
# After act10 (4)

def forward(self, x):
x = self.act1(self.conv1(x))
x = self.act2(self.conv2(x))
x = self.act4(self.conv4(x))
x = self.act5(self.conv5(x))
x = self.act6(self.conv6(x))
x = self.gmp(x).squeeze()
x = self.act7(self.lin1(x))
x = self.act8(self.lin2(x))
x = self.act9(self.lin3(x))
x = self.act10(self.lin4(x))
return x
Кроме того, я делю значения изображения на 255, чтобы их нормализовать. Я использую Адама (lr=0,001), MSE. Моя потеря примерно через 300 эпох - 13000 (при наборе валидации). Когда я пытаюсь сфотографироваться в реальной обстановке, происходит следующее. он каждый раз остается на одном месте, но когда я подгоняю лист под размеры прямоугольника, он начинает немного отставать от него. Что я могу сделать? Я не хочу использовать существующие модели, хочу создать свою :)

Подробнее здесь: https://stackoverflow.com/questions/791 ... -detection
Ответить

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

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

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

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

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