Anchor-free детекторы — это детекторы объектов, которые не используют заранее определенные анкор-боксы для предсказания объектов на изображении. Вместо этого они используют другие методы для определения местоположения и размера объектов.
Определяет центры объектов с помощью тепловых карт (heatmaps) и предсказывает размеры и оффсеты объектов относительно центров.
Основные этапы:
import torch
from torchvision import models, transforms
from PIL import Image
# Загрузка предобученной модели CenterNet
model = torch.hub.load('facebookresearch/centernet', 'ctdet_coco_dla_2x', pretrained=True)
model.eval()
# Преобразование изображения
def transform_image(image_path):
image = Image.open(image_path).convert("RGB")
transform = transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.40789654, 0.44719302, 0.47026115], std=[0.28863828, 0.27408164, 0.27809835]),
])
return transform(image).unsqueeze(0)
# Пример изображения
image_path = "example.jpg"
image = transform_image(image_path)
# Предсказание
with torch.no_grad():
detections = model(image)
print(detections)
Определяет объекты путем предсказания их углов (верхний левый и нижний правый углы) и затем соединяет эти углы для формирования bounding boxes.
Основные этапы:
Определяет объекты путем предсказания их экстремальных точек (верхняя, нижняя, левая и правая точки) и затем соединяет эти точки для формирования bounding boxes.
Основные этапы:
Предсказывает bounding boxes и классы объектов для каждой позиции на сетке, используя полностью сверточные слои, без использования anchor box-ов.
Основные этапы:
import torch
from torchvision import models, transforms
from PIL import Image
# Загрузка предобученной модели FCOS
model = torch.hub.load('ultralytics/yolov5', 'fcos')
model.eval()
# Преобразование изображения
def transform_image(image_path):
image = Image.open(image_path).convert("RGB")
transform = transforms.Compose([
transforms.Resize((512, 512)),
transforms.ToTensor(),
])
return transform(image).unsqueeze(0)
# Пример изображения
image_path = "example.jpg"
image = transform_image(image_path)
# Предсказание
with torch.no_grad():
detections = model(image)
print(detections)
Использует подход с пиксельной регрессией объектов, учитывая масштабы объектов и их контекст. Он предсказывает объекты на уровне пикселей, что позволяет избегать использования anchor box-ов.
Основные этапы:
Эти подходы предоставляют альтернативные методы для детекции объектов, которые могут быть более эффективными и точными в некоторых сценариях по сравнению с традиционными методами, основанными на anchor box-ах.