Задача компьютерного зрения: определение возможности перенести объект через проём.
Пользователь на вход алгоритма даёт фотографию, на которой есть только стул и дверной проём.
Алгоритм должен уметь определять по фотографии, можно ли стул поступательным движением пронести через дверной проём (т.е дать ответ "да" / "нет").
- Склонировать ветку
iteration-3
- Запустить
project.ipynb
Входные изображения пользователя должны соответствовать следующим требованиям:
- Формат *.jpg.
- На фотографиях есть только стул и дверной проём. Наличие других предметов крайне нежелательно.
- Стул и дверь должны целиком влезать в кадр.
- Фотографии должны быть сделаны при хорошем освещении.
- Дверь должна занимать по высоте не менее 70% от кадра (то есть фотографии издалека не подойдут).
- Наличие большого числа теней нежелательно.
- Очень желательно, чтобы фон на фотографии был однотонным.
- Детектирование стула с помощью ORB-детектора. При этом применяется подбор "наилучшего" шаблона для стула
- По данным п.1 определение ширины фигуры стула
- Детектирование двери с помощью преобразования Хафа для прямых
- По данным п.3 определение ширины проёма
- Сравнение ширины стула и проёма, выдача вердикта "да"/"нет"
(в файле project.ipynb, см. pull request)
- Был создан датасет. Все фотографии отвечали требованиям к входным данным.
- Датасет был размечен с помощью папок
yes
иno
- Были добавлены фотографии стула на белом фоне (шаблоны)
- Попробовал применить фильтр Канни для поиска границ. Результат неудовлетворительный
- Попробовал применить бинаризацию + Канни. Результат неудовлетворительный.
- Попробовал применить морфологические операции. Границы стали более чёткими, но результат всё ещё неудовлетворительный.
- Первая попытка применить ORB-детектор. Рисовал прямоугольник вокруг стула - получалось неправильно.
Попробовал много методов, но существенных результатов не получил.
- Попробовал ORB-детектор с большим числом особых точек. Вместо прямоугольника вокруг стула стал рисовать соответствия между особыми точками стула на шаблоне и стула на фотографии. Результат приемлемый.
- Сделал так, что для ORB-детектора подбирается наиболее подходящий шаблон (максимизирую число "хороших" совпадений).
- Попробовал алгоритм Хафа для поиска двери. Результат очень удачный - ширина двери находится с хорошей точностью.
- Протестировал алгоритм на входных данных.
Получено разумное решение задачи. Метрика accuracy = 77%.
- Учтены замечания ревьюеров по коду
- Добавлено больше шаблонов стула
- Размер датасета увеличен до 50 фотографий
Учтены все замечания и советы ревьюеров. Наблюдается прирост accuracy (77% -> 80%).