Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.1%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: HIEROT
- License: gpl-3.0
- Language: Python
- Default Branch: MyMetalensDesign
- Size: 9.59 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
readme.md

An End-to-End Design Framework for Metasurface-Based Vision Sensors V2.3.2
D-Flat is a forward and inverse design framework for flat optics, specially geared to the design of dielectric metasurfaces for imaging and sensing. This package is reviewed in paper https://arxiv.org/abs/2207.14780. D-Flat provides users with:
- A validated, auto-differentiable (AD) framework for optical field propagation built on TF Keras
- Pre-trained, efficient neural models to describe the optical response of metasurface cells
- An AD field solver (RCWA) packaged as a TF-Keras layer that is automatically set to optimize pre-defined cell types
- A community driven, maintained framework for rendering and end-to-end design
By treating optical layers in the same fashion as standard, TF neural layers, deep learning pipelines can be built to simultaneously optimize optical hardware and ML computational back-ends.
Usage and Documentation:
For usage and documentation, a readthedocs page is in active development. Examples for inverse design are provided in DFlat/examples/. Additional examples will be provided in the future (we welcome community made examples).
For developers and researchers,
- a script to train neural models can be found in DFlat/dflat/neural_optical_layer/core/trainer_models.py
- a script to build a cell library using RCWATF can be found in `DFlat/dflat/celllibrarygeneration/generatecell_library.py`.
(a) install and run DFlat in Google collab:
DFlat can be easily installed in used in the cloud on Google Collab. This is ideal for mac os users as tensorflow_gpu is not supported by mac. Google collab versions of current examples can be found in the examples folder and online at the links:
- TutorialIDflatFieldPropagation
- TutorialIRCWAandPhysical_Layers
- TutorialIDflatLibraryandNeuralModels
- Demooptimizebroadbandrcwametalens
- Demooptimizemonochromaticneuralmetalens
- Demooptimizedualpolarizationhologram
(b) install and run locally:
To use DFlat on your own machine, first download the repository:
git clone https://github.com/DeanHazineh/DFlat
Note that git LFS should be installed if not already via git lfs install at the terminal. Next install the local repository to your venv by entering the following in terminal:
python setup.py develop
You can then install additional dependencies via
pip install -r requirements.txt
Note that you should not just download the zip file from above because this will not download the files hosted on githubs LFS database.
Contact:
This repository is intended to be accessible and community driven. It may not be fully error-proof and will be continually updated. If you have improvements, fixes, or contributions, please branch and initiate a merge request to master (or email me)!
For any questions, functionality requests, or other concerns, don't hesitate to contact me at dhazineh@g.harvard.edu.
Acknowledgements and Support:
This work pulls inspiration from, builds on, or otherwise ports/modifies previous open-source contributions from the following individuals: * Shane Colburn - RCWA_TF * Manuel Guizar-Sicairos and Julio C. Guitierrez-Vega - Pyhank
It also involves some contribution or inspiration from the following: Petra Vidnerova - rbffortf2;
This work was supported by the National Science Foundation (IIS) for End-to-End Computational Sensing. We thank Professors Todd Zickler, Qi Guo, and Federico Capasso for their role in the conception of this software. For further interest or discussion on research, please direct contact and questions there. We also thank Dr. Zhujun Shi for contributions to the conception and early development and Soon Wei Daniel Lim for help with validations.
Credits
If you utilize DFlat or included data sets for your own work, please cite it by clicking the github citation link on the right or by copying:
@misc{https://doi.org/10.48550/arxiv.2207.14780,
doi = {10.48550/ARXIV.2207.14780},
url = {https://arxiv.org/abs/2207.14780},
author = {Hazineh, Dean S. and Lim, Soon Wei Daniel and Shi, Zhujun and Capasso, Federico and Zickler, Todd and Guo, Qi},
keywords = {Optics (physics.optics), Applied Physics (physics.app-ph), FOS: Physical sciences, FOS: Physical sciences},
title = {D-Flat: A Differentiable Flat-Optics Framework for End-to-End Metasurface Visual Sensor Design},
publisher = {arXiv},
year = {2022},
copyright = {Creative Commons Attribution 4.0 International}
}
...
Owner
- Login: HIEROT
- Kind: user
- Repositories: 1
- Profile: https://github.com/HIEROT
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software or included datasets, please cite it as below."
authors:
- family-names: "Hazineh"
given-names: "Dean"
orcid: "https://orcid.org/0000-0002-8762-1621"
- family-names: "Lim"
given-names: "Soon Wei Daniel"
- family-names: "Shi"
given-names: "Zhujun"
- family-names: "Capasso"
given-names: "Federico"
- family-names: "Zickler"
given-names: "Todd"
- family-names: "Guo"
given-names: "Qi"
title: "D-Flat: A Differentiable Flat-Optics Framework for End-to-End Metasurface Visual Sensor Design"
version: 2.0.0
doi: 10.48550/ARXIV.2207.14780
date-released: 2022-07-29
url: "https://github.com/DeanHazineh/DFlat"
preferred-citation:
type: misc
authors:
- family-names: "Hazineh"
given-names: "Dean"
orcid: "https://orcid.org/0000-0002-8762-1621"
- family-names: "Lim"
given-names: "Soon Wei Daniel"
- family-names: "Shi"
given-names: "Zhujun"
- family-names: "Capasso"
given-names: "Federico"
- family-names: "Zickler"
given-names: "Todd"
- family-names: "Guo"
given-names: "Qi"
doi: "10.48550/ARXIV.2207.14780"
url: "https://arxiv.org/abs/2207.14780"
month: 7
title: "D-Flat: A Differentiable Flat-Optics Framework for End-to-End Metasurface Visual Sensor Design"
publisher: "arXiv"
year: "2022"
GitHub Events
Total
Last Year
Dependencies
- imageio ==2.26.1
- keras-flops ==0.1.2
- matplotlib ==3.7.1
- opencv-python ==4.7.0.72
- scikit-image ==0.20.0
- scikit-learn ==1.2.2
- scipy ==1.10.1
- tensorflow ==2.11.0
- tensorflow-probability ==0.19.0
- Babel ==2.9.1
- Bottleneck ==1.3.2
- Cython ==0.29.24
- Flask ==1.1.2
- HeapDict ==1.0.1
- Jinja2 ==2.11.3
- Keras-Preprocessing ==1.1.2
- Mako ==1.2.1
- Markdown ==3.3.7
- MarkupSafe ==1.1.1
- Pillow ==8.4.0
- PyJWT ==2.1.0
- PySocks ==1.7.1
- PyWavelets ==1.1.1
- PyYAML ==6.0
- Pygments ==2.10.0
- QDarkStyle ==3.0.2
- QtAwesome ==1.0.2
- QtPy ==1.10.0
- Rtree ==0.9.7
- SQLAlchemy ==1.4.22
- Send2Trash ==1.8.0
- Sphinx ==4.2.0
- TBB ==0.2
- Unidecode ==1.2.0
- Werkzeug ==2.0.2
- XlsxWriter ==3.0.1
- absl-py ==1.1.0
- alabaster ==0.7.12
- anaconda-client ==1.9.0
- anaconda-navigator ==2.1.1
- anaconda-project ==0.10.1
- anyio ==2.2.0
- appdirs ==1.4.4
- applaunchservices ==0.2.1
- appnope ==0.1.2
- appscript ==1.1.2
- argh ==0.26.2
- argon2-cffi ==20.1.0
- arrow ==0.13.1
- asn1crypto ==1.4.0
- astor ==0.8.1
- astroid ==2.6.6
- astropy ==4.3.1
- astunparse ==1.6.3
- async-generator ==1.10
- atomicwrites ==1.4.0
- attrs ==21.2.0
- autopep8 ==1.5.7
- backcall ==0.2.0
- backports.functools-lru-cache ==1.6.4
- backports.shutil-get-terminal-size ==1.0.0
- backports.tempfile ==1.0
- backports.weakref ==1.0.post1
- beautifulsoup4 ==4.10.0
- binaryornot ==0.4.4
- bitarray ==2.3.0
- bkcharts ==0.2
- black ==19.10b0
- bleach ==4.0.0
- bokeh ==2.4.1
- boto ==2.49.0
- brotlipy ==0.7.0
- cached-property ==1.5.2
- cachetools ==5.2.0
- certifi ==2021.10.8
- cffi ==1.14.6
- cfractions ==1.4.0
- chardet ==4.0.0
- charset-normalizer ==2.0.4
- click ==8.0.3
- cloudpickle ==2.0.0
- clyent ==1.2.2
- colorama ==0.4.4
- conda ==4.10.3
- conda-build ==3.21.5
- conda-content-trust ==0
- conda-pack ==0.6.0
- conda-package-handling ==1.7.3
- conda-repo-cli ==1.0.4
- conda-token ==0.3.0
- conda-verify ==3.4.2
- contextlib2 ==0.6.0.post1
- cookiecutter ==1.7.2
- cryptography ==3.4.8
- cycler ==0.10.0
- cytoolz ==0.11.0
- daal4py ==2021.3.0
- dask ==2021.10.0
- debugpy ==1.4.1
- decision ==0.2.0
- decorator ==5.1.0
- defusedxml ==0.7.1
- dendroid ==1.1.1
- diff-match-patch ==20200713
- distributed ==2021.10.0
- dm-tree ==0.1.7
- docutils ==0.17.1
- entrypoints ==0.3
- et-xmlfile ==1.1.0
- fastcache ==1.1.0
- filelock ==3.3.1
- flake8 ==3.9.2
- flatbuffers ==1.12
- fonttools ==4.25.0
- fsspec ==2021.8.1
- future ==0.18.2
- gast ==0.4.0
- gdown ==4.4.0
- gevent ==21.8.0
- ghp-import ==2.1.0
- glob2 ==0.7
- gmpy2 ==2.0.8
- google-auth ==2.9.1
- google-auth-oauthlib ==0.4.6
- google-pasta ==0.2.0
- greenlet ==1.1.1
- ground ==7.1.1
- grpcio ==1.47.0
- h5py ==3.2.1
- html5lib ==1.1
- idna ==3.2
- imagecodecs ==2021.8.26
- imageio ==2.9.0
- imagesize ==1.2.0
- importlib-metadata ==4.8.1
- inflection ==0.5.1
- iniconfig ==1.1.1
- intervaltree ==3.1.0
- ipykernel ==6.4.1
- ipython ==7.29.0
- ipython-genutils ==0.2.0
- ipywidgets ==7.6.5
- isort ==5.9.3
- itsdangerous ==2.0.1
- jdcal ==1.4.1
- jedi ==0.18.0
- jinja2-time ==0.2.0
- joblib ==1.1.0
- json5 ==0.9.6
- jsonschema ==3.2.0
- jupyter ==1.0.0
- jupyter-client ==6.1.12
- jupyter-console ==6.4.0
- jupyter-core ==4.8.1
- jupyter-server ==1.4.1
- jupyterlab ==3.2.1
- jupyterlab-pygments ==0.1.2
- jupyterlab-server ==2.8.2
- jupyterlab-widgets ==1.0.0
- keras ==2.9.0
- keras-flops ==0.1.2
- keyring ==23.1.0
- kiwisolver ==1.3.1
- lazy-object-proxy ==1.6.0
- libarchive-c ==2.9
- libclang ==14.0.1
- llvmlite ==0.37.0
- locket ==0.2.1
- lxml ==4.6.3
- matplotlib ==3.4.3
- matplotlib-inline ==0.1.2
- mccabe ==0.6.1
- mergedeep ==1.3.4
- mistune ==0.8.4
- mkdocs ==1.3.0
- mkgendocs ==0.9.0
- mkl-fft ==1.3.1
- mkl-random ==1.2.2
- mkl-service ==2.4.0
- mock ==4.0.3
- more-itertools ==8.10.0
- mpmath ==1.2.1
- msgpack ==1.0.2
- multipledispatch ==0.6.0
- munkres ==1.1.4
- mypy-extensions ==0.4.3
- navigator-updater ==0.2.1
- nbclassic ==0.2.6
- nbclient ==0.5.3
- nbconvert ==6.1.0
- nbformat ==5.1.3
- nest-asyncio ==1.5.1
- networkx ==2.6.3
- nltk ==3.6.5
- nose ==1.3.7
- notebook ==6.4.5
- numba ==0.54.1
- numexpr ==2.7.3
- numpy ==1.20.1
- numpydoc ==1.1.0
- oauthlib ==3.2.0
- olefile ==0.46
- opencv-python ==4.5.5.62
- openpyxl ==3.0.9
- opt-einsum ==3.3.0
- packaging ==21.0
- pandas ==1.3.4
- pandocfilters ==1.4.3
- parso ==0.8.2
- partd ==1.2.0
- path ==16.0.0
- pathlib2 ==2.3.6
- pathspec ==0.7.0
- patsy ==0.5.2
- pep8 ==1.7.1
- pexpect ==4.8.0
- pickleshare ==0.7.5
- pip ==21.2.4
- pkginfo ==1.7.1
- pluggy ==0.13.1
- ply ==3.11
- poyo ==0.5.0
- prioq ==0.3.0
- prometheus-client ==0.11.0
- prompt-toolkit ==3.0.20
- protobuf ==3.19.4
- psutil ==5.8.0
- ptyprocess ==0.7.0
- py ==1.10.0
- pyOpenSSL ==21.0.0
- pyasn1 ==0.4.8
- pyasn1-modules ==0.2.8
- pycodestyle ==2.7.0
- pycosat ==0.6.3
- pycparser ==2.20
- pycurl ==7.44.1
- pydocstyle ==6.1.1
- pyerfa ==2.0.0
- pyflakes ==2.3.1
- pylint ==2.9.6
- pyls-spyder ==0.4.0
- pyodbc ==4.0.0
- pyparsing ==3.0.4
- pyrsistent ==0.18.0
- pytest ==6.2.4
- python-dateutil ==2.8.2
- python-lsp-black ==1.0.0
- python-lsp-jsonrpc ==1.0.0
- python-lsp-server ==1.2.4
- python-slugify ==5.0.2
- pytz ==2021.3
- pyyaml_env_tag ==0.1
- pyzmq ==22.2.1
- qstylizer ==0.1.10
- qtconsole ==5.1.1
- regex ==2021.8.3
- reprit ==0.6.0
- requests ==2.26.0
- requests-oauthlib ==1.3.1
- rope ==0.19.0
- rsa ==4.8
- ruamel-yaml-conda ==0.15.100
- scikit-image ==0.18.3
- scikit-learn ==0.24.2
- scikit-learn-intelex ==2021.20210714.100439
- scipy ==1.6.2
- seaborn ==0.11.2
- sect ==5.1.0
- setuptools ==58.0.4
- shewchuk ==4.0.0
- simplegeneric ==0.8.1
- singledispatch ==3.7.0
- sip ==4.19.13
- six ==1.16.0
- sniffio ==1.2.0
- snowballstemmer ==2.1.0
- sortedcollections ==2.1.0
- sortedcontainers ==2.4.0
- soupsieve ==2.2.1
- sphinx-rtd-theme ==1.0.0
- sphinxcontrib-applehelp ==1.0.2
- sphinxcontrib-devhelp ==1.0.2
- sphinxcontrib-htmlhelp ==2.0.0
- sphinxcontrib-jsmath ==1.0.1
- sphinxcontrib-qthelp ==1.0.3
- sphinxcontrib-serializinghtml ==1.1.5
- sphinxcontrib-websupport ==1.2.4
- spyder ==5.1.5
- spyder-kernels ==2.1.3
- statsmodels ==0.12.2
- symba ==0.6.0
- sympy ==1.9
- tables ==3.6.1
- tblib ==1.7.0
- tensorboard ==2.9.1
- tensorboard-data-server ==0.6.1
- tensorboard-plugin-wit ==1.8.1
- tensorflow ==2.9.1
- tensorflow-estimator ==2.9.0
- tensorflow-io-gcs-filesystem ==0.26.0
- tensorflow-probability ==0.17.0
- termcolor ==1.1.0
- terminado ==0.9.4
- testpath ==0.5.0
- text-unidecode ==1.3
- textdistance ==4.2.1
- threadpoolctl ==2.2.0
- three-merge ==0.1.1
- tifffile ==2021.7.2
- tinycss ==0.4
- toml ==0.10.2
- toolz ==0.11.1
- tornado ==6.1
- tqdm ==4.62.3
- traitlets ==5.1.0
- typed-ast ==1.4.3
- typing-extensions ==3.10.0.2
- ujson ==4.0.2
- unicodecsv ==0.14.1
- urllib3 ==1.26.7
- watchdog ==2.1.3
- wcwidth ==0.2.5
- webencodings ==0.5.1
- wheel ==0.37.0
- whichcraft ==0.6.1
- widgetsnbextension ==3.5.1
- wrapt ==1.12.1
- wurlitzer ==2.1.1
- xlrd ==2.0.1
- xlwings ==0.24.9
- xlwt ==1.3.0
- xmltodict ==0.12.0
- yapf ==0.31.0
- zict ==2.0.0
- zipp ==3.6.0
- zope.event ==4.5.0
- zope.interface ==5.4.0
- gdspy *
- imageio *
- keras_flops *
- mat73 *
- matplotlib *
- numpy *
- opencv-python *
- pandas *
- scikit-learn *
- scipy *
- tensorflow *
- tensorflow_probability *
- tqdm *