Обычное объяснение 07-Face-Detection->face_recognitionРаспознавание лиц
Видеоурок 19. Различайте лица: https://singtown.com/learn/50033/
Распознавание лиц с использованием функций LBP.
AT&T сталкивается с базой данных:\ Каталог содержит коллекцию лиц, сделанную в период с апреля 1992 по апрель 1994 года в исследовательской лаборатории Оливетти в Кембридже, Англия.
Есть 10 разных изображений 40 разных предметов. Для некоторых испытуемых изображения были сделаны в разное время со слегка меняющимся освещением, выражением лица (глаза открыты/закрыты, улыбаются/не улыбаются) и деталями лица (в очках/без очков). Все изображения сделаны на темном однородном фоне, объект находится в правом верхнем углу, фронтально (с допуском некоторого бокового движения).
Эти файлы имеют формат PGM и их можно легко просмотреть с помощью программы «xv». Каждое изображение имеет размер 92x112, 8-битные оттенки серого. Изображения разделены на 40 каталогов (по одному на каждую тему) с именем: sX
Где X представляет номер темы (от 1 до 40). В каждом каталоге имеется 10 разных изображений для выбранной темы с именем: Y.pgm
где Y представляет изображения определенной темы (от 1 до 10).
При использовании этих изображений указывайте авторство Olivetti Research Laboratories.\ Удобный справочник — задание по распознаванию лиц с использованием некоторых из этих изображений:
Ф. Самария и А. Хартер\ «Параметризация стохастических моделей распознавания лиц»\ 2-й симпозиум IEEE по приложениям компьютерного зрения\ ------------------Декабрь 1994 г., Сарасота (Флорида).
# 用LBP特征进行人脸识别。
# 见 Timo Ahonen's "Face Recognition with Local Binary Patterns".
#
# 运行示例之前:
# 1) 下载AT&T faces数据库http://www.cl.cam.ac.uk/Research/DTG/attarchive/pub/data/att_faces.zip
# 2) 提取并复制orl_faces目录到SD卡根目录。
#
# NOTE: This is just a PoC implementation of the paper mentioned above, it does Not work well in real life conditions.
# 注意:这只是上面提到的论文的一个PoC实现,在现实生活中并不适用。
import sensor, time, image
SUB = "s2"
NUM_SUBJECTS = 5
NUM_SUBJECTS_IMGS = 10
img = image.Image("orl_faces/%s/1.pgm"%(SUB))
d0 = img.find_lbp((0, 0, img.width(), img.height()))
img = None
print("")
for s in range(1, NUM_SUBJECTS+1):
dist = 0
for i in range(2, NUM_SUBJECTS_IMGS+1):
img = image.Image("orl_faces/s%d/%d.pgm"%(s, i))
d1 = img.find_lbp((0, 0, img.width(), img.height()))
dist += image.match_descriptor(d0, d1)
print("Average dist for subject %d: %d"%(s, dist/NUM_SUBJECTS_IMGS))
Официальное объяснение функций документа Singtown Technology OpenMV на китайском языке: