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)

    Создайте объект диграфа, который описывает онтологию 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, ygraphSubset.Nodes.Name);
    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 ;];
    
    ygraphSub = подграф (ygraph, уникальный (подклассы));
    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, Джорт Ф., и др. “Аудио Набор: Онтология и Помеченный Человеком Набор данных для Аудио Событий”. 2 017 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов (ICASSP), IEEE, 2017, стр 776–80. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952261.

    [2] Херши, Шон, и др. “Архитектуры CNN для Крупномасштабной Аудио Классификации”. 2 017 Международных конференций IEEE по вопросам Акустики, Речи и Обработки сигналов (ICASSP), IEEE, 2017, стр 131–35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.

    Смотрите также

    Приложения

    Блоки

    Функции

    Введенный в R2020b