Как классификация изображений, так и классификация звука были сложными задачами для машины, пока на сцену не вышли технологии искусственного интеллекта и нейронных сетей. Исследования по обеим проблемам были начаты десятилетия назад, и что-то плодотворное начало появляться после появления искусственного интеллекта и нейронных сетей.
Классификация всегда является более легкой задачей для людей. Надеюсь, вы все согласитесь. Но я не могу на 100% согласиться с этим утверждением. Почему я противоречу своему собственному утверждению?
Я не сумасшедший, но есть определенные случаи, когда действительно трудно определить, кто такой Джисвин, а кто Джесвин (мои друзья), потому что оба они однояйцевые близнецы, и мы не можем правильно судить только с помощью нашего видения.
Оставьте случай с однояйцевыми близнецами и предположим, что мы заказали бургер с овощами и гамбургер с курицей. Если они не скажут нам, где курица, а где овощи, сможем ли мы правильно распознать ее? Поэтому есть определенные случаи, когда человеческий интеллект терпит неудачу.
Тезисы-это действительно простые примеры из нашей повседневной жизни. Таким образом, вывод из этих примеров состоит в том, что иногда человеческий интеллект также может потерпеть неудачу.
Начало создания TensorFlow Inception v3
Сейчас искусственный интеллект может выполнять практически любые задачи лучше, чем человек. Модель классификации, обученная с большим количеством изображений овощей и куриного бургера, сможет точно распознать куриный бургер и овощной бургер. Если вы не можете с этим согласиться, пожалуйста, попробуйте это, вот ссылка. https://www.tensorflow.org/tutorials/image_recognition
Начальная модель Google, обученная на базе набора данных imagenet, может классифицировать 1000 классов объектов и является открытым исходным кодом Google. Любой может использовать обученную модель или переобучить ее последний слой для новых классов или построить свою собственную классификационную модель.
У них есть действительно хороший учебник для начала https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/ . Если вы еще не прошли через него, пожалуйста, нажмите на ссылку выше, быстро прочтите ее и вернитесь. Это самый простой учебник и хорошая модель, которую я нашел в Google для классификации изображений. Мы будем много говорить об этом в следующих разделах.
Inception-единственная модель, которая, как я обнаружил, дает точные прогнозы за меньшее время, и она очень проста в использовании, а это означает, что она хорошо документирована. Они используют глубокие нейронные сети свертки в начале. Начальная модель уже показала отличную производительность, чем люди, в некоторых визуальных задачах. Я надеюсь, что все читали о создании и все поняли, как мы можем его переобучить.
Классификация звука с использованием начальной модели TensorFlow
Здесь, увидев этот заголовок, вы можете запутаться. Как мы можем обучить модель с аудиофайлами для классификации в начале? Как мы можем это сделать? На самом деле это невозможно с помощью inception. Ваше понимание на 100% до сих пор. Создание может быть обучено только с помощью изображений. Он может выполнять только классификацию изображений. Итак, как мы собираемся решить эту проблему?
Что, если мы сможем конвертировать аудио в изображения? Есть ли какое-либо графическое представление для аудио? Во время исследования я наткнулся на два графических представления для аудиофайлов: спектрограммы и хромаграммы. Спектрограмма — это визуальное представление спектра частот звука или другого сигнала, поскольку они изменяются со временем или какой-либо другой переменной-Википедия. Хромаграмма-это представление времени цветности, аналогичное спектрограмме.
| Источник изображения: Интернет |
Итак, после создания спектрограмм или хроматограмм, можем ли мы обучить начальную модель с этими изображениями? Да, мы можем. Для нас, человеческих глаз, может быть трудно определить закономерность по набору изображений спектрограмм, но то, как он видит изображение, действительно отличается, и это дает удивительные результаты.
Я провел несколько экспериментов с этой техникой. Я объясню, как построить систему распознавания ораторов с помощью inception. Я начал проект в GitHub под названием AudioNet. Он содержит сценарии для обработки аудиофайлов и преобразования их в спектрограммы.
Эксперимент 1: Распознавание динамиков
GitHub: https://github.com/vishnu-ks/AudioNet Примечание: Этот проект тестируется только на Ubuntu 16.04
Прежде чем мы начнем, нам нужны данные для обучения модели. Просто для нашего эксперимента мы можем скачать любую речь великих людей с Youtube в формате MP3. Я написал сценарий для преобразования MP3-файлов в wav-файлы, а затем для обработки wav-файла, чтобы сделать из него спектрограмму. Чтобы продолжить этот эксперимент, убедитесь, что этот файл загружен, извлечен и хранится в той же папке, в которой вы загрузили папку scripts.
Этапы нашего эксперимента:
- Подготовка данных
- Обучение модели
- Тестирование модели
Подготовка данных
На этом этапе первое, что вам нужно сделать, это создать отдельные папки для каждого докладчика и назвать папку именем докладчика. Например, если у вас есть голосовые клипы Барака Обамы и АПДЖ Абдула Калама, вам нужно создать отдельную папку для каждого человека, одну для Обамы и одну для Калама. Затем вы должны поместить голосовые клипы каждого человека в соответствующие папки. И голосовые клипы должны быть в формате MP3. Будет лучше, если общая продолжительность всех голосовых клипов в папке будет такой же, как и во всех других папках. Как только у вас появятся разные папки для динамиков, поместите эту папку в папку data_audio в папке tf_files.
Теперь мы хорошо управляем data_maker.py скрипт в папке scripts. Откройте терминал в папке scripts и введите python data_maker.py
$ cd scripts $ python data_maker.py
Для успешного запуска этого сценария на вашем компьютере должны быть установлены следующие пакеты.
- сокс
- libsox-fmt-mp3
- ffmpeg
- python-tk
После успешного запуска скрипта вы просто заходите в каждую папку динамиков внутри tf_files/data_audio/, вы можете увидеть голосовые клипы, которые в MP3 были преобразованы в wav-файлы, а wav-файлы были разделены на 20-секундные фрагменты, и для каждого фрагмента есть изображение JPG спектрограммы. Это наши тренировочные данные. Если вы хотите, вы можете перейти к скрипту data_maker и изменить продолжительность фрагментов.
Обучение
Как я уже упоминал, мы используем начальную модель Google. Выполните следующие команды, чтобы начать обучение.
$ cd scripts $ IMAGE_SIZE=224 $ ARCHITECTURE="inception_v3" $ python retrain.py --bottleneck_dir=../tf_files/bottlenecks \ --how_many_training_steps=500 \ --model_dir=../tf_files/models/ \ --summaries_dir=../tf_files/training_summaries/"${ARCHITECTURE}" \ --output_graph=../tf_files/retrained_graph.pb \ --output_labels=../tf_files/retrained_labels.txt \ --architecture="${ARCHITECTURE}" \ --image_dir=../tf_files/data_audio
Вы можете увеличить количество шагов обучения, если хотите.
Тестирование
Получите голосовой клип динамика и сгенерируйте спектрограмму его голоса с помощью data_maker.py сценарий или Аудио 2 Спектрограмма . Затем попробуйте протестировать модель, выполнив следующие команды
$ cd scripts $ python label_image.py \ --graph=../tf_files/retrained_graph.pb \ --labels=../tf_files/retrained_labels.txt \ --image=../path/to/generated/spectrogram.jpg
Смотрите видеоурок @ Демонстрация Audionet
Запросы??
По любым вопросам отправляйте письмо по адресу ksvishnu56@gmail.com.
Твоя очередь!!
Попробуйте решить проблему классификации городского звука с помощью inception и поразитесь, увидев результаты.
| Источник изображения: Интернет |
Счастливого кодирования..