проваливая свой путь к точности 92%
Последние две недели я работал над чем-то особенным. Сверточная нейронная сеть, способная различать два человеческих лица. Вот как я построил модель: от сбора данных до построения модели.
Построение первой модели
Приступая к этому проекту, у меня не было опыта работы с нейронными сетями. Я совсем заблудился - «обучающий итератор», «функция активации», что вообще значили эти слова?
Целью было построить полноценную CNN, но я не мог даже собрать свои данные. Если я хотел завершить этот проект, мне нужно было учиться и быстро. Так что я делал все по-старому, надежно, просматривая каждую строчку кода, которую не понимал. От импорта библиотек до прогнозирования я медленно, но верно получал глубокое понимание кода.
И, наконец, с кофеином, уроками на YouTube и большим количеством Stackoverflow я наконец смог собрать свою модель. Ощущение было невероятным. И так довольный своей моделью, я решил увидеть ее волшебство. Сидя перед моим экраном, модель начала работать, я в предвкушении вдохнул, как моя модель - разбилась и сгорела.
Отказ
Модель, которую я построил, не работала. Я получил диагноз с точностью 96%, но когда дело дошло до фактического использования, он показал себя не лучше, чем подбрасывание монеты. Это (что я позже понял) было побочным продуктом переобучения и логических проблем в моем коде.
Но я упорно решил продолжать развивать эту модель, изменяя небольшие параметры, надеясь, что они решат эту серьезную проблему. Однако все это было бессмысленно, эту модель невозможно было восстановить, и в конечном итоге через полторы недели я все выбросил.
Раунд 2
Я бы не стал рассказывать эту историю, если бы так закончил. Используя навыки, которые я случайно получил при построении моей первой модели, я вложил все свои силы во вторую модель.
На этот раз я решил больше исследовать логику, такую как VGG и тщательно визуализировать все ячейки, чтобы убедиться, что моя модель делает то, что должна.
И это окупилось.
В течение 3-4 дней я смог собрать свой функционирующий CNN с точностью 92%. Это намного лучше, чем подбрасывание монеты.
Уроки выучены
Пустышка, проверь свой код. В течение всего этого процесса я потратил часы на код, который можно было решить за считанные минуты. В нейронных сетях логических ошибок будет больше, чем синтаксических. Перед тем, как переполнить стек, перечитайте свой код, чтобы убедиться, что все в точности так, как вы этого хотите.
Будь ленив. Такие задачи, как сбор данных ОТСТОЙ. Найдите самый ленивый (и самый умный) способ сделать это. Для своего процесса я использовал Birme (упрощенное массовое изменение размера изображений), что буквально сэкономило мне часы работы. Попробуйте найти способы облегчить себе жизнь в Интернете.
Обращайтесь за помощью. Это настоящее сокровище - мои друзья, которых я завел на своем пути! Ну, не совсем, но они очень помогли. Получение второй пары глаз и нового ракурса было одним из самых полезных моментов в этом проекте.
Полученные результаты
Мой код:
Видео:
Этот проект был одним из самых сложных, что я делал с ИИ. К тому же он был самым ценным. Если вы хотите и дальше следить за моими новыми проектами, нажмите внизу или свяжитесь со мной по любой из этих ссылок ниже.
Свяжитесь со мной
"Эл. адрес"