Знайомі обличчя: алгоритми створення «типового» портрету

Знайомі обличчя: алгоритми створення «типового» портрету
Наприкінці минулого року ми завершили R&D-проект, який присвячений методам машинного зору в обробці зображень. В результаті, на основі двох тисяч фотографій розробників із восьми країн, ми створили портрет середньостатистичного програміста. І, попри поширену думку, у типового програміста немає бороди.

Для аналізу взяли фото 1541 чоловіків та 512 жінок, котрі працюють із DataArt у восьми країнах світу. Як результат, отримали узагальнені портрети програмістів – чоловіка та жінки.

Середньостатистичні програмісти – чоловіки та жінки, зібрані алгоритмом із портретів більше 2 тис. людей

Для злиття попередньо опрацьованих алгоритмом облич за основу було взято метод Саті Малек, який базується на виокремленні головних 68 точок кожного обличчя у вибірці — координат кутиків очей, брів, губ, носа тощо. Після цього обличчя було поділено на трикутники (тріангульовані) за головними точками, колір пікселів всередині отриманих трикутників для всіх облич було усереднено. Код проекту написаний на мовах C++ із використанням фреймворків dlib/opencv.

За словами автора проекту, Андрія Сорокіна, найбільшою проблемою було велике споживання пам’яті (більше 4 Гб), необхідної для злиття сотень зображень. Завдання також ускладнювалось через низьку якість фото та різні ракурси моделей. Проблеми було вирішено – обсяг споживаної пам’яті не перевищує 100 Мб.

На другому етапі дослідження інженери DataArt спробували з’ясувати, чи впливає на зовнішність розробника вибір технології — чи відбувається справжня професійна деформація?

Для того, щоб портрет «типового» програміста був із характером, для кожної групи використали спектральний аналіз векторів, які відповідають конкретним рисам обличчя.

Експеримент показав, що певна різниця існує: наприклад, розробники на Java більш усміхнені, а у фахівців .Net гірший зір — вони часто носять окуляри.

Розробник Java, розробник .Net