MYCSS

2024-04-26

Mодуль "Python Data Science" в IT академії GoIT - проєкт на тему "Автоматизована система паркування".

💡 Закінчили навчання за останнім третім модулем "Python Data Science" в IT академії GoIT - start your career in IT.
🚩 Було створено команду 🇺🇦 розробників - "Neuron Curve Bobr".
🚗 В результаті командної роботи був виконанний груповий проєкт на тему "Автоматизована система паркування".

Дякую 🔥 команді за нашу спільну роботу впродовж напружених 🔨 двох тижнів.


Курсовий проєкт на тему "Автоматизована система паркування".

Згідно з технічним завданням на проєкт: Система автоматично може визначати номери автомобільних знаків на зображеннях з використанням методів машинного навчання.

Функції застосунку:

  • Управління обліковими записами користувачів
  • Візуалізація про кількість вільних та зайнятих паркомісць.
  • Приймання зображень від користувача (симуляція роботи відеокамери)
  • Виявлення та виділення області з номерним знаком
  • Детекція номерного знаку
  • Розпізнавання символів для ідентифікації тексту номерного знаку
  • Перевірка номера авто у базі зареєстрованих транспортних засобів
  • Запис часу в'їзду/виїзду кожного разу, коли визначається номерний знак
  • Відстеження тривалості паркування
  • Розрахунок загальної тривалості паркування
  • Зберігання даних про тривалість паркування в базі даних;
  • Розрахунок вартості паркування. Керування тарифами. Чек за QR-кодом;
  • Генерація звітів про розрахунки, які можна експортувати у форматі CSV
  • Оплата послуги паркування

Проєкт на тему "Автоматизована система паркування".

Data sciense & Computer vision

Пошук зони знаку використовує алгоритми computer vision модуля OpenCV - Haar Cascades.
А розпізнавання кожного номеру реалізовано класифікацією зображення на 36 класів з використанням простої моделі з використанням згорткової нейронної мережі CNN в Keras (Tensorflow). 
Модель тренована була на власних додаткових зображеннях для поліпшення якості розпізнавання і виявлення проблем з подібними знаками такими як літера О і цифра 0.
В процесі вибору алгоритму були протестовані різні рішення, вибрано цей метод за умовною простотою і гарними результатами.
 
CNN модель
За причини конфліктів версій модулів для Tensoflow було обмежено максимальну версію Python до версії 3.11.
tensorflow-io-gcs-filesystem==0.31.0 ; python_version >= "3.10" and python_version < "3.12"
 

Front-end

З метою швидкості реалізації візуальної частини у межах посталеного терміну на проєкт два тижні було вибрано фреймворк Django. В цьому проєкті використано версію Django 5.0.4.
Але були заділи  та ідеї на використання фреймворку FastAPI для реалізації  чистого backend, є початкова гілка у гіт проєктів для цього, але час є час.
Django прекрасно справлявся з задачею побудови та виявлення змін у моделі  бази даних створюючи версійність міграцій змін. У ролі бази даних використано Postgress.

Проєкт у Visual Studio Code

Структура бази даних

Sheduler

Для роботи додаткового функціонала для системи  сповіщень та роботу Telegram Bot використано власний модуль sheduler.py  якій виконується як окремий процес.
З навчальною метою та без наявності постійного хостингу модуль Telegram Bot працює використовуючи метод pooling без використання web-hooks.
Для зберігання даних необхідних для роботи бота, використано системний файловий кеш Django, але в ідеалі мав би бути використаний зовнішній сервер Redis або сервер Memcache.


CI/CD

В проєкті реалізовано найпростіше рішення для CI/CD що дозволило повністю реалізувати автоматичне розгортання на орендованому сервері.
Для неперервної інтеграції (англ. Continuous Integration) - CI використано функціонал GitHub Action для перевірки коду на можливі помилки перед кожним merge у кожному pull-request від розробників команди.
Для безперервного доставлення (англ. Continuous delivery) - CD використано власний bash скрипт  котрий перевіряє гілку git за розкладом у cron, та перебудовує docker контейнери у разі виявлення змін.


Посилання

Склад команди:

  1. Team Lead: Artem Dorofeev. GitHub
  2. Scrum Master: Rostyslav Bysko. GitHub  
  3. Django expert: Tetiana Chyrkova. GitHub, GitHub
  4. Full stack devops : Lex XaiGitHub
  5. Art director: Евгений Плахотин. GitHub
  6. Tester: Oleksander BorovykGitHub

Youtube




Слайд шоу


















PDF

#python #datascience #machinelearning #django #tensorflow #opencv

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready