yamnetGraph

Графиков онтологии YAMNet AudioSet

    Описание

    пример

    ygraph = yamnetGraph возвращает ориентированный график онтологии AudioSet.

    пример

    [ygraph,classes] = yamnetGraph также возвращает строковые массивы классов, поддерживаемых YAMNet.

    Эта функция требует как Audio Toolbox™, так и Deep Learning Toolbox™.

    Примеры

    свернуть все

    Загрузите и разархивируйте поддержку Audio Toolbox™ для YAMNet.

    Тип yamnetGraph в Командном окне. Если Audio Toolbox поддержки YAMNet не установлен, то функция предоставляет ссылку на расположение загрузки. Чтобы скачать модель, щелкните ссылку. Разархивируйте файл в местоположении по пути MATLAB.

    Также выполните следующие команды, чтобы загрузить и разархивировать модель YAMNet во временную директорию.

    downloadFolder = fullfile(tempdir,'YAMNetDownload');
    loc = websave(downloadFolder,'https://ssd.mathworks.com/supportfiles/audio/yamnet.zip');
    YAMNetLocation = tempdir;
    unzip(loc,YAMNetLocation)
    addpath(fullfile(YAMNetLocation,'yamnet'))

    Проверьте успешность установки путем ввода yamnetGraph в Командном окне. Если сеть установлена, то функция возвращает digraph объект.

    yamnetGraph

    Создайте digraph объект, описывающий онтологию AudioSet.

    ygraph = yamnetGraph
    ygraph = 
      digraph with properties:
    
        Edges: [670×1 table]
        Nodes: [632×1 table]
    
    

    Визуализация онтологии. Онтология состоит из 632 отдельных классов с 670 связями.

    p = plot(ygraph);
    layout(p,'layered')

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

    nodeNames = ygraph.Nodes.Name;
    topCategories = {};
    for index = 1:numel(nodeNames)
        pre = predecessors(ygraph,nodeNames{index});
        if isempty(pre)
            topCategories{end+1} = nodeNames{index};
        end
    end

    Отобразите категории как массив строк.

    topCategories = string(topCategories)
    topCategories = 1×7 string
        "Human sounds"    "Animal"    "Music"    "Natural sounds"    "Sounds of things"    "Source-ambiguous sounds"    "Channel, environment and background"
    
    

    Выделите и пометьте верхние категории на digraph график.

    highlight(p,topCategories,"NodeColor","red","MarkerSize",8)
    labelnode(p,topCategories,topCategories)

    Создайте digraph объект, который представляет онтологию AudioSet.

    ygraph = yamnetGraph;

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

    animalNodes = dfsearch(ygraph,"Animal");

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

    animalGraph = subgraph(ygraph,animalNodes);
    
    p = plot(animalGraph);
    
    p.NodeFontSize = 12;
    graphFigure = gcf;
    old = graphFigure.Position;
    set(graphFigure,'position',[old(1),old(2),old(3)*3,old(4)*3])

    Использование predecessors определить всех предшественников Growling звук. Выделите предшественников на графике.

    preIDs = predecessors(animalGraph,"Growling")
    preIDs = 4×1 string
        "Dog"
        "Cat"
        "Roaring cats (lions, tigers)"
        "Canidae, dogs, wolves"
    
    

    Использование highlight чтобы выделить Growling узел и предшественники на графике.

    highlight(p,"Growling",'NodeColor','g','MarkerSize',8)
    highlight(p,preIDs,'NodeColor','r','MarkerSize',8)

    Создайте объект digraph, который описывает онтологию AudioSet. Также верните классы, поддерживаемые YAMNet. Постройте график ориентированного графа.

    [ygraph,classes] = yamnetGraph;
    p = plot(ygraph);
    layout(p,'layered')

    YAMNet предсказывает подмножество полной онтологии AudioSet. Отображение классов звука, которые находятся в онтологии AudioSet, но не являются возможными выходами от сети YAMNet.

    audiosetClasses = ygraph.Nodes.Name;
    classDiff = setdiff(audiosetClasses,classes)
    classDiff = 111×1 string
        "Acoustic environment"
        "Alto saxophone"
        "Background noise"
        "Bass (frequency range)"
        "Bass (instrument role)"
        "Bassline"
        "Bassoon"
        "Battle cry"
        "Bay"
        "Beat"
        "Birthday music"
        "Blare"
        "Booing"
        "Brief tone"
        "Bugle"
        "Cat communication"
        "Cellphone buzz, vibrating alert"
        "Channel, environment and background"
        "Chipmunk"
        "Chord"
        "Clavinet"
        "Clunk"
        "Compact disc"
        "Cornet"
        "Crash cymbal"
        "Cumbia"
        "Deformable shell"
        "Digestive"
        "Domestic sounds, home sounds"
        "Donkey, ass"
          ⋮
    
    

    Выделите классы, которые не являются возможными выходами от YAMNet.

    highlight(p,classDiff,'NodeColor','r')

    Анализ одной из основных категорий.

    categoryToAnalyze = "Channel, environment and background";
    subsetNodes = dfsearch (ygraph, categoryToAnalyze);
    ygraphSubset = подграфик (ygraph, subsetNodes);
    classToHighlight = пересечение (classDiff, имя);
    pSub = графиков (ygraphSubset);
    размещение (pSub,'layered')
    подсветка (pSub, classToHighlight,'NodeColor','r')

    Создайте digraph объект, описывающий онтологию AudioSet.

    ygraph = yamnetGraph;

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

    soundClass = "Growling";
    numPredecessors = 3;
    numSuccessors = 0;
    
    pred = ближайший (ygraph, soundClass, numPredecessors,'Direction','incoming');
    suc = ближайший (ygraph, soundClass, numSuccessors,'Direction','outgoing');
    подклассы = [soundClass; pred; suc];
    
    ygraphSub = подграфик (ygraph, unique (subClasses));
    p = графиков (ygraphSub);
    размещение (p,'layered')
    подсветка (p, soundClass,'Marker','d','NodeColor','red','MarkerSize',6)

    Выходные аргументы

    свернуть все

    Онтологический график AudioSet с ориентированными ребрами, возвращенный как digraph объект.

    Классы, поддерживаемые YAMNet, возвращаются как строковые массивы. Классы, поддерживаемые YAMNet, являются подмножеством онтологии AudioSet.

    Совет

    Google® предоставляет веб-сайт, на котором можно изучить онтологию AudioSet и соответствующий набор данных: https://research.google.com/audioset/ontology/index.html.

    Ссылки

    [1] Gemmeke, Jort F., et al. «Audio Set: An Ontology and Human-Labeled Dataset for Audio Events». 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), IEEE, 2017, pp. 776-80. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952261.

    [2] Hershey, Shawn, et al. «Архитектуры CNN для Крупномасштабной Аудио Классификации». Международная конференция IEEE 2017 года по вопросам Акустики, Речи и Сигнала, Обрабатывающего (ICASSP), IEEE, 2017, стр 131-35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.

    Введенный в R2020b