Metric learning
Технологии компьютерного зрения
Разбор ДЗ
Модели и данные
Распознавание лиц
Задачи
Сценарии использования
...
Наивный подход
#1 Иванов И.И.
…
CNN
Linear ?
~20М
Номер класса объекта
Понижение размерности
CNN
Linear 256
вектор признак
(embedding)
embedding (128/256/512)
image ( 224 x 224 = 50176)
classifier
Фоторобот == понижение размерности
Hair | 5 |
Eyes | 12 |
Nose | 66 |
Mouth | 3 |
Jaws | 17 |
… | |
привет автоэнкодер
Сравнение embedding
Hair | 5 |
Eyes | 12 |
Nose | 66 |
Mouth | 3 |
Jaws | 17 |
Hair | 7 |
Eyes | 11 |
Nose | 66 |
Mouth | 5 |
Jaws | 17 |
distance(A,B)
От классификации к кластеризации
CNN
K-means, DBScan
KNN
Cosine similarity
Косинусная близость [-1 .. 1]
Скалярное
произведение
def.
или
Норма/длина
def.
Нормализация -> проекция на гиперсферу
Если нормировать вектора так, чтобы их длины были равны 1-це, то все точки будут лежать на сфере радиусом 1, а косинусное расстояние будет равно скалярному произведению (т.к. |A||B| == 1)
Как отрезать хвост в Pytorch
embedding size
Сиамские сети (Siamese network)
Одна архитектура, параметры и веса совпадают
Contrastive Losses
Softmax
zi - anchor,
zj - positive,
zk - negative (k != i, k!= j)
Считается на наборе примеров:
…
CosineEmbeddingLoss
Идентификация. Постановка задачи
F
Target
Imposter
>= d
< d
F
порог
F (x,y) -> [0,1]
Для косинусной близости:
Triplet Loss
Triplet Loss in Pytorch
Triplet mining. Проблема.
N фотографий позволят составить N3 троек
a – anchor, p - positive sample
Triplet mining
Offline triplet mining
Собрать все сложные тройки заранее и сформировать датасет из троек
Online Triplet Mining
*в batch должны присутствовать как позитивные так и негативные пары, это нужно учесть при выборе стратегии семплирования из датасета
ArcFace
Cross entropy loss =
si = Wix = ||Wi|| ||x|| cos(𝜃i)
1.Можем заменить логиты на
так как
2. Если нормировать Wi и x то
si = cos(𝜃i)
где 𝜃i угол между вектором весов и эмбеддингом
x = embedding
3. Заменив si на cos(𝜃i) в CE получим
4. Добавим margin к углу
ArcFace
2018 ArcFace: Additive Angular Margin Loss for Deep Face Recognition
Если модель возвращает эмбеддинг то слой классификатора добавляют в объект лосс-а и его он тоже учиться
Классификационные функции потерь
cos(𝜃+m)
cos(𝜃)-m
cos(𝜃*m)
cos(𝜃)
logit=
combined
Metrics
MI
(independent of cluster count)
Normalized MI
Precision & Recall
Распознавание лиц
Идентификация. Постановка задачи
F
Target
Imposter
>= d
< d
F
порог
F (x,y) -> [0,1]
Для косинусной близости:
Метрики
порог
Equal Error Rate
FRR = FN / Target_count
FAR = FP / Imposter_count
Метрики
DET - detection error trade-off curve
(КОО - кривая компромиссного определения) ошибки
Face Recognition Vendor Test
the Face Recognition Vendor Test (FRVT) competition of the U.S. National Institute of Standards and Technology of the US Department of Commerce (NIST)
FNMR
FMR
FNMR (false non-match rate) is the proportion of mated comparisons below a threshold
FMR (false non-match rate) is the proportion of impostor comparisons at or above that threshold
Датасеты
cooperative
Датасеты
Ferret (1995 -2000) 14000/1200 + 2Y
https://en.wikipedia.org/wiki/FERET_database
Labeled Faces in the Wild знаменитости 12K
http://vis-www.cs.umass.edu/lfw/
MSCeleb
https://megapixels.cc/msceleb/
MegaFace (2017)
http://megaface.cs.washington.edu/
Face analysis in the wild using synthetic data alone
Предобработка
1.Обнаружение лиц (face detection)
MTCNN (2016) https://arxiv.org/abs/1604.02878
FaceBoxes(2017) https://arxiv.org/abs/1708.05234
HOG — Histograms of Oriented Gradients.
Выравнивание Face Alignment
Ключевые точки: центры глаза, уголки рта, нос … должны занимать на всех изображениях одно и то же положение.
Нахождение ключевых точек (facial landmark detection)
Аффинные преобразования
Отображение плоскости или пространства в себя, при котором параллельные прямые переходят в параллельные прямые, пересекающиеся — в пересекающиеся, скрещивающиеся — в скрещивающиеся.
M =
2.Предобработка
Выравнивание
Нормализация
MTCNN (Multi Task CNN)
Loss
+
𝛼land
𝛼land
𝛼det
+
regression
classification
(binary cross entropy)
Facenet-pytorch
M =
кроме bounding box и ключевых точек, можно предсказывать еще и коэффициенты матрицы аффинных преобразований
MTCNN example
Схема идентификации по лицу
Извлечение признаков (feature extraction)
поиск
Предобработка
embedding
Сжатие
embeddings
Jeff Bezos
Not found
someone else
Нормализация
Выравнивание
Поиск ключевых точек (landmarks)
Face detector
локализация
Поиск
HNSW Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs
Faiss is a library for efficient similarity search and clustering of dense vectors.
HNSW (Hierarchical Navigable Small World)
Hierarchical Navigable Small Worlds (HNSW)
https://medium.com/@slavahead/list/similarity-search-598d963ad35e
Демонстрация
ДЗ
Обучить модель для распознавания лиц
Дополнительные материалы
TPE (Triplet Probabilistic Embedding)
Расстояние Sw считается при помощи матрицы весов W. Веса подбираются методом градиентного спуска
Consider a triplett:= (vi,vj,vk), where vi(anchor) and vj(positive) are from the same class, but vk(neg-ative) belongs to a different class.
Samplers
https://pytorch.org/docs/stable/data.html#torch.utils.data.Sampler
Сравнение/кластеризация : Loss функция
Нахождение ключевых точек (facial landmark detection)
Преобразование изображения к нормализованному виду можно осуществить при помощи аффинных преобразований:
Метрики
DET - detection error trade-off curve
(КОО - кривая компромиссного определения) ошибки