Date post: | 13-Apr-2017 |
Category: |
Education |
Upload: | sergey-shatov |
View: | 14 times |
Download: | 0 times |
Взаимодействие с VK API
● Распознавание лиц проводилось на основе C++ и OpenCV, было скомпилировано отдельное приложение которое вызывалось через консоль.
● Все найденные лица вырезались и масштабировались до определённого размера, например 32х32.
Аватарки
Распознаваниелиц
Приведение к одному размеру
Лица
Проблема
● Нужно повторить целевую картинку используя только собранные лица.
Задача о назначениях
● Есть множество исполнителей и работ, и каждой паре {исполнитель, работа} присвоена стоимость (штраф, ошибка, потеря, etc).
● Нужно каждой работе присвоить такого исполнителя, что бы минимизировать суммарную стоимость.
Пример задачи
Сделать веб-интерфейс
Написать сервер Презентовать заказчику
Фронтенд-щик 150 900 300
Бекенд-щик 350 500 400
ПМ 500 1200 100
Нужно назначить исполнителя для каждой из работ
Приведение задачи к проблеме
● Есть матрица, где каждый рядок и столбик это определённые пиксели и лица.
● Элементы матрицы – это расстояние между интенсивностью пикселя и среднего цвета лица.
Лицо 1,1 Лицо 1,2 - - - Лицо n,n-1 Лицо n,n
Пиксель 1,1 1.3 2.1 - - - 1.14 0.98
Пиксель 1,2 0.77 1.6 - - - 1.9 1.4
| | | | | | | | | \ \ | | | | | |
Пиксель n,n-1 1.5 1.72 - - - 1.22 2.21
Пиксель n,n 2.1 0.6 - - - 0.94 1.65
Решение задачи
● Решение в лоб – перебор всех пар назначений, если перестановка уменьшает целевую функцию, то она производится. Сложность O(2^n).
● Венгерский алгоритм – решение задачи на основе элементарных преобразований. Сложность O(n^4).
● Выбранный способ:
from scipy.optimize import linear_sum_assignment