exponenta event banner

yamnetGraph

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

    Описание

    пример

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

    пример

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

    Эта функция требует как 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 = subgraph(ygraph,subsetNodes);
    classToHighlight = intersect(classDiff,ygraphSubset.Nodes.Name);
    pSub = plot(ygraphSubset);
    layout(pSub,'layered')
    highlight(pSub,classToHighlight,'NodeColor','r')

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

    ygraph = yamnetGraph;

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

    soundClass = "Growling";
    numPredecessors = 3;
    numSuccessors = 0;
    
    pred = nearest(ygraph,soundClass,numPredecessors,'Direction','incoming');
    suc = nearest(ygraph,soundClass,numSuccessors,'Direction','outgoing');
    subClasses = [soundClass;pred;suc];
    
    ygraphSub = subgraph(ygraph,unique(subClasses));
    p = plot(ygraphSub);
    layout(p,'layered')
    highlight(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, Джорт Ф., и др. 2017 IEEE Международная конференция по акустике, обработке речи и сигналов (ICASSP), IEEE, 2017, стр. 776-80. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952261.

    [2] Херши, Шон и др. Международная конференция IEEE 2017 по акустике, обработке речи и сигналов (ICASSP), IEEE, 2017, стр. 131-35. DOI.org (Crossref), doi:10.1109/ICASSP.2017.7952132.

    Представлен в R2020b