fbpx
  • Обучение Inception-v3 распознаванию собственных изображений

    В моем предыдущем посте мы увидели, как выполнять распознавание изображений с помощью TensorFlow с использованием API Python на CPU без какого-либо обучения. Мы использовали предобученную модель Inception-v3, которую Google уже обучил на тысяче классов, но что, если мы хотим сделать то же самое, но с нашими собственными изображениями?

    Перевод статьи Train Inception with Custom Images on CPU, автор — Sagar Sharma. Ссылка на оригинал — в подвале статьи.

    • Мы будем использовать transfer learning, который поможет нам переобучить финальный слой уже обученной модели Inception-v3 новым категориям с нуля.
    • Это займет около 30 минут на ноутбуке и не требует каких-либо графических процессоров.
    • Мы будем обучать модель на открытой базе данных цветов, которая есть в TensorFlow и бесплатна для скачивания.

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

    одуванчик
    dandelion-in-seed.jpg

    А вот результат:

    результат распознавания изображений Tensorflow

    Мы будем использовать Python 3 и TensorFlow 1.4.

    Если у вас установлена не последняя версия TensorFlow, используйте следующую команду для обновления:

    pip install --upgrade tensorflow

    Обучение на датасете произведем за 4 этапа.

    1. Скачайте tensorflow-for-poets-2

    Создайте новую папку Flowers_Tensorflow. Теперь откройте командную строку и введите:

    git clone https://github.com/googlecodelabs/tensorflow-for-poets-2

    цветы tensorflow

    Это позволит скачать папку «tenorflow-for-poets-2» из репозитория TensorFlow в папку Flower_Tensorflow.

    Эта папка содержит такие файлы, как скрипты, tf_folder и т. д.

    2. Скачайте датасет

    Перейдите по ссылке и загрузите данные цветов. Затем извлеките папку «flower_photos» из только что загруженного файла .tgz и скопируйте ее в папку tf_files. Эта папка содержит 5 категорий: ромашка, одуванчик, роза, подсолнух, тюльпаны и файл LICENSE.txt.

    3. Переобучите модель

    Откройте командную строку в папке tenorsflow-for-poets-2 и введите

    python scripts/retrain.py --output_graph=tf_files/retrained_graph.pb --output_labels=tf_files/retrained_labels.txt --image_dir=tf_files/flower_photos

    tensorflow image recognition training

    Примечание: это одна строка. Просто скопируйте всю команду и вставьте ее в командную строку.

    После нажатия Enter программа начнет создавать файлы .txt в папке C:/tmp/bottleneck/rose и т. д. Она создаст около 7300 файлов bottleneck.txt с и выдаст примерно такой результат:

    bottleneck training

    После этого она начнет обучение и выполнит около 4000 итераций:

    python image recognition tensorflow

    Пока ваш компьютер обучается на новом датасете цветов, я объясню смысл каждой части введенной команды.

    Вся команда может быть разделена на 4 части:

    Вызвать/запустить скрипт retrain.py.

    python scripts/retrain.py

    Создать новый файл графов в папке tf_files (после завершения обучения).

    --output_graph=tf_files/retrained_graph.pb

    Создать новый файл меток в папке tf_files (после завершения обучения).

    --output_labels=tf_files/retrained_labels.txt

    Указать путь к датасету цветов.

    --image_dir=tf_files/flower_photos

    Примечание: вы можете добавить/изменить аргументы в этой части команды.

    Изменить модель, отличную от Inception-v3, «Mobilenet Models»

    --architecture mobilenet_1.0_224

    Tensorboard

    --summaries_dir=tf_files/training_summaries/${write the architecture here}

    Изменение расположения Bottleneck

    --bottleneck_dir=tf_files/bottlenecks

    Изменение количества итераций

    --how_many_training_steps=500

    4. Проверка переобученной модели

    Чтобы проверить модель, просто скачайте любое изображение и скопируйте его в папку «tenorflow-for-poets-2», а затем введите (image.png — это имя файла):

    python scripts/label_image.py --image image.png

    Однако может вылезти ошибка:

    ошибка распознавания

    Чтобы ее устранить, откройте файл label_image.py в папке scripts.

    Перейдите к 74-й строке и измените значения или перейдите по ссылке.

    Измените эти значения:

    input_height = 224 input_width = 224 input_mean = 128 input_std = 128 input_layer = "input"

    На эти:

    input_height = 299 input_width = 299 input_mean = 0 input_std = 255 input_layer = "Mul"

    Теперь, когда мы внесли изменения, давайте выполним проверку на других цветах.

    Маргаритка

    распознавание изображений Tensorflow
    daisy.jpg

    обучение распознаванию изображений цветов tensorflow

    Роза

    roses
    keep-roses-alive-hero.jpg

    tensorflow image recognition

    Подсолнух

    подсолнух распознавание цветов
    sunflower-450231_960_720.jpg0

    процесс обучения

    Тюльпан

    тюльпан
    pink-tulips-4.jpg

    tensorflow распознавание фотографий

    Думаю, можно закончить.

    Если вы хотите провести такой же эксперимент на мобильной платформе, посмотрите этот пост. Но сначала попробуйте сделать описанное выше!