проваливая свой путь к точности 92%

Последние две недели я работал над чем-то особенным. Сверточная нейронная сеть, способная различать два человеческих лица. Вот как я построил модель: от сбора данных до построения модели.

Построение первой модели

Приступая к этому проекту, у меня не было опыта работы с нейронными сетями. Я совсем заблудился - «обучающий итератор», «функция активации», что вообще значили эти слова?

Целью было построить полноценную CNN, но я не мог даже собрать свои данные. Если я хотел завершить этот проект, мне нужно было учиться и быстро. Так что я делал все по-старому, надежно, просматривая каждую строчку кода, которую не понимал. От импорта библиотек до прогнозирования я медленно, но верно получал глубокое понимание кода.

И, наконец, с кофеином, уроками на YouTube и большим количеством Stackoverflow я наконец смог собрать свою модель. Ощущение было невероятным. И так довольный своей моделью, я решил увидеть ее волшебство. Сидя перед моим экраном, модель начала работать, я в предвкушении вдохнул, как моя модель - разбилась и сгорела.

Отказ

Модель, которую я построил, не работала. Я получил диагноз с точностью 96%, но когда дело дошло до фактического использования, он показал себя не лучше, чем подбрасывание монеты. Это (что я позже понял) было побочным продуктом переобучения и логических проблем в моем коде.

Но я упорно решил продолжать развивать эту модель, изменяя небольшие параметры, надеясь, что они решат эту серьезную проблему. Однако все это было бессмысленно, эту модель невозможно было восстановить, и в конечном итоге через полторы недели я все выбросил.

Раунд 2

Я бы не стал рассказывать эту историю, если бы так закончил. Используя навыки, которые я случайно получил при построении моей первой модели, я вложил все свои силы во вторую модель.

На этот раз я решил больше исследовать логику, такую ​​как VGG и тщательно визуализировать все ячейки, чтобы убедиться, что моя модель делает то, что должна.

И это окупилось.

В течение 3-4 дней я смог собрать свой функционирующий CNN с точностью 92%. Это намного лучше, чем подбрасывание монеты.

Уроки выучены

Пустышка, проверь свой код. В течение всего этого процесса я потратил часы на код, который можно было решить за считанные минуты. В нейронных сетях логических ошибок будет больше, чем синтаксических. Перед тем, как переполнить стек, перечитайте свой код, чтобы убедиться, что все в точности так, как вы этого хотите.

Будь ленив. Такие задачи, как сбор данных ОТСТОЙ. Найдите самый ленивый (и самый умный) способ сделать это. Для своего процесса я использовал Birme (упрощенное массовое изменение размера изображений), что буквально сэкономило мне часы работы. Попробуйте найти способы облегчить себе жизнь в Интернете.

Обращайтесь за помощью. Это настоящее сокровище - мои друзья, которых я завел на своем пути! Ну, не совсем, но они очень помогли. Получение второй пары глаз и нового ракурса было одним из самых полезных моментов в этом проекте.

Полученные результаты

Мой код:



Видео:

Этот проект был одним из самых сложных, что я делал с ИИ. К тому же он был самым ценным. Если вы хотите и дальше следить за моими новыми проектами, нажмите внизу или свяжитесь со мной по любой из этих ссылок ниже.

Свяжитесь со мной

"Эл. адрес"

Linkedin