Coder Social home page Coder Social logo

doamm's Introduction

Refinement of Direction of Arrival Estimators by Majorization-Minimization Optimization on the Array Manifold

This repository contains implementation for the algorithms and experiments of the paper Refinement of Direction of Arrival Estimators by Majorization-Minimization Optimization on the Array Manifold by Robin Scheibler and Masahito Togami.

Abstract

We propose a generalized formulation of direction of arrival estimation that includes many existing methods such as steered response power, subspace, coherent and incoherent, as well as speech sparsity-based methods. Unlike most conventional methods that rely exclusively on grid search, we introduce a continuous optimization algorithm to refine DOA estimates beyond the resolution of the initial grid. The algorithm is derived from the majorization-minimization (MM) technique. We derive two surrogate functions, one quadratic and one linear. Both lead to efficient iterative algorithms that do not require hyperparameters, such as step size, and ensure that the DOA estimates never leave the array manifold, without the need for a projection step. In numerical experiments, we show that the accuracy after a few iterations of the MM algorithm nearly removes dependency on the resolution of the initial grid used. We find that the quadratic surrogate function leads to very fast convergence, but the simplicity of the linear algorithm is very attractive, and the performance gap small.

Authors

  • Robin Scheibler
  • Masahito Togami

Experiments

We work with anaconda to simplify the environement setup.

conda env create -f environment.yml
conda activate doamm

For the experiment on simulated data, run the following.

# Generate Fig. 1 and Table 2
# - this will create the folder ./sim_results/YYYMMDD-HHmmss_experiment1_effect_grid_size
python ./doa_experiment_para.py ./doa_experiment_para.py ./config_experiment_grid.yml
# - plot Fig. 1
python ./make_figure1.py ./sim_results/YYYYmmdd-HHMMSS_experiment1_effect_grid_size
# - plot Table 2
python ./make_table_runtime.py ./sim_results/YYYYmmdd-HHMMSS_experiment1_effect_grid_size

# Generate Table 1
# - this will create the folder ./sim_results/YYYMMDD-HHmmss_experiment1_effect_s
python ./doa_experiment_para.py ./doa_experiment_para.py ./config_experiment_s.yml
python ./make_table1.py ./sim_results/YYYYmmdd-HHMMSS_experiment1_effect_s

For the experiment on recorded data, it is necessary to download the Pyramic dataset here

git clone https://github.com/fakufaku/pyramic-dataset
cd pyramic-dataset
wget -qO- https://zenodo.org/record/1209563/files/pyramic_segmented_<sample_type>.tar.gz | tar xzv
cd ..

Then, run the following

# Run the experiment
python ./doa_experiment_pyramic.py run ./pyramic-dataset/calibration/calibrated_locations.json --sources 1 --output ./sim_results/pyramic_doa_results.json

# Plot Fig. 2
python ./doa_experiment_pyramic.py plot ./sim_results/pyramic_doa_results.json -s figures/pyramic_figure.pdf

License

This code is released under MIT License.

Copyright 2021 Robin Scheibler and Masahito Togami

doamm's People

Contributors

fakufaku avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.