The main thing this PR does is to add TransformerPooling. However, I moved the constructer of the pooling layers outside of DeepMIL to allow for more flexibility in the constructor arguments. This required changing some tests.
The transformer pooling is based on the pytorch Transformer class, however, in the pytorch implementation you have to pass a flag (need_weights) to the forward (??? like why not the init???) of the MultiheadAttention class. See line 186 of attention_layer.py
In the forward() of TransformerPooling (see line 244 of attention_layer.py) we discard the self attention of the cls token and rescale the remaining attention scores, so they sum to one.
* Adding cross-validation
* Simplified model config loading for models in the histopathology folder
* Editor setup for VSCode
* Simplified pytest usage, also from within VSCode
* Copy histopathology folder into hi-ml
* Update imports
* Update changelog and pull latest changes from InnerEye
* fix tests after merging changes
* works in AML again
* flake8
* flake8
* flake8
* Add a basic docu for histopathology
* improve test coverage
* fix test
* Add SSL configs and tests
* Update from recent changes and fix tests
* workaround for finding himl, plus pyright fixes
* update test requirements
* fix tests
* fix pandas version conflict
* Add fast flags to tests
* fix test imports
* Add dummy make build
* remove histo module from test-artifact-pkg build step
* fix himl tests
* Address PR comments
* Works in AML
* update pr workflow and fix bug in expt folder handler
* flake8
* update build test yml
* update build test yml
* update build test yml
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* Debug build test failing
* update ssl_online to fix test
* fix test running remotely
* update build yaml
* update combine coverage
* small improvements
* small improvements
* mypy
* mypy
* mypy
* First version of runner
* changelog and pyright
* PR comments
* Runs in AML
* More PR comments
* More PR comments
* Remove GenericConfig from himl
* Add more tests
* pytest and pyright
* Add more tests
* Add more tests
* Add documentation
* bug fix align config attributes
* works on config outside of hi-ml
* flake8 mypy pytest
* Add more tests for config loading
* PR comments and add more tests
* Respond to PR comments
* More PR comments
* pytest, mypy, flake8
* fix test running remotely
* debug why test fails on remote build
* debug why test fails on remote build
* debug why test fails on remote build
* fix test
* Fix tests
* debug test failing on azure agent
* Fix test and update docs
* update test
* Update command line tools
* Update coverage report to only read .py files
* debug coverage problem
* debug coverage failing
* debug coverage failing
* debug coverage failing
* PR comments
Fixed HEDJitter augmentation, the previous version was also jittering the D channel
Removed dependency of StainNormalization on skimage, which makes it also faster
Added GaussianBlur that is faster than the torchvision version
Added rotation by multiples of 90 degrees
Adjusted/added the test for all augmentations.
All the above augmentations are frequently used for histopathology.
Added torchvision to the environment since it is necessary for the augmentations.
* Allow lists of tables and add report folder zipping
* Add option to base64 encode images
* Turn off subplot axes
* Remove centre align
* pyright
* add_tables accepts list of tables to align with list of csv paths
* mypy
* Missing return statement
* download_files_from_hyperdrive should accept lists of files
* Add HTML report
* Add add_text, validate and read_config_yaml to reportS
* flake8
* Add function to download report contents from AML
* add image gallery type to reports
* Add more tests
* Update report config schema to dictionaries
* Replace dictionary key with var
* fix test
* fix test
* fix test
* fix test
* Started refactor
* Separate out function for retrieving experiment from experiment name
* More refactoring
* refactor cmd line tool args shorter and fewer functions for fetching runs
* update test docstring and fix flake8 error
* Add docs on custom argparsing and custom types, as well as more tests for GenericConfig
* Add more tests
* flake8, mypy, pytest
* Update changelog
* update docs
* Update himl-download
* Update tests
* Address PR comments
* fix pyright issues
* address PR comments
* Update _validate method
* flake8
* fix test
* Add cross-validation with hyperdrive + tests + docs + example
* Add test in AML remote compute
* flake8
* Add function to aggregate metrics from hyperdrive runs
* flake8
* pyright fix
* Address PR comments
* Address PR comments
* Started refactor
* Separate out function for retrieving experiment from experiment name
* More refactoring
* refactor cmd line tool args shorter and fewer functions for fetching runs
* update test docstring and fix flake8 error
* Add docs on custom argparsing and custom types, as well as more tests for GenericConfig
* Add more tests
* flake8, mypy, pytest
* Update changelog
* update docs
* Update himl-download
* Update tests
* Address PR comments
* fix pyright issues
* address PR comments
* Update _validate method
* flake8
* fix test
* Add test to check downloading large files doesn't time out
* add checkpoint download function
* Add functions to __init__
* Return test file size to large after debugging
* update changelog
* Add test for checkpoint download
* Update test
* Address PR comments
* Add downloading docu
* rename checkpoint download fn
* Address PR comments
* update tests
* Add functions to upload and download from blob storage
* Add functions to upload and download from datastores
* Update CHANGELOG
* mypy
* Clarify params and add functions to __init__
* Address PR comments
* Add function for download_runs (WIP)
* Add function to find file names for a Run
* download runs with single run id
* Stop output files being created during tests
* Add test with local Run
* flake8
* use DEFAULT_WORKSPACE
* move get_workspace into azure_utils to call from get_aml_run
* download_file only for first node if distributed
* Tidy up functions to get AML Run(s)
* dont cover nested functions
* Update himl-tb and himl-download with recent util changes
* Address PR comments
* Replace AML test for download_file
Moving code around for the test suite, to make the hi-ml and hi-ml-azure have a clearly distinct module name, and remove the deep folder hierarchy. Adding init files to the test folders for pytest to pick up files correctly
* Update run_tensorboard to work with logs in different folders
* fix flake8 complaints
* fix test and changelog
* move types-requests to test_requirements for running mypy
* update test
* move tensorboard example into docs
* shorten command line arg names
* Address PR comments