diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51194ad --- /dev/null +++ b/.gitignore @@ -0,0 +1,134 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + + +.vscode/ +.mypy_cache/ +.idea/ diff --git a/EsoMovieConverter.py b/EsoMovieConverter.py new file mode 100644 index 0000000..4c370fe --- /dev/null +++ b/EsoMovieConverter.py @@ -0,0 +1,19 @@ +import numpy as np +import cv2 + +# 食道の映像を前処理することが多いような気がするので作ったクラス +# Undistort用のparamを同ディレクトリに配置する必要あり +class EsoMovieConverter: + + def __init__(self): + self.dist_coeffs = np.load('params/dist_coeffs.npy') + self.intrinsics_scaled = np.array([[221.8766, 0, 232.2143], [0, 217.4069, 173.3776], [0, 0, 1]]) + self.kernel = np.ones((9, 9), np.uint8) + + def __call__(self, eso_frame): + eso_frame = eso_frame[32:989, 323:1599, :] + # eliminate interrace + eso_frame = eso_frame[::2, ::2, :] + eso_frame = cv2.resize(eso_frame, (480, 352), interpolation=cv2.INTER_LINEAR) + eso_frame = cv2.undistort(eso_frame, self.intrinsics_scaled, self.dist_coeffs) + return eso_frame diff --git a/README.md b/README.md index 458bc0d..e38c5f6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,21 @@ -DensePredictionTransformers -=============== +# DensePredictionTransformers -DPT_Largeによって画像から深度を取得するアプリケーション \ No newline at end of file +DPT_Large によって画像から深度を取得するアプリケーション + +
+ +--- + +## 動作環境 + +python 3.8.12 +torch==1.10.0 +opencv-python==4.5.4.60 + +## 準備 + +- main.py 中の VideoCapture 内の引数を深度予測したい動画にする. + +## 稼働方法 + +`python main.py` diff --git a/main.py b/main.py new file mode 100644 index 0000000..b7248b0 --- /dev/null +++ b/main.py @@ -0,0 +1,78 @@ +import cv2 +import torch +import urllib.request +import matplotlib.pyplot as plt +import numpy as np +from PIL import Image +import queue + +from EsoMovieConverter import EsoMovieConverter + +cap = cv2.VideoCapture(r'D:\Deep_Learning\MonoDepth2\esophagus\movies\trimed\0.mp4') +# cap = cv2.VideoCapture(1) +eso_movie_converter = EsoMovieConverter() + +fps = int(cap.get(cv2.CAP_PROP_FPS)) +w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) +h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) +fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') +video_writer = cv2.VideoWriter('eso0_disp.mp4', fourcc, fps, (480, 352)) + +model_type = "DPT_Large" # MiDaS v3 - Large (highest accuracy, slowest inference speed) +# model_type = "DPT_Hybrid" # MiDaS v3 - Hybrid (medium accuracy, medium inference speed) +# model_type = "MiDaS_small" # MiDaS v2.1 - Small (lowest accuracy, highest inference speed) +midas = torch.hub.load("intel-isl/MiDaS", model_type) +device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") +midas.to(device) +midas.eval() +midas_transforms = torch.hub.load("intel-isl/MiDaS", "transforms") +if model_type == "DPT_Large" or model_type == "DPT_Hybrid": + transform = midas_transforms.dpt_transform +else: + transform = midas_transforms.small_transform + + +def inference(img): + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + input_batch = transform(img).to(device) + with torch.no_grad(): + prediction = midas(input_batch) + prediction = torch.nn.functional.interpolate( + prediction.unsqueeze(1), + size=img.shape[:2], + mode="bicubic", + align_corners=False, + ).squeeze() + output = prediction.cpu().numpy() + formatted = (output * 255 / np.max(output)).astype('uint8') + return formatted + + +prev_img1 = None +prev_img2 = None +prev_img3 = None +prev_img4 = None +while True: + ret, frame = cap.read() + if not ret: + break + + frame = eso_movie_converter(frame) + cv2.imshow("input", frame) + out = inference(frame) + if (prev_img1 is not None) and (prev_img2 is not None) and (prev_img3 is not None) and (prev_img4 is not None): + show_img = out / 5 + prev_img1 / 5 + prev_img2 / 5 + prev_img3 / 5 + prev_img4 / 5 + show_img = show_img.astype("uint8") + cv2.imshow("out", show_img) + video_writer.write(cv2.cvtColor(show_img[:, :, np.newaxis], cv2.COLOR_GRAY2RGB)) + cv2.waitKey(1) + if prev_img3 is not None: + prev_img4 = prev_img3.copy() + if prev_img2 is not None: + prev_img3 = prev_img2.copy() + if prev_img1 is not None: + prev_img2 = prev_img1.copy() + prev_img1 = out.copy() + +cap.release() +video_writer.release() diff --git a/params/dist_coeffs.npy b/params/dist_coeffs.npy new file mode 100644 index 0000000..e76aaa1 --- /dev/null +++ b/params/dist_coeffs.npy Binary files differ diff --git a/params/intrinsics_scaled.npy b/params/intrinsics_scaled.npy new file mode 100644 index 0000000..3c4e6a2 --- /dev/null +++ b/params/intrinsics_scaled.npy Binary files differ diff --git a/params/intrinsics_scaled2.npy b/params/intrinsics_scaled2.npy new file mode 100644 index 0000000..4482ebe --- /dev/null +++ b/params/intrinsics_scaled2.npy Binary files differ diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..9d84e25 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,29 @@ +[tool.isort] +profile = "black" +line_length = 120 +skip_glob = "*/migrations/*.py" + +[tool.black] +line-length = 120 +include = '\.pyi?$' +extend-exclude = ''' +/( + | \.git + | templates + | migrations +)/ +''' + +[tool.flake8] +max-line-length = 120 +extend-ignore = "E203,W503" + + +[tool.mypy] +follow-imports = "normal" +ignore_missing_imports = true +show_column_numbers = true +pretty = false +disallow_untyped_calls = true +disallow_untyped_defs = true + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..761399a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,326 @@ +addict @ file:///home/conda/feedstock_root/build_artifacts/addict_1636818143388/work +alabaster @ file:///home/ktietz/src/ci/alabaster_1611921544520/work +anaconda-client @ file:///C:/ci/anaconda-client_1635342752200/work +anaconda-project @ file:///tmp/build/80754af9/anaconda-project_1637161053845/work +anyio @ file:///C:/ci/anyio_1620153418380/work/dist +appdirs==1.4.4 +argh==0.26.2 +argon2-cffi @ file:///C:/ci/argon2-cffi_1613037959010/work +arrow==0.13.1 +asn1crypto @ file:///tmp/build/80754af9/asn1crypto_1596577642040/work +astroid @ file:///C:/ci/astroid_1628063293445/work +astropy @ file:///C:/ci/astropy_1638785655728/work +async-generator @ file:///home/ktietz/src/ci/async_generator_1611927993394/work +atomicwrites==1.4.0 +attrs @ file:///tmp/build/80754af9/attrs_1620827162558/work +autopep8 @ file:///tmp/build/80754af9/autopep8_1620866417880/work +Babel @ file:///tmp/build/80754af9/babel_1620871417480/work +backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work +backports.shutil-get-terminal-size @ file:///tmp/build/80754af9/backports.shutil_get_terminal_size_1608222128777/work +bcrypt @ file:///C:/ci/bcrypt_1597936263757/work +beautifulsoup4 @ file:///tmp/build/80754af9/beautifulsoup4_1631874778482/work +binaryornot @ file:///tmp/build/80754af9/binaryornot_1617751525010/work +bitarray @ file:///C:/ci/bitarray_1629133092947/work +bkcharts==0.2 +black==19.10b0 +bleach @ file:///tmp/build/80754af9/bleach_1628110601003/work +bokeh @ file:///C:/ci/bokeh_1638362940011/work +boto==2.49.0 +Bottleneck==1.3.2 +brotlipy==0.7.0 +certifi==2021.10.8 +cffi @ file:///C:/ci/cffi_1636542074879/work +chardet @ file:///C:/ci/chardet_1607690654534/work +charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work +click==8.0.3 +cloudpickle @ file:///tmp/build/80754af9/cloudpickle_1632508026186/work +clyent==1.2.2 +colorama @ file:///tmp/build/80754af9/colorama_1607707115595/work +comtypes==1.1.10 +conda==4.11.0 +conda-content-trust @ file:///tmp/build/80754af9/conda-content-trust_1617045594566/work +conda-pack @ file:///tmp/build/80754af9/conda-pack_1611163042455/work +conda-package-handling @ file:///C:/ci/conda-package-handling_1618262320430/work +conda-token @ file:///tmp/build/80754af9/conda-token_1620076980546/work +configparser==5.2.0 +contextlib2 @ file:///Users/ktietz/demo/mc3/conda-bld/contextlib2_1630668244042/work +cookiecutter @ file:///tmp/build/80754af9/cookiecutter_1617748928239/work +crayons==0.4.0 +cryptography @ file:///C:/ci/cryptography_1635348572149/work +cycler @ file:///tmp/build/80754af9/cycler_1637851556182/work +Cython @ file:///C:/ci/cython_1636036427608/work +cytoolz==0.11.0 +daal4py==2021.4.0 +dask==2021.10.0 +debugpy @ file:///C:/ci/debugpy_1637073815078/work +decorator @ file:///tmp/build/80754af9/decorator_1632776554403/work +defusedxml @ file:///tmp/build/80754af9/defusedxml_1615228127516/work +diff-match-patch @ file:///Users/ktietz/demo/mc3/conda-bld/diff-match-patch_1630511840874/work +distributed @ file:///C:/ci/distributed_1635968340418/work +docutils @ file:///C:/ci/docutils_1620828260973/work +editdistance==0.6.0 +entrypoints==0.3 +et-xmlfile==1.1.0 +fast_ctc_decode==0.3.0 +fastcache==1.1.0 +ffmpeg-python==0.2.0 +filelock @ file:///tmp/build/80754af9/filelock_1638521398314/work +flake8 @ file:///tmp/build/80754af9/flake8_1620776156532/work +Flask @ file:///home/ktietz/src/ci/flask_1611932660458/work +flatbuffers==1.12 +fonttools==4.25.0 +fsspec @ file:///tmp/build/80754af9/fsspec_1636116461911/work +future==0.18.2 +gast==0.3.3 +gevent @ file:///C:/ci/gevent_1628273793586/work +glob2 @ file:///home/linux1/recipes/ci/glob2_1610991677669/work +graphviz==0.18.2 +greenlet @ file:///C:/ci/greenlet_1628888262822/work +h11==0.12.0 +h5py==2.10.0 +HeapDict @ file:///Users/ktietz/demo/mc3/conda-bld/heapdict_1630598515714/work +html5lib @ file:///Users/ktietz/demo/mc3/conda-bld/html5lib_1629144453894/work +hyperopt==0.1.2 +idna @ file:///tmp/build/80754af9/idna_1637925883363/work +imagecodecs @ file:///C:/ci/imagecodecs_1635529235632/work +imageio @ file:///tmp/build/80754af9/imageio_1617700267927/work +imagesize @ file:///tmp/build/80754af9/imagesize_1637939814114/work +importlib-metadata @ file:///C:/ci/importlib-metadata_1638543108096/work +inflection==0.5.1 +iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work +intervaltree @ file:///Users/ktietz/demo/mc3/conda-bld/intervaltree_1630511889664/work +ipykernel @ file:///C:/ci/ipykernel_1633545574250/work/dist/ipykernel-6.4.1-py3-none-any.whl +ipython @ file:///C:/ci/ipython_1635944310712/work +ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work +ipywidgets @ file:///tmp/build/80754af9/ipywidgets_1634143127070/work +isort @ file:///tmp/build/80754af9/isort_1628603791788/work +itsdangerous @ file:///tmp/build/80754af9/itsdangerous_1621432558163/work +jdcal @ file:///Users/ktietz/demo/mc3/conda-bld/jdcal_1630584345063/work +jedi @ file:///C:/ci/jedi_1611315808330/work +Jinja2 @ file:///tmp/build/80754af9/jinja2_1612213139570/work +jinja2-time @ file:///tmp/build/80754af9/jinja2-time_1617751524098/work +joblib @ file:///tmp/build/80754af9/joblib_1635411271373/work +json5 @ file:///tmp/build/80754af9/json5_1624432770122/work +jsonschema @ file:///Users/ktietz/demo/mc3/conda-bld/jsonschema_1630511932244/work +jstyleson==0.0.2 +jupyter==1.0.0 +jupyter-client @ file:///tmp/build/80754af9/jupyter_client_1616770841739/work +jupyter-console @ file:///tmp/build/80754af9/jupyter_console_1616615302928/work +jupyter-core @ file:///C:/ci/jupyter_core_1636537213213/work +jupyter-server @ file:///C:/ci/jupyter_server_1616084298403/work +jupyterlab @ file:///tmp/build/80754af9/jupyterlab_1635799997693/work +jupyterlab-pygments @ file:///tmp/build/80754af9/jupyterlab_pygments_1601490720602/work +jupyterlab-server @ file:///tmp/build/80754af9/jupyterlab_server_1633419203660/work +jupyterlab-widgets @ file:///tmp/build/80754af9/jupyterlab_widgets_1609884341231/work +keyring @ file:///C:/ci/keyring_1638531661481/work +kiwisolver @ file:///C:/ci/kiwisolver_1612282606037/work +lazy-object-proxy @ file:///C:/ci/lazy-object-proxy_1616529307648/work +libarchive-c @ file:///tmp/build/80754af9/python-libarchive-c_1617780486945/work +llvmlite==0.37.0 +locket==0.2.1 +lucam==2021.6.6 +lxml @ file:///C:/ci/lxml_1616443455957/work +MarkupSafe==1.1.1 +matplotlib @ file:///C:/ci/matplotlib-suite_1638289827560/work +matplotlib-inline @ file:///tmp/build/80754af9/matplotlib-inline_1628242447089/work +mccabe==0.6.1 +menuinst @ file:///C:/ci/menuinst_1631733428175/work +mistune==0.8.4 +mkl-fft==1.3.1 +mkl-random @ file:///C:/ci/mkl_random_1626186184278/work +mkl-service==2.4.0 +mock @ file:///tmp/build/80754af9/mock_1607622725907/work +more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work +mpmath==1.2.1 +msedge-selenium-tools==3.141.3 +msgpack @ file:///C:/ci/msgpack-python_1612287368835/work +multipledispatch==0.6.0 +munkres==1.1.4 +mxnet==1.2.0 +mypy==0.931 +mypy-extensions==0.4.3 +nbclassic @ file:///tmp/build/80754af9/nbclassic_1616085367084/work +nbclient @ file:///tmp/build/80754af9/nbclient_1614364831625/work +nbconvert @ file:///C:/ci/nbconvert_1624479163777/work +nbformat @ file:///tmp/build/80754af9/nbformat_1617383369282/work +nest-asyncio @ file:///tmp/build/80754af9/nest-asyncio_1613680548246/work +networkx @ file:///tmp/build/80754af9/networkx_1633639043937/work +nibabel==3.2.1 +nltk==3.6.5 +nose @ file:///tmp/build/80754af9/nose_1606773131901/work +notebook @ file:///C:/ci/notebook_1637143794296/work +numba @ file:///C:/ci/numba_1635186101448/work +numexpr @ file:///C:/ci/numexpr_1618856738664/work +numpy==1.19.5 +numpydoc @ file:///tmp/build/80754af9/numpydoc_1605117425582/work +olefile @ file:///Users/ktietz/demo/mc3/conda-bld/olefile_1629805411829/work +onnx==1.10.2 +onnx-simplifier==0.3.6 +onnxoptimizer==0.2.6 +onnxruntime==1.10.0 +opencv-contrib-python==4.5.4.60 +opencv-python==4.5.4.60 +openpyxl @ file:///tmp/build/80754af9/openpyxl_1632777717936/work +openvino==2021.4.2 +openvino-dev==2021.4.2 +ortools==9.0.9048 +outcome==1.1.0 +packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work +pandas @ file:///C:/ci/pandas_1641443171711/work +pandocfilters @ file:///C:/ci/pandocfilters_1605102497129/work +paramiko @ file:///tmp/build/80754af9/paramiko_1598886428689/work +parasail==1.2.4 +parso @ file:///tmp/build/80754af9/parso_1617223946239/work +partd @ file:///tmp/build/80754af9/partd_1618000087440/work +path @ file:///C:/ci/path_1623603980403/work +pathlib2 @ file:///C:/ci/pathlib2_1625585790401/work +pathspec==0.7.0 +patsy==0.5.2 +pep8==1.7.1 +pexpect @ file:///tmp/build/80754af9/pexpect_1605563209008/work +pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work +Pillow==8.4.0 +pkginfo==1.7.1 +pluggy @ file:///C:/ci/pluggy_1615976358795/work +ply==3.11 +poyo @ file:///tmp/build/80754af9/poyo_1617751526755/work +progress==1.6 +prometheus-client @ file:///tmp/build/80754af9/prometheus_client_1637050397234/work +prompt-toolkit @ file:///tmp/build/80754af9/prompt-toolkit_1633440160888/work +protobuf==3.17.2 +psutil @ file:///C:/ci/psutil_1612298324802/work +ptyprocess @ file:///tmp/build/80754af9/ptyprocess_1609355006118/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl +py @ file:///tmp/build/80754af9/py_1607971587848/work +py-cpuinfo==8.0.0 +pycodestyle @ file:///tmp/build/80754af9/pycodestyle_1615748559966/work +pycosat==0.6.3 +pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work +pycurl==7.44.1 +pydicom==2.2.2 +pydocstyle @ file:///tmp/build/80754af9/pydocstyle_1621600989141/work +pyerfa @ file:///C:/ci/pyerfa_1621561004681/work +pyflakes @ file:///tmp/build/80754af9/pyflakes_1617200973297/work +Pygments @ file:///tmp/build/80754af9/pygments_1629234116488/work +pylint @ file:///C:/ci/pylint_1627536881874/work +pyls-spyder==0.4.0 +pymongo==4.0.1 +PyNaCl @ file:///C:/ci/pynacl_1595000047588/work +pyodbc===4.0.0-unsupported +pyOpenSSL @ file:///tmp/build/80754af9/pyopenssl_1635333100036/work +pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work +pyproject-flake8==0.0.1a2 +pyreadline==2.1 +pyrsistent @ file:///C:/ci/pyrsistent_1636111468851/work +PySocks @ file:///C:/ci/pysocks_1605287845585/work +pytest==6.2.4 +python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work +python-lsp-black @ file:///tmp/build/80754af9/python-lsp-black_1634232156041/work +python-lsp-jsonrpc==1.0.0 +python-lsp-server==1.2.4 +python-slugify @ file:///tmp/build/80754af9/python-slugify_1620405669636/work +pytz==2021.3 +pyvirtualcam==0.9.0 +PyWavelets @ file:///C:/ci/pywavelets_1601658407916/work +pywin32==228 +pywin32-ctypes==0.2.0 +pywinpty==0.5.7 +PyYAML==6.0 +pyzmq @ file:///C:/ci/pyzmq_1638435185959/work +QDarkStyle @ file:///tmp/build/80754af9/qdarkstyle_1617386714626/work +qstylizer @ file:///tmp/build/80754af9/qstylizer_1617713584600/work/dist/qstylizer-0.1.10-py2.py3-none-any.whl +QtAwesome @ file:///tmp/build/80754af9/qtawesome_1637160816833/work +qtconsole @ file:///tmp/build/80754af9/qtconsole_1632739723211/work +QtPy @ file:///tmp/build/80754af9/qtpy_1629397026935/work +rawpy==0.16.0 +regex @ file:///C:/ci/regex_1629302316714/work +requests @ file:///tmp/build/80754af9/requests_1629994808627/work +rope @ file:///tmp/build/80754af9/rope_1636994440010/work +Rtree @ file:///C:/ci/rtree_1618421009405/work +ruamel-yaml-conda @ file:///C:/ci/ruamel_yaml_1616016967756/work +scikit-image==0.18.3 +scikit-learn @ file:///C:/ci/scikit-learn_1635188126022/work +scikit-learn-intelex==2021.20211201.114757 +scipy @ file:///C:/ci/scipy_1641555198988/work +seaborn @ file:///tmp/build/80754af9/seaborn_1629307859561/work +selenium==3.141.0 +Send2Trash @ file:///tmp/build/80754af9/send2trash_1632406701022/work +sentencepiece==0.1.96 +Shapely==1.8.0 +simplegeneric==0.8.1 +singledispatch @ file:///tmp/build/80754af9/singledispatch_1629321204894/work +sip==4.19.13 +six @ file:///tmp/build/80754af9/six_1623709665295/work +sniffio @ file:///C:/ci/sniffio_1614030707456/work +snowballstemmer @ file:///tmp/build/80754af9/snowballstemmer_1637937080595/work +sortedcollections @ file:///tmp/build/80754af9/sortedcollections_1611172717284/work +sortedcontainers @ file:///tmp/build/80754af9/sortedcontainers_1623949099177/work +soupsieve @ file:///tmp/build/80754af9/soupsieve_1636706018808/work +Sphinx==4.2.0 +sphinxcontrib-applehelp @ file:///home/ktietz/src/ci/sphinxcontrib-applehelp_1611920841464/work +sphinxcontrib-devhelp @ file:///home/ktietz/src/ci/sphinxcontrib-devhelp_1611920923094/work +sphinxcontrib-htmlhelp @ file:///tmp/build/80754af9/sphinxcontrib-htmlhelp_1623945626792/work +sphinxcontrib-jsmath @ file:///home/ktietz/src/ci/sphinxcontrib-jsmath_1611920942228/work +sphinxcontrib-qthelp @ file:///home/ktietz/src/ci/sphinxcontrib-qthelp_1611921055322/work +sphinxcontrib-serializinghtml @ file:///tmp/build/80754af9/sphinxcontrib-serializinghtml_1624451540180/work +sphinxcontrib-websupport @ file:///tmp/build/80754af9/sphinxcontrib-websupport_1597081412696/work +spyder @ file:///C:/ci/spyder_1636481183311/work +spyder-kernels @ file:///C:/ci/spyder-kernels_1634237040526/work +SQLAlchemy @ file:///C:/ci/sqlalchemy_1638290879826/work +statsmodels==0.12.2 +sympy @ file:///C:/ci/sympy_1635237204453/work +tables==3.6.1 +TBB==0.2 +tblib @ file:///Users/ktietz/demo/mc3/conda-bld/tblib_1629402031467/work +tensorboardX @ file:///home/conda/feedstock_root/build_artifacts/tensorboardx_1628560643999/work +tensorflow==2.4.4 +tensorflow-estimator==2.4.0 +terminado==0.9.4 +testpath @ file:///tmp/build/80754af9/testpath_1624638946665/work +text-unidecode @ file:///Users/ktietz/demo/mc3/conda-bld/text-unidecode_1629401354553/work +textdistance @ file:///tmp/build/80754af9/textdistance_1612461398012/work +texttable==1.6.4 +threadpoolctl @ file:///Users/ktietz/demo/mc3/conda-bld/threadpoolctl_1629802263681/work +three-merge @ file:///tmp/build/80754af9/three-merge_1607553261110/work +tifffile @ file:///tmp/build/80754af9/tifffile_1627275862826/work +timm==0.5.4 +tinycss @ file:///tmp/build/80754af9/tinycss_1617713798712/work +tokenizers==0.10.3 +toml @ file:///tmp/build/80754af9/toml_1616166611790/work +tomli==2.0.1 +toolz @ file:///tmp/build/80754af9/toolz_1636545406491/work +torch==1.10.0 +torchaudio==0.10.0 +torchvision==0.11.1 +tornado @ file:///C:/ci/tornado_1606942392901/work +tqdm @ file:///tmp/build/80754af9/tqdm_1635330843403/work +traitlets @ file:///tmp/build/80754af9/traitlets_1636710298902/work +trio==0.19.0 +trio-websocket==0.9.2 +typed-ast @ file:///C:/ci/typed-ast_1624953785070/work +typing-extensions @ file:///tmp/build/80754af9/typing_extensions_1631814937681/work +ujson @ file:///C:/ci/ujson_1611241570789/work +unicodecsv==0.14.1 +Unidecode @ file:///tmp/build/80754af9/unidecode_1614712377438/work +urllib3==1.26.7 +watchdog @ file:///C:/ci/watchdog_1638349261759/work +wcwidth @ file:///Users/ktietz/demo/mc3/conda-bld/wcwidth_1629357192024/work +webdriver-manager==3.5.2 +webencodings==0.5.1 +Werkzeug @ file:///tmp/build/80754af9/werkzeug_1635505089296/work +whichcraft @ file:///tmp/build/80754af9/whichcraft_1617751293875/work +widgetsnbextension==3.5.1 +win-inet-pton @ file:///C:/ci/win_inet_pton_1605306167264/work +win-unicode-console==0.5 +wincertstore==0.2 +wrapt==1.12.1 +wsproto==1.0.0 +xlrd @ file:///tmp/build/80754af9/xlrd_1608072521494/work +XlsxWriter @ file:///tmp/build/80754af9/xlsxwriter_1636633762820/work +xlwings==0.24.9 +xlwt==1.3.0 +yamlloader==1.1.0 +yapf @ file:///tmp/build/80754af9/yapf_1615749224965/work +zict==2.0.0 +zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work +zope.event==4.5.0 +zope.interface @ file:///C:/ci/zope.interface_1625036260333/work