Во-первых был подобран датасет: DeepFashion2 (https://github.com/switchablenorms/DeepFashion2). Объёмный, свежий, с хорошей разметкой - идеально для нашей задачи (за исключением малости категорий, всего 13). Статистика датасета:
Плюсом к датасету была статья (https://arxiv.org/pdf/1901.07973.pdf) содержащая много полезного: предлагаласть метрика + opensourse код для неё, также описывалось решение нашей задачи архитектурой Mask R-CNN и получение данных результатов:
Table 1: Clothes detection trained with released DeepFashion2 Dataset evaluated on validation set.
AP | AP50 | AP75 |
---|---|---|
0.638 | 0.789 | 0.745 |
Table 2: Clothes detection on different validation subsets, including scale, occlusion, zoom-in, and viewpoint.
Scale | Occlusion | Zoom_in | Viewpoint | Overall | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
small | moderate | large | slight | medium | heavy | no | medium | large | no wear | frontal | side or back | ||
AP | 0.604 | 0.700 | 0.660 | 0.712 | 0.654 | 0.372 | 0.695 | 0.629 | 0.466 | 0.624 | 0.681 | 0.641 | 0.667 |
AP50 | 0.780 | 0.851 | 0.768 | 0.844 | 0.810 | 0.531 | 0.848 | 0.755 | 0.563 | 0.713 | 0.832 | 0.796 | 0.814 |
AP75 | 0.717 | 0.809 | 0.744 | 0.812 | 0.768 | 0.433 | 0.806 | 0.718 | 0.525 | 0.688 | 0.791 | 0.744 | 0.773 |
Конечно, можно просто пойти по стопам составителей датасета, но мы всё-таки используем инновационные технологии) Воспользуемcя архитектурой YOLO и мы получим более быстрое и точное решение. Преобразовав датасет в COCO Data, модифицировав cfg для COCO (config можно найти в https://github.com/AlberetOZ/WondeRobe_Clothes_test/tree/master/yolo/df2cfg), переходим к обучению с помощью фреймворка Darknet: ./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74
Полученные веса (checkpoints) лежат в https://drive.google.com/drive/folders/1bKmHJyScpTRlWuVS4Uy6qh1DYhqy8zaf?usp=sharing
Мы получили неплохую демо версию Детектрона атрибута одежды (Примеры работы можно найти в https://github.com/AlberetOZ/WondeRobe_Clothes_test/tree/master/output). В перспективе этот проект можно оптимизировать (тем более если потребуется работа с видеопотоком), расширить количество категорий одежды, модифицировать сетку и многое другое, + определять также цвет/стиль и др. По времени было затрачено ~20 часов.