3. Домашнє завдання, етап №3 - linvieson/emotions-recognition GitHub Wiki

Emotions Recognition by Photo Project

Опис абстрактних типів даних

Image ADT

Цей клас міститиме наступні атрибути:

  • link - посилання на фотографію (str);
  • all_atributes - усі атрибути фотографії (спеціальний об’єкт DetectedFace (тип, що надається Microsoft Azure API) з усією інформацією отриманою з сервісу);
  • emotions - інформація про всі емоції, що наявні на фотографії (список спеціальних об’єктів типу Emotion ADT);
  • picture - сама картинка, для подальшого її представлення (об’єкт типу Image)
  • rectangle - координати прямокутнику, у якому міститься обличчя на фото (список спеціальних об’єктів типу Coordinate (тип, що надається Microsoft Azure API))

Окрім описаних атрибутів у цього класу будуть наступні методи:

  • __parse_image_info() - приватний метод, який отримуватиме дані про зображення, посилання на яке є одним з атрибутів об’єкта. Цей метод буде змінювати атрибути all_atributes, picture, emotions, rectangle і зберігати там необхідні для подальшого використання та отримані з запиту дані;

Під час ініціалізації об’єкту типу Image ADT необхідно вказати посилання на картинку, яка буде оброблятись. Також у кожному методі буде здійснено перехоплення та обробка можливих винятків.

Emotion ADT

Цей клас міститиме характеристику окремої емоції і міститиме наступні атрибути:

  • emotion - власне емоція, яка аналізується (str);
  • percentage - відсоток цієї емоції (float);
  • life_average - відсоток цієї емоції у житті середньостатистичної людини (float).

Окрім описаних атрибутів у цього класу будуть наступні методи:

  • __get_life_average() - приватний метод, який отримуватиме дані про емоцію(її ім'я), та за цими даними визначить та змінить атрибут life_average;

Для ініціалізації об’єкту типу Emotion ADT треба вказати емоцію та її відсоток на фото.

InstagramPage ADT

Цей клас відповідатиме за відображення інстаграм-сторінки як об’єкту. Він матиме такі атрибути:

  • link - посилання на інстаграм-сторінку (str);
  • photos - список фото з профілю в інстаграмі (усі елементи списку - об’єкти типу Image ADT);
  • average_emotions - список всіх емоцій у профілі (усі елементи списку - об’єкти типу Emotion ADT, які містять їх відсоток у цьому профілі);
  • happiest_photo - об’єкт типу Image ADT, що відображає найщасливіше фото з профілю.

Для коректної роботи цього класу будуть реалізовані наступні методи:

  • relative_fakeness() - метод, який повертатиме відносний відсоток фейковості емоцій профілю порівняно з середньостатистичними емоціями людини (повертає float);
  • write_to_file(path: str) - метод для записування у файл за вказаним шляхом статистичних даних щодо певного профілю в інстаграм. Для ініціалізації методу необхідно вказати посилання на профіль в інстаграмі у форматі “https://instagram.com/…”;
  • visualize() - метод, який виводитиме на екран статистику профіля у графіках та діаграмах.
  • __parse_page_info() - приватний метод, який отримуватиме дані про інстаграм сторінку, посилання на яку є одним з атрибутів об’єкта. Цей метод буде змінювати атрибути photos, happiest_photo, average_emotions і зберігати там необхідні для подальшого використання та отримані з запиту дані;

Діаграми необхідних структур даних


Діаграми абстрактних типів даних