Искусственный интеллект с классификацией данных за счет компьютерного зрения

42
views

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

Сближение визуального и слухового интеллекта

Традиционно компьютерное зрение фокусируется на анализе и интерпретации визуальных данных. Оно лежит в основе таких приложений, как распознавание лиц, обнаружение объектов и сегментация изображений, преобразуя отрасли от здравоохранения до беспилотных автомобилей. Но в мире, где данные становятся все более мультимодальными, возможность включения в них аудиоданных кардинально меняет ситуацию.

Классификация аудиоданных с помощью компьютерного зрения объединяет две области, применяя принципы визуального восприятия к аудиоданным. Она использует методы глубокого обучения, чтобы «видеть» звук так же, как и изображения. Это нововведение открыло двери для множества приложений, которые ранее были недоступны.

Применение классификации аудиоданных с помощью компьютерного зрения

  1. Анализ звуков окружающей среды : Одно из наиболее важных применений классификации аудиоданных — это анализ звуков окружающей среды. Алгоритмы компьютерного зрения могут обрабатывать аудиоданные для обнаружения и классификации таких звуков, как сирены, сигналы тревоги или крики животных. Это бесценно в таких областях, как городское планирование, охрана дикой природы и общественная безопасность.
  2. Здравоохранение : В медицинской сфере классификация аудиосигналов с помощью компьютерного зрения может использоваться для диагностики респираторных заболеваний. Она позволяет выявлять нарушения дыхания или звуки кашля, что дает возможность своевременно оказать помощь пациентам.
  3. Модерация контента : Онлайн-платформы и социальные сети могут использовать классификацию аудио для выявления разжигания ненависти, нецензурной лексики или неприемлемого контента в аудиосообщениях или прямых трансляциях. Это обеспечивает более безопасную онлайн-среду.
  4. Распознавание голосовых команд : Интегрируя классификацию аудиоданных с компьютерным зрением, мы можем создавать более надежные системы распознавания голосовых команд. Эти системы становятся умнее, распознавая контекст, в котором отдаются команды.

Технология классификации аудиоданных

В основе классификации аудиоданных с помощью компьютерного зрения лежит глубокое обучение. Сверточные нейронные сети (CNN), класс глубоких нейронных сетей, используемых в основном для анализа изображений, адаптированы для обработки спектрограмм или других визуальных представлений звука. Спектрограммы — это двумерные представления аудиоданных, где по оси x откладывается время, а по оси y — частота. Преобразуя аудиоданные в спектрограммы, CNN могут применяться для анализа и классификации аудиоданных, так же как и для изображений.

Предварительная обработка данных

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

Визуализируйте набор данных

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

Разделение на обучающую и тестовую выборки

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

Подготовка данных для проверки

Данные для валидации необходимы для тонкой настройки модели и предотвращения переобучения. Эти данные не используются в процессе обучения, но помогают отслеживать производительность модели и вносить необходимые корректировки.

Модель обучения

Обучение модели — это то, где происходит волшебство. Модели глубокого обучения, как правило, сверточные нейронные сети (CNN), обучаются на данных спектрограммы. Модель учится распознавать закономерности и уникальные «отпечатки пальцев» различных аудиоклассов. Именно здесь модель становится компетентной в классификации аудиоданных.

Прогнозы модели

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

Реализация кода: Превращение звука в изображение.

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

Шаг 1: Установка и импорт библиотек

Первый решающий шаг — преобразование необработанных аудиоданных в спектрограммы. Убедитесь, что у вас установлены необходимые библиотеки:

!pip install -q datasets git+https://github.com/huggingface/
transformers split-folders ultralytics
#lets get the dataset
!git clone https://github.com/karolpiczak/ESC-50.git

# import the libraries
import numpy as np
from matplotlib import pyplot as plt
from numpy.lib import stride_tricks
import os
import pandas as pd
import scipy.io.wavfile as wav

Шаг 2: Визуализация набора данных

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

esc50_df = pd.read_csv('/content/ESC-50/meta/esc50.csv')
esc50_df.head()
def plot_spectrogram(location, categorie, plotpath=None, 
binsize=2**10, colormap="jet"): samplerate, 
samples = wav.read(location)

    s = fourier_transformation(samples, binsize)

    sshow, freq = make_logscale(s, factor=1.0, sr=samplerate)

    ims = 20.*np.log10(np.abs(sshow)/10e-6) # amplitude to decibel

    timebins, freqbins = np.shape(ims)

    print("timebins: ", timebins)
    print("freqbins: ", freqbins)

    plt.figure(figsize=(15, 7.5))
    plt.title('Class Label: ' + categorie)
    plt.imshow(np.transpose(ims), origin="lower", aspect="auto", 
    cmap=colormap, interpolation="none")
    plt.colorbar()

    plt.xlabel("time (s)")
    plt.ylabel("frequency (hz)")
    plt.xlim([0, timebins-1])
    plt.ylim([0, freqbins])

    xlocs = np.float32(np.linspace(0, timebins-1, 5))
    plt.xticks(xlocs, ["%.02f" % l for l in 
    ((xlocs*len(samples)/timebins)+(0.5*binsize))/samplerate])
    ylocs = np.int16(np.round(np.linspace(0, freqbins-1, 10)))
    plt.yticks(ylocs, ["%.02f" % freq[i] for i in ylocs])

    if plotpath:
        plt.savefig(plotpath, bbox_inches="tight")
    else:
        plt.show()

    plt.clf()

    return ims
plot = plot_spectrogram('/content/ESC-50/audio/' + 
esc50_df[esc50_df['category'] == 'crow']['filename'].iloc[0], 
categorie='Crow')

Шаг 3: Обработка данных

conversion = []

for i in range(len(esc50_df.index)):
    
    filename = esc50_df['filename'].iloc[i]
    location = 'dataset/ESC-50/audio/' + filename
    category = esc50_df['category'].iloc[i]
    catpath = 'dataset/ESC-50/spectrogram/' + category
    filepath = catpath + '/' + filename[:-4] + '.jpg'

    conversion.append({location, filepath})
conversion[0]
{'/content/ESC-50/audio/1-100032-A-0.wav',
 '/content/ESC-50/spectrogram/dog/1-100032-A-0.jpg'}
for i in range(len(esc50_df.index)):
    
    filename = esc50_df['filename'].iloc[i]
    location = '/content/ESC-50/audio/' + filename
    category = esc50_df['category'].iloc[i]
    catpath = '/content/ESC-50/spectrogram/' + category
    filepath = catpath + '/' + filename[:-4] + '.jpg'

    os.makedirs(catpath, exist_ok=True)
    
    audio_vis(location, filepath)

Шаг 4: Обучение-Тестирование-Разделение

import splitfolders
input_folder = '/content/ESC-50/spectrogram'
output = '/conent/data'

splitfolders.ratio(input_folder, output=output, 
seed=42, ratio=(.8, .2))

Шаг 5: Подготовка данных для проверки

testing = [
    '/content/data/test/helicopter-fly-over-01.wav'
   
]
def test_vis(location, filepath, binsize=2**10, colormap="jet"):
    samplerate, samples = wav.read(location)

    s = fourier_transformation(samples, binsize)

    sshow, freq = make_logscale(s, factor=1.0, sr=samplerate)

    with np.errstate(divide='ignore'):
        ims = 20.*np.log10(np.abs(sshow)/10e-6) # amplitude to decibel

    timebins, freqbins = np.shape(ims)

    plt.figure(figsize=(15, 7.5))
    plt.imshow(np.transpose(ims), origin="lower", aspect="auto", 
    cmap=colormap, interpolation="none")

    plt.axis('off')
    plt.xlim([0, timebins-1])
    plt.ylim([0, freqbins])
    
    plt.savefig(filepath, bbox_inches="tight")
    plt.close()

    return
test_vis(testing[0], filepath='/content/data/
helicopter-fly-over-01.jpg')

Шаг 6: Классификация изображений с помощью YOLO

from ultralytics import YOLO
model = YOLO('yolov8n-cls.pt')

Шаг 7: Обучение модели

results = model.train(data='./data', epochs=20, imgsz=640)
metrics = model.val()

Шаг 8: Прогнозирование с помощью модели

pred = model('/content/data/helicopter-fly-over-01.jpg')
image 1/1 /workspace/yolo-listen/data/helicopter-fly-over-01.jpg: 
640x640 thunderstorm 0.98, airplane 0.01, crickets 0.01, frog 0.00, 
wind 0.00, 2.2ms
Speed: 27.3ms preprocess, 2.2ms inference, 0.1ms 
postprocess per image at shape (1, 3, 640, 640)

Заключение

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

Мы начали с представления концепции классификации аудиоданных с помощью компьютерного зрения, подчеркнув ее потенциальное влияние в таких областях, как анализ звуков окружающей среды, здравоохранение, модерация контента и распознавание голосовых команд. Объединив принципы компьютерного зрения с аудиоданными, мы отправились в путешествие к расширению нашего понимания мира с помощью множества чувств.

Понимая технологию, лежащую в основе классификации аудиоданных, мы обнаружили ключевую роль глубокого обучения, в частности, сверточных нейронных сетей (CNN). Эти сети адаптированы для обработки спектрограмм, двумерных представлений аудиоданных, выявляя закономерности и «отпечатки пальцев» различных звуков. Этот фундаментальный шаг необходим для любой задачи классификации аудиоданных.

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

Визуализация аудиоданных с помощью спектрограмм предоставила уникальную перспективу, помогая нам распознавать закономерности и структуры в аудиоданных. Хотя метод YOLO (You Only Look Once – «Ты смотришь только один раз») имеет свои преимущества в области обнаружения объектов, он не является естественным для классификации аудиоданных, которая опирается на последовательные и зависящие от времени признаки.

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

Машинное обучение будет продолжать обогащать наши возможности интерпретации мира и взаимодействия с ним не только посредством визуальных образов, но и посредством гармоничного сочетания зрения и звука. Эта технология обещает более безопасный, информированный и взаимосвязанный мир, переосмысливая наше восприятие и понимание окружающей среды.

«Оставайтесь на связи и поддерживайте мою работу на различных платформах:»

  • GitHub: Все мои проекты с открытым исходным кодом и блокноты вы можете найти в моем профиле GitHub по адресу ссылка. Если вы считаете мой контент полезным, не стесняйтесь поставить звездочку.
  • Patreon: Если вы хотите оказать дополнительную поддержку, вы можете стать моим патроном на странице Patreon по адресу ссылка.
  • Medium: Вы можете прочитать мои последние статьи и аналитические материалы на Medium по адресу ссылка.
  • Kaggle: Посмотрите мой профиль на Kaggle, где представлены проекты по анализу данных и машинному обучению: ссылка.
  • Huggingface: Чтобы ознакомиться с моим профилем на Huggingface, посвященным обработке естественного языка и проектам, связанным с искусственным интеллектом, перейдите по ссылке ссылка.
  • YouTube: Чтобы посмотреть мои видео, посетите мой канал на YouTube по адресу ссылка.
  • LinkedIn: Чтобы быть в курсе моих последних проектов и публикаций, вы можете подписаться на меня в LinkedIn. Вот ссылка на мой профиль: ссылка.
  • Запросы и вопросы: Если у вас есть проект, над которым вы хотели бы, чтобы я поработала, или если у вас есть какие-либо вопросы по объясненным мною концепциям, не стесняйтесь обращаться ко мне. Я всегда ищу новые идеи для будущих выпусков блокнотов и с удовольствием помогу разрешить любые ваши сомнения.

Помните, что каждый «лайк», «репост» и «звездочка» вносят огромный вклад в мою работу и мотивируют меня продолжать создавать качественный контент. Спасибо за вашу поддержку!

Ресурсы:

Автор: Анкуш Сингал (Ankush Singal)