1. Домашнє завдання, етап №1 - linvieson/emotions-recognition GitHub Wiki
Emotions Recognition by Photo Project
Тема дослідження та опис програми
Цей проєкт – майбутній веб-застосунок, який буде працювати з фотографіями мережі Instagram.
Він дозволить проаналізувати обраний профіль і надати статистику щодо його емоційного забарвлення. Особливість нашого застосунку — можливість побачити відмінності між відсотковим розподілом емоцій автора профілю та середньостатистичними показниками людини в нормі.
Більшість блогерів поширює лише щасливі фотографії, тому це створює ілюзію, ніби у всіх в мережі завжди все добре. Таке явище негативно впливає на свідомість і самооцінку людей, що кожного дня переглядають нескінчені радісні фотографії людей у стрічці і думають, що з ними щось не так.
Наш застосунок дасть змогу переглянути які саме емоції приховує автор від камери, та в якому степені, щоб допомогти користувачу зрозуміти наскільки спотворена картина, яку він бачить. Деякі люди можуть усвідомити це самостійно, проте відсутність доказів залишає простір для сумнівів, тому, наприклад, є популярними такі профілі як celebface та beauty.false, що викладають невідредаговані фото зірок та показують неякісний фотошоп світлин відомих блогерів (вгнуті стіни на рівні талії та ін.), щоб доказати оманливість картинки, яку ми бачимо, та зменшити комплекси людей щодо своєї зовнішності. Однак чимало інфлюенсерів не тільки шкодять прийняттю власної зовнішності підписниками, але й ставленню до своїх негативних емоцій. Створюється враження, ніби це ненормально відчувати злість, сум, огиду, які є звичайною частиною життя будь-якої психічно здорової людини.
На жаль, доказати фейковість емоцій складніше, аніж знайти викривлення на фотографії, тому тут допоможе наш застосунок, що сприятиме здоровому ставленню до власних емоцій та поліпшенню психологічного стану користувачів.
Опис функціональних можливостей API
Для виконання поставленої задачі було вирішено скористатися двома API.
Microsoft azure API
Данне API призначене для пошуку та аналізу обличь на фотографіях. Воно надає можливість знаходити точну позицію обличчя на фотокартці, ідентифікувати на ній людину, знаходити схожі обличчя, створювати пов’язані групи осіб на основі фотографій та багато іншого. Особливо важливою для нашого проєкту є можливість визначати різні характеристики обличь з фотографій. Microsoft azure API дозволяє визначити наступні характеристики: наявність аксесуарів, вік, наявність бороди чи вусів, стать, наявність окулярів, волосся, позу, посмішку, наявність маски, а найголовніше - емоції. Саме остання характеристика і є основною для нашого проєкту. Список можливих для визначення емоцій наступний:
- Злість
- Презирливість
- Відраза
- Страх
- Щастя
- Нейтральність
- Сум
- Здивованість
Всі вони представляються у вигляді словника, де ключі - назви емоцій, а значення - пропорція цієї емоції на фотографії. При цьому сума всіх значень складає одиницю, а відображаються ввони з точністю до тисячної. Важливо також те, що Microsoft azure API дозволяє здійснювати аналіз фотографії як локально збереженого файлу, так і картинки з мережі інтернет, що спрощує його використання, адже звільняє розробника від необхідності завантажувати всі файли для їх аналізу. Приклад використання знаходиться у example_emotion_recognition.py
Instagram API By Prasadbro
Це API дозволяє отримати майже всю можливу публічну інформацію про користувачів інстаграму. Локації постів, пов’язані профілі, підписники, деталі поста, збережені історії, пости користувача, хештеги, коментарі, айді користувача та багато іншого. Для нашого ж проекту важливий саме пункт з отриманням інформації про пости за нікнеймом користувача. Instagram API надає можливість отримати інформацію з 18 останніми постами користувача, у якій містяться і посилання на фотографії, що були застосовані у цьому пості як обкладинка. Приклад використання знаходиться в examples/example_photo_links.py
Вимоги на систему (System Request)
Спонсори проекту (Project Sponsors)
- Аліна Вороніна, студентка КН
- Аніта Гродзицька, студентка КН
- Михайло Пасічник, студент КН
- Олександра Цепілова, студентка КН
- Ярослав Романус, студент КН
Бізнес потреба (Business Need)
- Аналіз емоцій користувача за його профілем в Інстаграмі, на основі результатів якого стає можливим створення актуальної таргетованої реклами та персоналізованих рекомендацій.
- Аналіз фейковості емоцій у профілях користувачів в Інстаграмі.
- Отримання порівняльної статистики між емоціями в Інстаграм профілі та середньостатистичними емоціями людини.
- Демонстрація розбіжностей між реальним життям та життям у соціальних мережах, а надто їх емоційними складовими.
Бізнес вимоги (Business Requirements)
- Надання статистичних даних щодо емоційних складових користувача в Інстаграмі, на основі аналізу контенту з його профілю.
- Демонстрація порівняльної статистики між емоціями в Інстаграм профілі та середньостатистичними емоціями людини, що дозволить визначити основні емоції, які відчуває користувач та вирахувати їх фейковість.
- Візуалізація отриманих даних з використанням графіків, діаграм та інших графічних об’єктів.
Бізнес вигоди (користь) (Business Value)
- Збільшення переходів за рекламними посиланнями та, відповідно, збільшення продажів, завдяки більш точній персоналізації рекомендацій.
- Зменшення негативних емоцій (заздрість, сум, гнів і т.д.) після перегляду стрічки в соціальних мережах, внаслідок усвідомлення користувачем, що контент в Інстаграмі не завжди відповідає дійсному життю впливових людей та контент-мейкерів.
- Візуалізація даних, що спрощує сприйняття статистики.
Питання та обмеження (Special Issues or Constraints)
- Граничний термін розробки - 17 травня 2021 року.
Можливості Git, GitHub та сценарій розробки проекту
Після вивчення можливостей системи контролю Git та сховища GitHub для забезпечення колективної роботи над проектом, ми з командою вирішили, що реалізуємо наступний сценарій командної роботи:
Ми створили спільний репозиторій, автором якого є Аліна Вороніна, а всі інші учасники команди - contributors:
Також кожен учасник команди зробив свою власну гілку, в якій буде розробляти свою частину роботи та потім мерджити її з головною гілкою main. Ми вибрали саме цей сценарій розробки нашого проекту, бо інший запропонований сценарій “Fork + Pull” менше підходить для нашої команди(в нас маленька команда, тому краще користуватися сценарієм з branches).
При створенні гілок ми використували команду git checkout -b name, що дорівнює двом командам: git branch name - створення бранчі та git checkout name - перехід на іншу гілку. Також, звісно, будемо використовувати команду git pull - для стягування змін з віддаленого репозиторію у локальний та три “класичні: команди - git add, git commit, git push. Для злиття гілок(внесення змін в головну гілку main проекту або перенесення змін, зроблених іншими учасниками в власну гілку) ми будемо використовувати команду git merge. Якщо будуть виникати якісь конфлікти при merge, будемо пробувати їх вирішувати(за допомогою visual studio ,наприклад, в якому видно два можливі варіанти що призвели до конфлікту, та є можливість вибрати один з них або два одночасно).
Тому, сценарій розробки проекту буде наступний:
- кожного нового етапу виконання проекту команда ділить завдання та після цього кожен учасник отримує власне завдання до дедлайну
- під час виконання завдання, кожен учасник виконує його у власній гілці локально
- після обговорення командою результатів виконання завдання кожного учасника ми “зливаємо” всі оновлення в основну гілку main та вирішуємо всі конфлікти, які виникнуть
- після кожного оновлення(можливо, кожного дня), коли учасник буде починати свою роботу, він буде “пулити” все з віддаленого репозиторію і оновлювати свою гілку відповідно.
Також, якщо під час розробки проекту ми відчуємо, що щось зробили не так, то ми завжди можемо повернутися до попереднього коміту - git revert , commit hash ми дізнаємося за допомогою команди git log.
Також, якщо нам треба буде змінити історію коммітів, то ми можмо скористатися командою git rebase, а якщо треба буде змінити комміт без зміни історії - git cherry-pick.