📌 Какие есть вариации anchor-free детекторов ?



💬 Спрашивают в 14% собеседований



Anchor-free детекторы — это детекторы объектов, которые не используют заранее определенные анкор-боксы для предсказания объектов на изображении. Вместо этого они используют другие методы для определения местоположения и размера объектов.



1️⃣ CenterNet



Определяет центры объектов с помощью тепловых карт (heatmaps) и предсказывает размеры и оффсеты объектов относительно центров.



Основные этапы:



1️⃣ Генерация тепловой карты центров объектов.



2️⃣ Регрессия размеров объектов (ширина и высота).



3️⃣ Регрессия смещений центров (оффсетов).



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)




2️⃣ CornerNet



Определяет объекты путем предсказания их углов (верхний левый и нижний правый углы) и затем соединяет эти углы для формирования bounding boxes.



Основные этапы:



1️⃣ Генерация тепловых карт для углов объектов.



2️⃣ Сопряжение углов для формирования bounding boxes.



3️⃣ Регрессия смещений углов (оффсетов).



3️⃣ ExtremeNet



Определяет объекты путем предсказания их экстремальных точек (верхняя, нижняя, левая и правая точки) и затем соединяет эти точки для формирования bounding boxes.



Основные этапы:



1️⃣ Генерация тепловых карт для экстремальных точек.



2️⃣ Сопряжение точек для формирования bounding boxes.



3️⃣ Регрессия центра bounding box-а.



4️⃣ FCOS (Fully Convolutional One-Stage Object Detection)



Предсказывает bounding boxes и классы объектов для каждой позиции на сетке, используя полностью сверточные слои, без использования anchor box-ов.



Основные этапы:



1️⃣ Регрессия расстояний до границ bounding box-а от каждой позиции.



2️⃣ Классификация объектов.



3️⃣ Использование центровки (center-ness) для улучшения точности.



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)




5️⃣ SAPD (Scale-Aware Pixel-wise Object Detection)



Использует подход с пиксельной регрессией объектов, учитывая масштабы объектов и их контекст. Он предсказывает объекты на уровне пикселей, что позволяет избегать использования anchor box-ов.



Основные этапы:



1️⃣ Предсказание объектов на уровне пикселей.



2️⃣ Учет масштаба объектов и их контекста.



3️⃣ Классификация объектов и регрессия bounding boxes.



Эти подходы предоставляют альтернативные методы для детекции объектов, которые могут быть более эффективными и точными в некоторых сценариях по сравнению с традиционными методами, основанными на anchor box-ах.



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых