From 941066e154760d1cb76257dbd92b5fdd86131089 Mon Sep 17 00:00:00 2001 From: wuyongjianCODE <114390912+wuyongjianCODE@users.noreply.github.com> Date: Fri, 2 Jun 2023 16:59:06 +0800 Subject: [PATCH] Add files via upload --- CHANGELOG.md | 24 ++ LICENSE | 21 ++ README.md | 273 ++++++++++++++- __init__.py | 0 compute_stats.py | 248 +++++++++++++ config.py | 73 ++++ convert_chkpt_tf2pytorch.py | 32 ++ convert_format.py | 102 ++++++ cyclic.py | 44 +++ dataset.py | 109 ++++++ diagram.png | Bin 0 -> 331889 bytes environment.yml | 11 + extract_patches.py | 100 ++++++ extract_patches_CONSEP.py | 106 ++++++ extract_patches_MONU.py | 106 ++++++ fix.py | 406 ++++++++++++++++++++++ hovernetCLASS.py | 286 +++++++++++++++ hovernetCLASS2.py | 238 +++++++++++++ requirements.txt | 16 + run_infer.py | 186 ++++++++++ run_tile.sh | 31 ++ run_train.py | 305 ++++++++++++++++ run_train_classify.py | 304 ++++++++++++++++ run_wsi.sh | 15 + type_info.json | 8 + variables_tf2pytorch.csv | 668 ++++++++++++++++++++++++++++++++++++ 26 files changed, 3711 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 __init__.py create mode 100644 compute_stats.py create mode 100644 config.py create mode 100644 convert_chkpt_tf2pytorch.py create mode 100644 convert_format.py create mode 100644 cyclic.py create mode 100644 dataset.py create mode 100644 diagram.png create mode 100644 environment.yml create mode 100644 extract_patches.py create mode 100644 extract_patches_CONSEP.py create mode 100644 extract_patches_MONU.py create mode 100644 fix.py create mode 100644 hovernetCLASS.py create mode 100644 hovernetCLASS2.py create mode 100644 requirements.txt create mode 100644 run_infer.py create mode 100644 run_tile.sh create mode 100644 run_train.py create mode 100644 run_train_classify.py create mode 100644 run_wsi.sh create mode 100644 type_info.json create mode 100644 variables_tf2pytorch.csv diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1fc3fb1 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,24 @@ + +# Change Log + +## [2.0][] - 2019-06-24 + +### Added +- Add the changelog +- The definition, training and post-processing configurations for FCN8, U-Net, Naylor, SegNet and Micro-Net used in the nuclear instance segmentation comparative study. +- Simultaneous nuclear instance segmentation and pixel-wise nuclear type classification capability for Micro-Net, U-Net and Naylor. + +### Updated +- Major extension to the previous XY-Net and rename repository's name to HoVer-Net to match with paper's new title +- Major restruction of the framework to allow more dynamic parameter configuration +- Update AJI to matches with the latest version distributed by from MoNuSeg organisation team. +- Update AJI+ to use a more robust matching mechanism and deprecate its usage. +- Update Panoptic Quality calculation to support IoU threshold < 0.5 + +## [1.0][] - 2018-12-06 +### Initial release + + +[Unreleased]: https://github.com/vqdang/hover_net/tree/master +[2.0]: https://github.com/vqdang/hover_net/tree/master +[1.0]: https://github.com/vqdang/hover_net/tree/1.0 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f988f6f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 vqdang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 12c3101..ccc5fc4 100644 --- a/README.md +++ b/README.md @@ -1 +1,272 @@ -# Cyclic-learning \ No newline at end of file +# HoVer-Net: Simultaneous Segmentation and Classification of Nuclei in Multi-Tissue Histology Images + +A multiple branch network that performs nuclear instance segmentation and classification within a single network. The network leverages the horizontal and vertical distances of nuclear pixels to their centres of mass to separate clustered cells. A dedicated up-sampling branch is used to classify the nuclear type for each segmented instance.
+ +[Link](https://www.sciencedirect.com/science/article/abs/pii/S1361841519301045?via%3Dihub) to Medical Image Analysis paper.
+ +This is the official PyTorch implementation of HoVer-Net. For the original TensorFlow version of this code, please refer to [this branch](https://github.com/vqdang/hover_net/tree/tensorflow-final). The repository can be used for training HoVer-Net and to process image tiles or whole-slide images. As part of this repository, we supply model weights trained on the following datasets: + +- [CoNSeP](https://www.sciencedirect.com/science/article/pii/S1361841519301045) +- [PanNuke](https://arxiv.org/abs/2003.10778) +- [MoNuSAC](https://ieeexplore.ieee.org/abstract/document/8880654) +- [Kumar](https://ieeexplore.ieee.org/abstract/document/7872382) +- [CPM17](https://www.frontiersin.org/articles/10.3389/fbioe.2019.00053/full) + +Links to the checkpoints can be found in the inference description below. + +![](docs/diagram.png) + +## Set Up Environment + +``` +conda env create -f environment.yml +conda activate hovernet +pip install torch==1.6.0 torchvision==0.7.0 +``` + +Above, we install PyTorch version 1.6 with CUDA 10.2. + +## Repository Structure + +Below are the main directories in the repository: + +- `dataloader/`: the data loader and augmentation pipeline +- `docs/`: figures/GIFs used in the repo +- `metrics/`: scripts for metric calculation +- `misc/`: utils that are +- `models/`: model definition, along with the main run step and hyperparameter settings +- `run_utils/`: defines the train/validation loop and callbacks + +Below are the main executable scripts in the repository: + +- `config.py`: configuration file +- `dataset.py`: defines the dataset classes +- `extract_patches.py`: extracts patches from original images +- `compute_stats.py`: main metric computation script +- `run_train.py`: main training script +- `run_infer.py`: main inference script for tile and WSI processing +- `convert_chkpt_tf2pytorch`: convert tensorflow `.npz` model trained in original repository to pytorch supported `.tar` format. + +# Running the Code + +## Training + +### Data Format +For training, patches must be extracted using `extract_patches.py`. For instance segmentation, patches are stored as a 4 dimensional numpy array with channels [RGB, inst]. Here, inst is the instance segmentation ground truth. I.e pixels range from 0 to N, where 0 is background and N is the number of nuclear instances for that particular image. + +For simultaneous instance segmentation and classification, patches are stored as a 5 dimensional numpy array with channels [RGB, inst, type]. Here, type is the ground truth of the nuclear type. I.e every pixel ranges from 0-K, where 0 is background and K is the number of classes. + +Before training: + +- Set path to the data directories in `config.py` +- Set path where checkpoints will be saved in `config.py` +- Set path to pretrained Preact-ResNet50 weights in `models/hovernet/opt.py`. Download the weights [here](https://drive.google.com/file/d/1KntZge40tAHgyXmHYVqZZ5d2p_4Qr2l5/view?usp=sharing). +- Modify hyperparameters, including number of epochs and learning rate in `models/hovernet/opt.py`. + +### Usage and Options + +Usage:
+``` + python run_train.py [--gpu=] [--view=] + python run_train.py (-h | --help) + python run_train.py --version +``` + +Options: +``` + -h --help Show this string. + --version Show version. + --gpu= Comma separated GPU list. + --view= Visualise images after augmentation. Choose 'train' or 'valid'. +``` + +Examples: + +To visualise the training dataset as a sanity check before training use: +``` +python run_train.py --view='train' +``` + +To initialise the training script with GPUs 0 and 1, the command is: +``` +python run_train.py --gpu='0,1' +``` + +## Inference + +### Data Format +Input:
+- Standard images files, including `png`, `jpg` and `tiff`. +- WSIs supported by [OpenSlide](https://openslide.org/), including `svs`, `tif`, `ndpi` and `mrxs`. + +Output:
+- Both image tiles and whole-slide images output a `json` file with keys: + - 'bbox': bounding box coordinates for each nucleus + - 'centroid': centroid coordinates for each nucleus + - 'contour': contour coordinates for each nucleus + - 'type_prob': per class probabilities for each nucleus (default configuration doesn't output this) + - 'type': prediction of category for each nucleus +- Image tiles output a `mat` file, with keys: + - 'raw': raw output of network (default configuration doesn't output this) + - 'inst_map': instance map containing values from 0 to N, where N is the number of nuclei + - 'inst_type': list of length N containing predictions for each nucleus + - Image tiles output a `png` overlay of nuclear boundaries on top of original RGB image + +### Model Weights + +Model weights obtained from training HoVer-Net as a result of the above instructions can be supplied to process input images / WSIs. Alternatively, any of the below pre-trained model weights can be used to process the data. These checkpoints were initially trained using TensorFlow and were converted using `convert_chkpt_tf2pytorch.py`. Provided checkpoints either are either trained for segmentation alone or for simultaneous segmentation and classification. Note, we do not provide a segmentation and classification model for CPM17 and Kumar because classification labels aren't available. + +**IMPORTANT:** CoNSeP, Kumar and CPM17 checkpoints use the original model mode, whereas PanNuke and MoNuSAC use the fast model mode. Refer to the inference instructions below for more information. + +Segmentation and Classification: +- [CoNSeP checkpoint](https://drive.google.com/file/d/1FtoTDDnuZShZmQujjaFSLVJLD5sAh2_P/view?usp=sharing) +- [PanNuke checkpoint](https://drive.google.com/file/d/1SbSArI3KOOWHxRlxnjchO7_MbWzB4lNR/view?usp=sharing) +- [MoNuSAC checkpoint](https://drive.google.com/file/d/13qkxDqv7CUqxN-l5CpeFVmc24mDw6CeV/view?usp=sharing) + +Segmentation Only: +- [CoNSeP checkpoint](https://drive.google.com/file/d/1BF0GIgNGYpfyqEyU0jMsA6MqcUpVQx0b/view?usp=sharing) +- [Kumar checkpoint](https://drive.google.com/file/d/1NUnO4oQRGL-b0fyzlT8LKZzo6KJD0_6X/view?usp=sharing) +- [CPM17 checkpoint](https://drive.google.com/file/d/1lR7yJbEwnF6qP8zu4lrmRPukylw9g-Ms/view?usp=sharing) + +Access the entire checkpoint directory, along with a README on the filename description [here](https://drive.google.com/drive/folders/17IBOqdImvZ7Phe0ZdC5U1vwPFJFkttWp?usp=sharing). + +If any of the above checkpoints are used, please ensure to cite the corresponding paper. + +### Usage and Options + +Usage:
+``` + run_infer.py [options] [--help] [...] + run_infer.py --version + run_infer.py (-h | --help) +``` + +Options: +``` + -h --help Show this string. + --version Show version. + + --gpu= GPU list. [default: 0] + --nr_types= Number of nuclei types to predict. [default: 0] + --type_info_path= Path to a json define mapping between type id, type name, + and expected overlay color. [default: ''] + + --model_path= Path to saved checkpoint. + --model_mode= Original HoVer-Net or the reduced version used in PanNuke / MoNuSAC, 'original' or 'fast'. [default: fast] + --nr_inference_workers= Number of workers during inference. [default: 8] + --nr_post_proc_workers= Number of workers during post-processing. [default: 16] + --batch_size= Batch size. [default: 128] +``` + +Tile Processing Options:
+``` + --input_dir= Path to input data directory. Assumes the files are not nested within directory. + --output_dir= Path to output directory.. + + --draw_dot To draw nuclei centroid on overlay. [default: False] + --save_qupath To optionally output QuPath v0.2.3 compatible format. [default: False] + --save_raw_map To save raw prediction or not. [default: False] +``` + +WSI Processing Options:
+``` + --input_dir= Path to input data directory. Assumes the files are not nested within directory. + --output_dir= Path to output directory. + --cache_path= Path for cache. Should be placed on SSD with at least 100GB. [default: cache] + --mask_dir= Path to directory containing tissue masks. + Should have the same name as corresponding WSIs. [default: ''] + + --proc_mag= Magnification level (objective power) used for WSI processing. [default: 40] + --ambiguous_size= Define ambiguous region along tiling grid to perform re-post processing. [default: 128] + --chunk_shape= Shape of chunk for processing. [default: 10000] + --tile_shape= Shape of tiles for processing. [default: 2048] + --save_thumb To save thumb. [default: False] + --save_mask To save mask. [default: False] +``` + +The above command can be used from the command line or via an executable script. We supply two example executable scripts: one for tile processing and one for WSI processing. To run the scripts, first make them executable by using `chmod +x run_tile.sh` and `chmod +x run_tile.sh`. Then run by using `./run_tile.sh` and `./run_wsi.sh`. + +Intermediate results are stored in cache. Therefore ensure that the specified cache location has enough space! Preferably ensure that the cache location is SSD. + +Note, it is important to select the correct model mode when running inference. 'original' model mode refers to the method described in the original medical image analysis paper with a 270x270 patch input and 80x80 patch output. 'fast' model mode uses a 256x256 patch input and 164x164 patch output. Model checkpoints trained on Kumar, CPM17 and CoNSeP are from our original publication and therefore the 'original' mode **must** be used. For PanNuke and MoNuSAC, the 'fast' mode **must** be selected. The model mode for each checkpoint that we provide is given in the filename. Also, if using a model trained only for segmentation, `nr_types` must be set to 0. + +`type_info.json` is used to specify what RGB colours are used in the overlay. Make sure to modify this for different datasets and if you would like to generally control overlay boundary colours. + +As part of our tile processing implementation, we add an option to save the output in a form compatible with QuPath. + +Take a look on how to utilise the output in `examples/usage.ipynb`. + +## Overlaid Segmentation and Classification Prediction + +

+ Segmentation +

+ +Overlaid results of HoVer-Net trained on the CoNSeP dataset. The colour of the nuclear boundary denotes the type of nucleus.
+Blue: epithelial
+Red: inflammatory
+Green: spindle-shaped
+Cyan: miscellaneous + +## Datasets + +Download the CoNSeP dataset as used in our paper from [this link](https://warwick.ac.uk/fac/cross_fac/tia/data/hovernet/).
+Download the Kumar, CPM-15, CPM-17 and TNBC datsets from [this link](https://drive.google.com/open?id=1l55cv3DuY-f7-JotDN7N5nbNnjbLWchK).
+Down + +Ground truth files are in `.mat` format, refer to the README included with the datasets for further information. + +## Comparison to Original TensorFlow Implementation + +Below we report the difference in segmentation results trained using this repository (PyTorch) and the results reported in the original manuscript (TensorFlow). + +Segmentation results on the Kumar dataset: +| Platform | DICE | PQ | AJI | +| -----------|----------- | -----------|-----------| +| TensorFlow | 0.8258 | 0.5971 | 0.6412 | +| PyTorch | 0.8211 | 0.5904 | 0.6321 | + +Segmentation results on CoNSeP dataset: +| Platform | DICE | PQ | AJI | +| -----------|----------- | -----------|-----------| +| TensorFlow | 0.8525 | 0.5477 | 0.5995 | +| PyTorch | 0.8504 | 0.5464 | 0.6009 | + +Checkpoints to reproduce the above results can be found [here](https://drive.google.com/drive/folders/17IBOqdImvZ7Phe0ZdC5U1vwPFJFkttWp?usp=sharing). + +Simultaneous Segmentation and Classification results on CoNSeP dataset: +| Platform | F1d | F1e | F1i | F1s | F1m | +| -----------|----------------| ---------------|----------------|----------------|----------------| +| TensorFlow | 0.748 | 0.635 | 0.631 | 0.566 | 0.426 | +| PyTorch | 0.756 | 0.636 | 0.559 | 0.557 | 0.348 | + + +## Citation + +If any part of this code is used, please give appropriate citation to our paper.
+ +BibTex entry:
+``` +@article{graham2019hover, + title={Hover-net: Simultaneous segmentation and classification of nuclei in multi-tissue histology images}, + author={Graham, Simon and Vu, Quoc Dang and Raza, Shan E Ahmed and Azam, Ayesha and Tsang, Yee Wah and Kwak, Jin Tae and Rajpoot, Nasir}, + journal={Medical Image Analysis}, + pages={101563}, + year={2019}, + publisher={Elsevier} +} +``` + +## Authors + +* [Quoc Dang Vu](https://github.com/vqdang) +* [Simon Graham](https://github.com/simongraham) + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +Note that the PanNuke dataset is licensed under [Attribution-NonCommercial-ShareAlike 4.0 International](http://creativecommons.org/licenses/by-nc-sa/4.0/), therefore the derived weights for HoVer-Net are also shared under the same license. Please consider the implications of using the weights under this license on your work and it's licensing. + + + diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/compute_stats.py b/compute_stats.py new file mode 100644 index 0000000..8154a9d --- /dev/null +++ b/compute_stats.py @@ -0,0 +1,248 @@ +import argparse +import cProfile as profile +import glob +import os + +import cv2 +import numpy as np +import pandas as pd +import scipy.io as sio + +from metrics.stats_utils import ( + get_dice_1, + get_fast_aji, + get_fast_aji_plus, + get_fast_dice_2, + get_fast_pq, + remap_label, + pair_coordinates +) + + +def run_nuclei_type_stat(pred_dir, true_dir, type_uid_list=None, exhaustive=True): + """GT must be exhaustively annotated for instance location (detection). + + Args: + true_dir, pred_dir: Directory contains .mat annotation for each image. + Each .mat must contain: + --`inst_centroid`: Nx2, contains N instance centroid + of mass coordinates (X, Y) + --`inst_type` : Nx1: type of each instance at each index + `inst_centroid` and `inst_type` must be aligned and each + index must be associated to the same instance + type_uid_list : list of id for nuclei type which the score should be calculated. + Default to `None` means available nuclei type in GT. + exhaustive : Flag to indicate whether GT is exhaustively labelled + for instance types + + """ + file_list = glob.glob(pred_dir + "*.mat") + file_list.sort() # ensure same order [1] + + paired_all = [] # unique matched index pair + unpaired_true_all = [] # the index must exist in `true_inst_type_all` and unique + unpaired_pred_all = [] # the index must exist in `pred_inst_type_all` and unique + true_inst_type_all = [] # each index is 1 independent data point + pred_inst_type_all = [] # each index is 1 independent data point + for file_idx, filename in enumerate(file_list[:]): + filename = os.path.basename(filename) + basename = filename.split(".")[0] + + true_info = sio.loadmat(os.path.join(true_dir, basename + ".mat")) + # dont squeeze, may be 1 instance exist + true_centroid = (true_info["inst_centroid"]).astype("float32") + true_inst_type = (true_info["inst_type"]).astype("int32") + + if true_centroid.shape[0] != 0: + true_inst_type = true_inst_type[:, 0] + else: # no instance at all + true_centroid = np.array([[0, 0]]) + true_inst_type = np.array([0]) + + # * for converting the GT type in CoNSeP + # true_inst_type[(true_inst_type == 3) | (true_inst_type == 4)] = 3 + # true_inst_type[(true_inst_type == 5) | (true_inst_type == 6) | (true_inst_type == 7)] = 4 + + pred_info = sio.loadmat(os.path.join(pred_dir, basename + ".mat")) + # dont squeeze, may be 1 instance exist + pred_centroid = (pred_info["inst_centroid"]).astype("float32") + pred_inst_type = (pred_info["inst_type"]).astype("int32") + + if pred_centroid.shape[0] != 0: + pred_inst_type = pred_inst_type[:, 0] + else: # no instance at all + pred_centroid = np.array([[0, 0]]) + pred_inst_type = np.array([0]) + + # ! if take longer than 1min for 1000 vs 1000 pairing, sthg is wrong with coord + paired, unpaired_true, unpaired_pred = pair_coordinates( + true_centroid, pred_centroid, 12 + ) + + # * Aggreate information + # get the offset as each index represent 1 independent instance + true_idx_offset = ( + true_idx_offset + true_inst_type_all[-1].shape[0] if file_idx != 0 else 0 + ) + pred_idx_offset = ( + pred_idx_offset + pred_inst_type_all[-1].shape[0] if file_idx != 0 else 0 + ) + true_inst_type_all.append(true_inst_type) + pred_inst_type_all.append(pred_inst_type) + + # increment the pairing index statistic + if paired.shape[0] != 0: # ! sanity + paired[:, 0] += true_idx_offset + paired[:, 1] += pred_idx_offset + paired_all.append(paired) + + unpaired_true += true_idx_offset + unpaired_pred += pred_idx_offset + unpaired_true_all.append(unpaired_true) + unpaired_pred_all.append(unpaired_pred) + + paired_all = np.concatenate(paired_all, axis=0) + unpaired_true_all = np.concatenate(unpaired_true_all, axis=0) + unpaired_pred_all = np.concatenate(unpaired_pred_all, axis=0) + true_inst_type_all = np.concatenate(true_inst_type_all, axis=0) + pred_inst_type_all = np.concatenate(pred_inst_type_all, axis=0) + + paired_true_type = true_inst_type_all[paired_all[:, 0]] + paired_pred_type = pred_inst_type_all[paired_all[:, 1]] + unpaired_true_type = true_inst_type_all[unpaired_true_all] + unpaired_pred_type = pred_inst_type_all[unpaired_pred_all] + + ### + def _f1_type(paired_true, paired_pred, unpaired_true, unpaired_pred, type_id, w): + type_samples = (paired_true == type_id) | (paired_pred == type_id) + + paired_true = paired_true[type_samples] + paired_pred = paired_pred[type_samples] + + tp_dt = ((paired_true == type_id) & (paired_pred == type_id)).sum() + tn_dt = ((paired_true != type_id) & (paired_pred != type_id)).sum() + fp_dt = ((paired_true != type_id) & (paired_pred == type_id)).sum() + fn_dt = ((paired_true == type_id) & (paired_pred != type_id)).sum() + + if not exhaustive: + ignore = (paired_true == -1).sum() + fp_dt -= ignore + + fp_d = (unpaired_pred == type_id).sum() + fn_d = (unpaired_true == type_id).sum() + + f1_type = (2 * (tp_dt + tn_dt)) / ( + 2 * (tp_dt + tn_dt) + + w[0] * fp_dt + + w[1] * fn_dt + + w[2] * fp_d + + w[3] * fn_d + ) + return f1_type + + # overall + # * quite meaningless for not exhaustive annotated dataset + w = [1, 1] + tp_d = paired_pred_type.shape[0] + fp_d = unpaired_pred_type.shape[0] + fn_d = unpaired_true_type.shape[0] + + tp_tn_dt = (paired_pred_type == paired_true_type).sum() + fp_fn_dt = (paired_pred_type != paired_true_type).sum() + + if not exhaustive: + ignore = (paired_true_type == -1).sum() + fp_fn_dt -= ignore + + acc_type = tp_tn_dt / (tp_tn_dt + fp_fn_dt) + f1_d = 2 * tp_d / (2 * tp_d + w[0] * fp_d + w[1] * fn_d) + + w = [2, 2, 1, 1] + + if type_uid_list is None: + type_uid_list = np.unique(true_inst_type_all).tolist() + + results_list = [f1_d, acc_type] + for type_uid in type_uid_list: + f1_type = _f1_type( + paired_true_type, + paired_pred_type, + unpaired_true_type, + unpaired_pred_type, + type_uid, + w, + ) + results_list.append(f1_type) + + np.set_printoptions(formatter={"float": "{: 0.5f}".format}) + print(np.array(results_list)) + return + + +def run_nuclei_inst_stat(pred_dir, true_dir, print_img_stats=False, ext=".mat"): + # print stats of each image + print(pred_dir) + + file_list = glob.glob("%s/*%s" % (pred_dir, ext)) + file_list.sort() # ensure same order + + metrics = [[], [], [], [], [], []] + for filename in file_list[:]: + filename = os.path.basename(filename) + basename = filename.split(".")[0] + + true = sio.loadmat(os.path.join(true_dir, basename + ".mat")) + true = (true["inst_map"]).astype("int32") + + pred = sio.loadmat(os.path.join(pred_dir, basename + ".mat")) + pred = (pred["inst_map"]).astype("int32") + + # to ensure that the instance numbering is contiguous + pred = remap_label(pred, by_size=False) + true = remap_label(true, by_size=False) + + pq_info = get_fast_pq(true, pred, match_iou=0.5)[0] + metrics[0].append(get_dice_1(true, pred)) + metrics[1].append(get_fast_aji(true, pred)) + metrics[2].append(pq_info[0]) # dq + metrics[3].append(pq_info[1]) # sq + metrics[4].append(pq_info[2]) # pq + metrics[5].append(get_fast_aji_plus(true, pred)) + + if print_img_stats: + print(basename, end="\t") + for scores in metrics: + print("%f " % scores[-1], end=" ") + print() + #### + metrics = np.array(metrics) + metrics_avg = np.mean(metrics, axis=-1) + np.set_printoptions(formatter={"float": "{: 0.5f}".format}) + print(metrics_avg) + metrics_avg = list(metrics_avg) + return metrics + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument( + "--mode", + help="mode to run the measurement," + "`type` for nuclei instance type classification or" + "`instance` for nuclei instance segmentation", + nargs="?", + default="instance", + const="instance", + ) + parser.add_argument( + "--pred_dir", help="point to output dir", nargs="?", default="", const="" + ) + parser.add_argument( + "--true_dir", help="point to ground truth dir", nargs="?", default="", const="" + ) + args = parser.parse_args() + + if args.mode == "instance": + run_nuclei_inst_stat(args.pred_dir, args.true_dir, print_img_stats=False) + if args.mode == "type": + run_nuclei_type_stat(args.pred_dir, args.true_dir) diff --git a/config.py b/config.py new file mode 100644 index 0000000..b68ec01 --- /dev/null +++ b/config.py @@ -0,0 +1,73 @@ +import importlib +import random + +import cv2 +import numpy as np + +from dataset import get_dataset + + +class Config(object): + """Configuration file.""" + + def __init__(self): + self.seed = 10 + + self.logging = True + + # turn on debug flag to trace some parallel processing problems more easily + self.debug = False + + model_name = "hovernet" + model_mode = "original" # choose either `original` or `fast` + + if model_mode not in ["original", "fast"]: + raise Exception("Must use either `original` or `fast` as model mode") + + nr_type = 5 # number of nuclear types (including background) + + # whether to predict the nuclear type, availability depending on dataset! + self.type_classification = True + + # shape information - + # below config is for original mode. + # If original model mode is used, use [270,270] and [80,80] for act_shape and out_shape respectively + # If fast model mode is used, use [256,256] and [164,164] for act_shape and out_shape respectively + aug_shape = [540, 540] # patch shape used during augmentation (larger patch may have less border artefacts) + act_shape = [270, 270] # patch shape used as input to network - central crop performed after augmentation + out_shape = [80, 80] # patch shape at output of network + + if model_mode == "original": + if act_shape != [270,270] or out_shape != [80,80]: + raise Exception("If using `original` mode, input shape must be [270,270] and output shape must be [80,80]") + if model_mode == "fast": + if act_shape != [256,256] or out_shape != [164,164]: + raise Exception("If using `fast` mode, input shape must be [256,256] and output shape must be [164,164]") + + self.dataset_name = "consep" # extracts dataset info from dataset.py + self.log_dir = "logs/" # where checkpoints will be saved + + # paths to training and validation patches + self.train_dir_list = [ + # "/data1/wyj/M/datasets/MoNuSAC/masks-new" + # "/data1/wyj/M/datasets/MoNuSAC/HV0/masks-new" + '/data1/wyj/M/datasets/consepcrop/Train/' + ] + self.valid_dir_list = [ + '/data1/wyj/M/datasets/consepcrop/Test/' + # "/data1/wyj/M/datasets/MoNuSAC/valid" + # "/data1/wyj/M/datasets/MoNuSAC/HV/masks-new-valid" + ] + + self.shape_info = { + "train": {"input_shape": act_shape, "mask_shape": out_shape,}, + "valid": {"input_shape": act_shape, "mask_shape": out_shape,}, + } + + # * parsing config to the running state and set up associated variables + self.dataset = get_dataset(self.dataset_name) + + module = importlib.import_module( + "models.%s.opt" % model_name + ) + self.model_config = module.get_config(nr_type, model_mode) diff --git a/convert_chkpt_tf2pytorch.py b/convert_chkpt_tf2pytorch.py new file mode 100644 index 0000000..5210e75 --- /dev/null +++ b/convert_chkpt_tf2pytorch.py @@ -0,0 +1,32 @@ +"""convert_chkpt_tf2pytorch.py. + +Convert checkpoint from previous repository trained with tensorflow to pytorch. + +""" + +import pandas as pd +import numpy as np +import torch + +mapping = pd.read_csv("variables_tf2pytorch.csv", index_col=False) +mapping = {v["Tensorflow"]: v['Pytorch'] for k, v in mapping.T.to_dict().items()} + +# mapping +tf_path = "" # to original tensorflow chkpt ends with .npz +pt_path = "" # to convert pytorch chkpt ends with .tar + +pt = {} +tf = np.load(tf_path) + +for tf_k, tf_v in tf.items(): + if 'linear' in tf_k: continue # should only be for pretrained model + pt_k = mapping[tf_k] + if "conv" in pt_k and "bn" not in pt_k and "bias" not in pt_k: + tf_v = np.transpose(tf_v, [3, 2, 0, 1]) + if "shortcut" in pt_k: + tf_v = np.transpose(tf_v, [3, 2, 0, 1]) + pt[pt_k] = torch.from_numpy(tf_v) +# make compatible with repo structure +pt["upsample2x.unpool_mat"] = torch.from_numpy(np.ones((2, 2), dtype="float32")) +pt = {"desc": pt} +torch.save(pt, pt_path) diff --git a/convert_format.py b/convert_format.py new file mode 100644 index 0000000..8883960 --- /dev/null +++ b/convert_format.py @@ -0,0 +1,102 @@ +"""convert_format.py. + +Used to convert output to a format that can be used for visualisaton with QuPath. +Note, this is only used for tile segmentation results; not WSI. + +""" + +import os +import re +import glob +import json +import pathlib +import numpy as np +import shutil + +from misc.utils import rm_n_mkdir, mkdir + +#### +def to_qupath(file_path, nuc_pos_list, nuc_type_list, type_info_dict): + """ + For QuPath v0.2.3 + """ + + def rgb2int(rgb): + r, g, b = rgb + return (r << 16) + (g << 8) + b + + nuc_pos_list = np.array(nuc_pos_list) + nuc_type_list = np.array(nuc_type_list) + assert nuc_pos_list.shape[0] == nuc_type_list.shape[0] + with open(file_path, "w") as fptr: + fptr.write("x\ty\tclass\tname\tcolor\n") + + nr_nuc = nuc_pos_list.shape[0] + for idx in range(nr_nuc): + nuc_type = nuc_type_list[idx] + nuc_pos = nuc_pos_list[idx] + type_name = type_info_dict[nuc_type][0] + type_color = type_info_dict[nuc_type][1] + type_color = rgb2int(type_color) # color in qupath format + fptr.write( + "{x}\t{y}\t{type_class}\t{type_name}\t{type_color}\n".format( + x=nuc_pos[0], + y=nuc_pos[1], + type_class="", + type_name=type_name, + type_color=type_color, + ) + ) + return + + +#### +if __name__ == "__main__": + target_format = "qupath" + # to rescale the coordinate set to match with lv0 mag of the wsi + scale_factor = 1.0 + root_dir = "dataset/dummy/out/" + + # to define the name, and color conversion code for each target format + type_info_dict = { + 0: ("nolabe", (0, 0, 0)), # no label + 1: ("neopla", (255, 0, 0)), # neoplastic + 2: ("inflam", (0, 255, 0)), # inflamm + 3: ("connec", (0, 0, 255)), # connective + 4: ("necros", (255, 255, 0)), # dead + 5: ("no-neo", (255, 165, 0)), # non-neoplastic epithelial + } + + patterning = lambda x: re.sub("([\[\]])", "[\\1]", x) + code_name_list = glob.glob(patterning("%s/*.json" % root_dir)) + code_name_list = [pathlib.Path(v).stem for v in code_name_list] + code_name_list.sort() + + output_dir = root_dir + + for code_name in code_name_list[:]: + nuc_info_path = "%s/%s.json" % (root_dir, code_name) + if not os.path.exists(nuc_info_path): + continue + print(code_name) + + with open(nuc_info_path, "r") as handle: + info_dict = json.load(handle)["nuc"] + + # from json to array + new_info_dict = {} + for inst_id, inst_info in info_dict.items(): + new_inst_info = {} + for info_name, info_value in inst_info.items(): + if isinstance(info_value, list): + info_value = np.array(info_value) + info_value = info_value * scale_factor + info_value = info_value.astype(np.int32) + new_inst_info[info_name] = info_value + new_info_dict[inst_id] = new_inst_info + + centroid_list = np.array([v["centroid"] for v in list(new_info_dict.values())]) + type_list = np.array([v["type"] for v in list(new_info_dict.values())]) + + save_path = "%s/%s.tsv" % (output_dir, code_name) + to_qupath(save_path, centroid_list, type_list, type_info_dict) diff --git a/cyclic.py b/cyclic.py new file mode 100644 index 0000000..6bd7347 --- /dev/null +++ b/cyclic.py @@ -0,0 +1,44 @@ +import datetime +import os,shutil +import datetime +import tqdm +import fix +for repeat in range(5): + now = datetime.datetime.now() + LRPTS_dirpath = "logs/LRPTS{:%Y%m%dT%H%M}/".format(now) + os.mkdir(LRPTS_dirpath) + for loop in range(5): + print('_____________________________________________LOOP{}________________________________________________'.format(loop)) + GT2 = r'../../../datasets/MoNuSACGTHV'.format(loop) + try: + shutil.rmtree(GT2) + except: + pass + shutil.copytree(r'../../../datasets/MoNuSACGT', GT2) + for fname in os.listdir(GT2 + '/stage1_train/'): + stage = GT2 + '/stage1_train/' + imsdirpath = stage + '/' + fname + '/masks/' + imsdir = os.listdir(imsdirpath) + length = len(imsdir) + count = length + used_nums = 160+160*loop + for im in imsdir: + if count > used_nums: + os.remove(imsdirpath + im) + count -= 1 + # k=random.randint(0,100) + # if k>30+loop*10 : + # os.remove(imsdirpath+im) + # shutil.copytree(GT2, LRPTS_dirpath + 'LOOP{}_Input_Dataset'.format(loop)) + fix.fix(LRPTS_dirpath+'Loop{}_Input_250seedcheck'.format(loop)) + shutil.copytree('../../../datasets/MoNuSAC/stage1_train',LRPTS_dirpath + 'LOOP{}_Input_Dataset/'.format(loop)) + python='/home/iftwo/anaconda3/envs/hovernet/bin/python' + os.system('nohup {} extract_patches_MONU.py '.format(python)) + shutil.copytree("/data1/wyj/M/datasets/MoNuSAC/HV0/masks-new",LRPTS_dirpath + 'LOOP{}_Input_PREPROCESSED_DATASET'.format(loop)) + os.system('{} run_train.py --gpu=0'.format(python)) + shutil.copytree('logs/00', LRPTS_dirpath + 'LOOP{}'.format(loop)) + for sid in range(5): + os.system('nohup {} run_infer.py --gpu=1 --nr_types=5 --batch_size=8 --model_mode=original ' + '--model_path=logs/00/net_epoch={}0.tar --type_info_path=type_info.json tile --input_dir=/data1/wyj/M/d' + 'atasets/MoNuSACCROP/images/ --output_dir=./outputtestourtemp/ --mem_usage=0.1 --draw_dot --save_qupath --save_raw_map'.format(python,sid+1)) + shutil.copytree('./outputtestourtemp', LRPTS_dirpath + 'LOOP{}_output_of_generation{}'.format(loop,sid)) \ No newline at end of file diff --git a/dataset.py b/dataset.py new file mode 100644 index 0000000..22ed238 --- /dev/null +++ b/dataset.py @@ -0,0 +1,109 @@ +import glob +import cv2 +import numpy as np +import scipy.io as sio + + +class __AbstractDataset(object): + """Abstract class for interface of subsequent classes. + Main idea is to encapsulate how each dataset should parse + their images and annotations. + + """ + + def load_img(self, path): + raise NotImplementedError + + def load_ann(self, path, with_type=False): + raise NotImplementedError + + +#### +class __Kumar(__AbstractDataset): + """Defines the Kumar dataset as originally introduced in: + + Kumar, Neeraj, Ruchika Verma, Sanuj Sharma, Surabhi Bhargava, Abhishek Vahadane, + and Amit Sethi. "A dataset and a technique for generalized nuclear segmentation for + computational pathology." IEEE transactions on medical imaging 36, no. 7 (2017): 1550-1560. + + """ + + def load_img(self, path): + return cv2.cvtColor(cv2.imread(path), cv2.COLOR_BGR2RGB) + + def load_ann(self, path, with_type=False): + # assumes that ann is HxW + assert not with_type, "Not support" + ann_inst = sio.loadmat(path)["inst_map"] + ann_inst = ann_inst.astype("int32") + ann = np.expand_dims(ann_inst, -1) + return ann + + +#### +class __CPM17(__AbstractDataset): + """Defines the CPM 2017 dataset as originally introduced in: + + Vu, Quoc Dang, Simon Graham, Tahsin Kurc, Minh Nguyen Nhat To, Muhammad Shaban, + Talha Qaiser, Navid Alemi Koohbanani et al. "Methods for segmentation and classification + of digital microscopy tissue images." Frontiers in bioengineering and biotechnology 7 (2019). + + """ + + def load_img(self, path): + return cv2.cvtColor(cv2.imread(path), cv2.COLOR_BGR2RGB) + + def load_ann(self, path, with_type=False): + assert not with_type, "Not support" + # assumes that ann is HxW + ann_inst = sio.loadmat(path)["inst_map"] + ann_inst = ann_inst.astype("int32") + ann = np.expand_dims(ann_inst, -1) + return ann + + +#### +class __CoNSeP(__AbstractDataset): + """Defines the CoNSeP dataset as originally introduced in: + + Graham, Simon, Quoc Dang Vu, Shan E. Ahmed Raza, Ayesha Azam, Yee Wah Tsang, Jin Tae Kwak, + and Nasir Rajpoot. "Hover-Net: Simultaneous segmentation and classification of nuclei in + multi-tissue histology images." Medical Image Analysis 58 (2019): 101563 + + """ + + def load_img(self, path): + return cv2.cvtColor(cv2.imread(path), cv2.COLOR_BGR2RGB) + + def load_ann(self, path, with_type=False): + # assumes that ann is HxW + ann_inst = sio.loadmat(path)["inst_map"] + if with_type: + ann_type = sio.loadmat(path)["type_map"] + + # merge classes for CoNSeP (in paper we only utilise 3 nuclei classes and background) + # If own dataset is used, then the below may need to be modified + ann_type[(ann_type == 3) | (ann_type == 4)] = 3 + ann_type[(ann_type == 5) | (ann_type == 6) | (ann_type == 7)] = 4 + + ann = np.dstack([ann_inst, ann_type]) + ann = ann.astype("int32") + else: + ann = np.expand_dims(ann_inst, -1) + ann = ann.astype("int32") + + return ann + + +#### +def get_dataset(name): + """Return a pre-defined dataset object associated with `name`.""" + name_dict = { + "kumar": lambda: __Kumar(), + "cpm17": lambda: __CPM17(), + "consep": lambda: __CoNSeP(), + } + if name.lower() in name_dict: + return name_dict[name]() + else: + assert False, "Unknown dataset `%s`" % name diff --git a/diagram.png b/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b5d0b9d55bd12e91e6c258d7ac9f2dd4c4b521 GIT binary patch literal 331889 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

8I6O=*RCi(ufH|c_-vlA5->D@-ZbUa$|nX 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Ê&{ZbP~_}};t<+c88 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

(rJA%c|_$#72PDiX*M_kntw*c zLoJLgX_j(yrlZ^FE@wQ?+a)WgEQ1>AVNNqt=IA47xa8keTjTZ-E0s&(?EZaYRR@?Mt?|KxDQ9| z{N1jUS&U3Haop1lQ+V`W*}uf45vgCE^k4Pf!RK)|g|4`ZyEL_4lG6L#&aG%3T+?ou z9%!y5ErkcF?~p zmN&3lFQoTm0q3|KAI4F~80W<(MrA!sVT8I~!rDh`q_M55Ph^vtL9u1#eHwEaSQ<@; zy75X3Y)x%`Tr#o3x8zaj7|PENM?{RzrWA4WcZ*|Q{UDwgdUyW{rE&(D`!_!5b?0k{ z*C>NuWjE&hIm1{B+<|LR^x2c`pnKqlOJ+xgbLA6Z ze&k0MKTKjC5g^JLU%WzS(-I39g6KdCAU@ff|5{L|s5N-?pn?3b+S z3ov@gCpPQXyn)i?WNAutT`6>`+8m+W6R6R`FA%DqwFw5{nfF!l|8Tt|n!(zC5{U|ZLh~;iUz8jUDsx=yhWy9(E6J?PrU)&#s<5#Ou>R0%7qO+^ z8zh_#g+wQKTKuWI$NerlKi{)JLe;Wvu_d^X4j(%jRqT6%u8htCi3s#O!fk|->WUm` zEajahkWi}`t+Juc-RH6&Z>OGm$;EGbZ1#enxjTd$lg$)C3jd_tRy)Vd)cCa=;Hmn- z=+vjEKO|ImPpHfOwtLAsfz9Hbb)T9tnoVEXkdNY+C>(`421eV#rXt1#^2#}NDvW+c zr10KL+pzgnfEBw7SDH^(4#a+|Hoi_^R_aMOg-t58B0nh8A zgv+U7llcz{QLARDy;0~Y+#Zf{$aU!baJ7??K0Lq+vXB?1e6!hye0tE22A+1&t26 zEf+sYRZ~4oMb2UP+(_G4YdecBo&LB1q%cb(XY$idZ146ZbvjJ8kXs&>mU9PZft5iE zMm_8@vwsyiGhL~VAv_${@eKlS73Nk(bbG01tL0uVN1g6rlyo(z76FafQ*FHWaW4c1|i zqGvv;1EMkbC1=7W&0@ajLl*F7Z zZM&#ixxLI#>Ia)iw_^v>7m`G`c&GBOgzegrZWkZ&r*_U&Gk-k!D$Fz4_o4dK5@zfO z3Q;o($a@`co7ovVHMV6E#3^O|6CM1OrwaTxi_#LpQi*1J@*3o@>ykLS0G#!Cv~t>0 zuEo5WdVWwPKo=g=I`%wz+mmK9C=9Z*&p}7|Vb1TGbp$?%I-2a*Ka*k>n`*(i^{;@( zZ^WO>w;?DfpZsJgy8HOVty7KZVU+*|}DlAF2&y`B3zi;=s2<(>_TWrv^zG6Pdyv<^G?*_`h^{3xe=P1E&i*nPm4ot@pOr_#L?3U6Wk%lLy3&i0JpDzToiV-<}(;e zfl8KC$XXQhLV^#9BY`|5fBzM3;9sf`adb$AG|0&es%WQ}TQyU=H zp)Y^+>fD^ZiU*}a1!}`n{Z1@Wu)74}fp=A1nZ2iWrh>5P<9JV*G}SW(Y|`3C@azz* z7+!h8s{GK2LUed6kT|^??ZMgRPS&{

*O;W}k4LTS7){RqxNy(_DNq3FRd~!OI;x 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 literal 0 HcmV?d00001 diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..76d66d4 --- /dev/null +++ b/environment.yml @@ -0,0 +1,11 @@ +name: hovernet +channels: + - conda-forge + - defaults +dependencies: + - python=3.6.12 + - pip=20.3.1 + - openslide + - pip: + - -r file:requirements.txt + - openslide-python==1.1.2 diff --git a/extract_patches.py b/extract_patches.py new file mode 100644 index 0000000..36194ee --- /dev/null +++ b/extract_patches.py @@ -0,0 +1,100 @@ +"""extract_patches.py + +Patch extraction script. +""" + +import re +import glob +import os +import tqdm +import pathlib + +import numpy as np + +from misc.patch_extractor import PatchExtractor +from misc.utils import rm_n_mkdir + +from dataset import get_dataset + +# ------------------------------------------------------------------------------------- +if __name__ == "__main__": + + # Determines whether to extract type map (only applicable to datasets with class labels). + type_classification = True + + win_size = [540, 540] + step_size = [164, 164] + extract_type = "mirror" # Choose 'mirror' or 'valid'. 'mirror'- use padding at borders. 'valid'- only extract from valid regions. + + # Name of dataset - use Kumar, CPM17 or CoNSeP. + # This used to get the specific dataset img and ann loading scheme from dataset.py + dataset_name = "consep" + save_root = "dataset/training_data/%s/" % dataset_name + + # a dictionary to specify where the dataset path should be + dataset_info = { + "train": { + "img": (".png", "dataset/CoNSeP/Train/Images/"), + "ann": (".mat", "dataset/CoNSeP/Train/Labels/"), + }, + "valid": { + "img": (".png", "dataset/CoNSeP/Test/Images/"), + "ann": (".mat", "dataset/CoNSeP/Test/Labels/"), + }, + } + + patterning = lambda x: re.sub("([\[\]])", "[\\1]", x) + parser = get_dataset(dataset_name) + xtractor = PatchExtractor(win_size, step_size) + for split_name, split_desc in dataset_info.items(): + img_ext, img_dir = split_desc["img"] + ann_ext, ann_dir = split_desc["ann"] + + out_dir = "%s/%s/%s/%dx%d_%dx%d/" % ( + save_root, + dataset_name, + split_name, + win_size[0], + win_size[1], + step_size[0], + step_size[1], + ) + file_list = glob.glob(patterning("%s/*%s" % (ann_dir, ann_ext))) + file_list.sort() # ensure same ordering across platform + + rm_n_mkdir(out_dir) + + pbar_format = "Process File: |{bar}| {n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}]" + pbarx = tqdm.tqdm( + total=len(file_list), bar_format=pbar_format, ascii=True, position=0 + ) + + for file_idx, file_path in enumerate(file_list): + base_name = pathlib.Path(file_path).stem + + img = parser.load_img("%s/%s%s" % (img_dir, base_name, img_ext)) + ann = parser.load_ann( + "%s/%s%s" % (ann_dir, base_name, ann_ext), type_classification + ) + + # * + img = np.concatenate([img, ann], axis=-1) + sub_patches = xtractor.extract(img, extract_type) + + pbar_format = "Extracting : |{bar}| {n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}]" + pbar = tqdm.tqdm( + total=len(sub_patches), + leave=False, + bar_format=pbar_format, + ascii=True, + position=1, + ) + + for idx, patch in enumerate(sub_patches): + np.save("{0}/{1}_{2:03d}.npy".format(out_dir, base_name, idx), patch) + pbar.update() + pbar.close() + # * + + pbarx.update() + pbarx.close() diff --git a/extract_patches_CONSEP.py b/extract_patches_CONSEP.py new file mode 100644 index 0000000..5db8829 --- /dev/null +++ b/extract_patches_CONSEP.py @@ -0,0 +1,106 @@ +"""extract_patches.py + +Patch extraction script. +""" + +import re +import glob +import os +import shutil + +import skimage.io +import tqdm +import pathlib + +import numpy as np + +from misc.patch_extractor import PatchExtractor +from misc.utils import rm_n_mkdir +import warnings +warnings.filterwarnings("ignore") +from dataset import get_dataset +import skimage.io as io +# ------------------------------------------------------------------------------------- +if __name__ == "__main__": + win_size = [540, 540] + step_size = [164, 164] + extract_type = "mirror" + xtractor = PatchExtractor(win_size, step_size) + # monudir='/data1/wyj/M/datasets/MoNuSACGT/stage1_train/'#need to change!!!!!!!!!!!! + monudir = '/data1/wyj/M/datasets/consepGT/Train/' # need to change!!!!!!!!!!!! + pbar_format = "Process File: |{bar}| {n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}]" + pbarx = tqdm.tqdm( + total=len(os.listdir(monudir)), bar_format=pbar_format, ascii=True, position=0 + ) + hvdir = '/data1/wyj/M/datasets/consepGT/trainHV/' + if os.path.exists(hvdir): + shutil.rmtree(hvdir) + if not os.path.exists(hvdir): + os.mkdir(hvdir) + for dirname in os.listdir(monudir): + imgpath=monudir+dirname+'/images/'+dirname+'.png' + maskspath = monudir + dirname + '/masks/' + img = io.imread(imgpath) + img_mask=np.zeros((1000,1000,1),dtype=np.int) + img_mask_type = np.zeros((1000, 1000, 1), dtype=np.int) + count=0 + ANNO_sum=0 + for maskp in os.listdir(maskspath): + count+=1 + tempmask=io.imread(os.path.join(maskspath,maskp)) + ANNO_sum+= np.sum(tempmask!=0) + img_mask[tempmask!=0,0]=count + img_mask_type[tempmask != 0, 0] = 1 + print('ANNO_SUM:{} FINAL_SUM:{}'.format(ANNO_sum,np.sum(img_mask!=0))) + + img = np.concatenate([img, img_mask,img_mask_type], axis=2) + sub_patches = xtractor.extract(img, extract_type) + + pbar_format = "Extracting : |{bar}| {n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}]" + pbar = tqdm.tqdm( + total=len(sub_patches), + leave=False, + bar_format=pbar_format, + ascii=True, + position=1, + ) + VAL_IMAGE_IDS = [ + "TCGA-E2-A1B5-01Z-00-DX1", + "TCGA-E2-A14V-01Z-00-DX1", + "TCGA-21-5784-01Z-00-DX1", + "TCGA-21-5786-01Z-00-DX1", + "TCGA-B0-5698-01Z-00-DX1", + "TCGA-B0-5710-01Z-00-DX1", + "TCGA-CH-5767-01Z-00-DX1", + "TCGA-G9-6362-01Z-00-DX1", + + "TCGA-DK-A2I6-01A-01-TS1", + "TCGA-G2-A2EK-01A-02-TSB", + "TCGA-AY-A8YK-01A-01-TS1", + "TCGA-NH-A8F7-01A-01-TS1", + "TCGA-KB-A93J-01A-01-TS1", + "TCGA-RD-A8N9-01A-01-TS1", + ] + if not os.path.exists('{}masks-newori'.format(hvdir)): + os.mkdir('{}masks-newori'.format(hvdir)) + if not os.path.exists('{}masks-instance'.format(hvdir)): + os.mkdir('{}masks-instance'.format(hvdir)) + if not os.path.exists('{}masks-new'.format(hvdir)): + os.mkdir('{}masks-new'.format(hvdir)) + if not os.path.exists('{}masks-new-valid'.format(hvdir)): + os.mkdir('{}masks-new-valid'.format(hvdir)) + for idx, patch in enumerate(sub_patches): + # skimage.io.imsave("{0}/{1}_{2:03d}.tif".format('/data1/wyj/M/datasets/MoNuSAC/masks-newori', dirname, idx), patch) + skimage.io.imsave("{0}/{1}_{2:03d}.png".format('{}masks-newori'.format(hvdir), dirname, idx), + patch[:,:,0:3]) + skimage.io.imsave("{0}/{1}_{2:03d}.png".format('{}masks-instance'.format(hvdir), dirname, idx), + patch[:,:,3]) + if dirname[:23] not in VAL_IMAGE_IDS: + np.save("{0}/{1}_{2:03d}.npy".format('{}masks-new'.format(hvdir), dirname, idx), patch) + else: + np.save("{0}/{1}_{2:03d}.npy".format('{}masks-new-valid'.format(hvdir), dirname, idx), patch) + pbar.update() + + pbar.close() + pbarx.update() + pbarx.close() diff --git a/extract_patches_MONU.py b/extract_patches_MONU.py new file mode 100644 index 0000000..eba188d --- /dev/null +++ b/extract_patches_MONU.py @@ -0,0 +1,106 @@ +"""extract_patches.py + +Patch extraction script. +""" + +import re +import glob +import os +import shutil + +import skimage.io +import tqdm +import pathlib + +import numpy as np + +from misc.patch_extractor import PatchExtractor +from misc.utils import rm_n_mkdir +import warnings +warnings.filterwarnings("ignore") +from dataset import get_dataset +import skimage.io as io +# ------------------------------------------------------------------------------------- +if __name__ == "__main__": + win_size = [540, 540] + step_size = [164, 164] + extract_type = "mirror" + xtractor = PatchExtractor(win_size, step_size) + # monudir='/data1/wyj/M/datasets/MoNuSACGT/stage1_train/'#need to change!!!!!!!!!!!! + monudir = '/data1/wyj/M/datasets/MoNuSACGTHV/stage1_train/' # need to change!!!!!!!!!!!! + pbar_format = "Process File: |{bar}| {n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}]" + pbarx = tqdm.tqdm( + total=len(os.listdir(monudir)), bar_format=pbar_format, ascii=True, position=0 + ) + hvdir = '/data1/wyj/M/datasets/MoNuSAC/HV0/' + if os.path.exists(hvdir): + shutil.rmtree(hvdir) + if not os.path.exists(hvdir): + os.mkdir(hvdir) + for dirname in os.listdir(monudir): + imgpath=monudir+dirname+'/images/'+dirname+'.png' + maskspath = monudir + dirname + '/masks/' + img = io.imread(imgpath) + img_mask=np.zeros((1000,1000,1),dtype=np.int) + img_mask_type = np.zeros((1000, 1000, 1), dtype=np.int) + count=0 + ANNO_sum=0 + for maskp in os.listdir(maskspath): + count+=1 + tempmask=io.imread(os.path.join(maskspath,maskp)) + ANNO_sum+= np.sum(tempmask!=0) + img_mask[tempmask!=0,0]=count + img_mask_type[tempmask != 0, 0] = 1 + print('ANNO_SUM:{} FINAL_SUM:{}'.format(ANNO_sum,np.sum(img_mask!=0))) + + img = np.concatenate([img, img_mask,img_mask_type], axis=2) + sub_patches = xtractor.extract(img, extract_type) + + pbar_format = "Extracting : |{bar}| {n_fmt}/{total_fmt}[{elapsed}<{remaining},{rate_fmt}]" + pbar = tqdm.tqdm( + total=len(sub_patches), + leave=False, + bar_format=pbar_format, + ascii=True, + position=1, + ) + VAL_IMAGE_IDS = [ + "TCGA-E2-A1B5-01Z-00-DX1", + "TCGA-E2-A14V-01Z-00-DX1", + "TCGA-21-5784-01Z-00-DX1", + "TCGA-21-5786-01Z-00-DX1", + "TCGA-B0-5698-01Z-00-DX1", + "TCGA-B0-5710-01Z-00-DX1", + "TCGA-CH-5767-01Z-00-DX1", + "TCGA-G9-6362-01Z-00-DX1", + + "TCGA-DK-A2I6-01A-01-TS1", + "TCGA-G2-A2EK-01A-02-TSB", + "TCGA-AY-A8YK-01A-01-TS1", + "TCGA-NH-A8F7-01A-01-TS1", + "TCGA-KB-A93J-01A-01-TS1", + "TCGA-RD-A8N9-01A-01-TS1", + ] + if not os.path.exists('{}masks-newori'.format(hvdir)): + os.mkdir('{}masks-newori'.format(hvdir)) + if not os.path.exists('{}masks-instance'.format(hvdir)): + os.mkdir('{}masks-instance'.format(hvdir)) + if not os.path.exists('{}masks-new'.format(hvdir)): + os.mkdir('{}masks-new'.format(hvdir)) + if not os.path.exists('{}masks-new-valid'.format(hvdir)): + os.mkdir('{}masks-new-valid'.format(hvdir)) + for idx, patch in enumerate(sub_patches): + # skimage.io.imsave("{0}/{1}_{2:03d}.tif".format('/data1/wyj/M/datasets/MoNuSAC/masks-newori', dirname, idx), patch) + skimage.io.imsave("{0}/{1}_{2:03d}.png".format('{}masks-newori'.format(hvdir), dirname, idx), + patch[:,:,0:3]) + skimage.io.imsave("{0}/{1}_{2:03d}.png".format('{}masks-instance'.format(hvdir), dirname, idx), + patch[:,:,3]) + if dirname[:23] not in VAL_IMAGE_IDS: + np.save("{0}/{1}_{2:03d}.npy".format('{}masks-new'.format(hvdir), dirname, idx), patch) + else: + np.save("{0}/{1}_{2:03d}.npy".format('{}masks-new-valid'.format(hvdir), dirname, idx), patch) + pbar.update() + + pbar.close() + pbarx.update() + pbarx.close() diff --git a/fix.py b/fix.py new file mode 100644 index 0000000..07b4a57 --- /dev/null +++ b/fix.py @@ -0,0 +1,406 @@ +import shutil +import numpy as np +from skimage import io ,measure +import matplotlib.image as mi +import matplotlib.pyplot as plt +import os +from skimage.color import rgb2gray +from skimage.transform import resize +#import test +import warnings +from collections import Counter +warnings.filterwarnings("ignore") +def dice(a, b): + """dice coefficient 2nt/na + nb.""" + overlap = a * b + I = overlap.sum() * 2 + U = (a.sum() + b.sum()) + + return I/U +def TP(gt, mask): + """dice coefficient 2nt/na + nb.""" + overlap = gt * mask + I = overlap.sum() + U = mask.sum() + return I/U +def Recall(gt, mask): + """dice coefficient 2nt/na + nb.""" + return TP(mask,gt) +# Dirpath=r'D:\BaiduNetdiskDownload\BrestCancer\softmaxgradient-lrp-master\vgg\Work' +# lrp=os.listdir(Dirpath+'/LRP1') +# lrpa=os.listdir(Dirpath+'/LRPA1') +# im=os.listdir(Dirpath+'/im') +# gt=os.listdir(Dirpath+'/gt') +# gbp=os.listdir(Dirpath+'/GBP1') +# sglrp=os.listdir(Dirpath+'/SGLRPA1') +# countim=0 +# picno_=0 +# for id in range(len(lrp)): +# LRP=io.imread(Dirpath+'/LRP1/'+lrp[id]) +# if np.min(LRP)<250: +# plt.subplot(5,5,5*countim+2) +# plt.imshow(LRP) +# plt.xticks([]) +# plt.yticks([]) +# plt.subplot(5, 5, 5 * countim + 1) +# GBP=io.imread(Dirpath+'/GBP1/'+gbp[id]) +# plt.imshow(GBP) +# plt.xticks([]) +# plt.yticks([]) +# plt.subplot(5, 5, 5 * countim + 3) +# LRPA=io.imread(Dirpath+'/LRPA1/'+lrpa[id]) +# plt.imshow(LRPA) +# plt.xticks([]) +# plt.yticks([]) +# plt.subplot(5, 5, 5 * countim + 4) +# GT=io.imread(Dirpath+'/gt/'+gt[id]) +# plt.imshow(GT) +# plt.xticks([]) +# plt.yticks([]) +# plt.subplot(5, 5, 5 * countim + 5) +# IM=io.imread(Dirpath+'/im/'+im[id]) +# plt.imshow(IM) +# plt.xticks([]) +# plt.yticks([]) +# countim=countim+1 +# if countim==5: +# countim=0 +# picno_=picno_+1 +# plt.axis('off') +# plt.xticks([]) +# plt.yticks([]) +# plt.gca().xaxis.set_major_locator(plt.NullLocator()) +# plt.gca().yaxis.set_major_locator(plt.NullLocator()) +# plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0) +# plt.margins(0,0) +# plt.savefig('compare/{}.png'.format(picno_),pad_inches = 0) +# plt.close() +# #plt.show() + +def fix(LLLdir=''): + colours=[0.4,0.2,0.5,0.38,0.2,0.4,0.2,0.4,0.3,0.2,0.2,0.25,0.3,0.25,0.32,0.2,0.45,0.5,0.25,0.45,0.4,0.35,0.4,0.45,0.3,0.25,0.3,0.2,0.19,0.2] + # print(len(colours)) + SAVPATH =LLLdir + if not os.path.exists(SAVPATH): + os.mkdir(SAVPATH) + # print(len(current_ids)) + order=np.array([0,1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23,24,3,4,5,6,7,8,9]) + # b = np.where(order==4) + # print(b[0][0]) + # order2=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30] + # order3=[0,1,1] + # imgdir=r'D:\BaiduNetdiskDownload\BrestCancer\MoNuSAC-master\data\MoNuSeg Training Data\Tissue Images' + #gtp=r'D:\BaiduNetdiskDownload\BrestCancer\softmaxgradient-lrp-master\vgg\Work\gt\21_8.png' + gtp=r'../../../datasets/MoNuSAC_mask/' + # lrpim_path=r'D:\BaiduNetdiskDownload\BrestCancer\softmaxgradient-lrp-master\vgg\Work\LRP1\S21_LRP_8.jpg' + #lrpim_path=r'D:\BaiduNetdiskDownload\BrestCancer\softmaxgradient-lrp-master\Mapping_GT' + #mappath=r'D:\BaiduNetdiskDownload\BrestCancer\softmaxgradient-lrp-master\Mapping_GT' + idd=0 + stage = os.path.abspath(r'../../../datasets/MoNuSAC/stage1_train') + LRPMAPS='LRPmaps' + seed_path=r'../../datasets/MoNuSAC/seed_visual/' + result=r'../../results\nucleus\submit_20201219T025258' + VISUALIZE=False + mean_area=600 + STAGE_NAMES=['TCGA-18-5592-01Z-00-DX1', 'TCGA-21-5784-01Z-00-DX1', 'TCGA-21-5786-01Z-00-DX1', 'TCGA-38-6178-01Z-00-DX1', + 'TCGA-49-4488-01Z-00-DX1', 'TCGA-50-5931-01Z-00-DX1', 'TCGA-A7-A13E-01Z-00-DX1', 'TCGA-A7-A13F-01Z-00-DX1', + 'TCGA-AR-A1AK-01Z-00-DX1', 'TCGA-AR-A1AS-01Z-00-DX1', 'TCGA-AY-A8YK-01A-01-TS1', 'TCGA-B0-5698-01Z-00-DX1', + 'TCGA-B0-5710-01Z-00-DX1', 'TCGA-B0-5711-01Z-00-DX1', 'TCGA-CH-5767-01Z-00-DX1', 'TCGA-DK-A2I6-01A-01-TS1', + 'TCGA-E2-A14V-01Z-00-DX1', 'TCGA-E2-A1B5-01Z-00-DX1', 'TCGA-G2-A2EK-01A-02-TSB', 'TCGA-G9-6336-01Z-00-DX1', + 'TCGA-G9-6348-01Z-00-DX1', 'TCGA-G9-6356-01Z-00-DX1', 'TCGA-G9-6362-01Z-00-DX1', 'TCGA-G9-6363-01Z-00-DX1', + 'TCGA-HE-7128-01Z-00-DX1', 'TCGA-HE-7129-01Z-00-DX1', 'TCGA-HE-7130-01Z-00-DX1', 'TCGA-KB-A93J-01A-01-TS1', + 'TCGA-NH-A8F7-01A-01-TS1', 'TCGA-RD-A8N9-01A-01-TS1'] + for filename in os.listdir(stage): + for file in os.listdir(os.path.join(stage, filename + '/masks')): + os.remove(os.path.join(stage, filename + '/masks/' + file)) + for nam in STAGE_NAMES: + AREA_WEIGHT=0 + print(nam) + #nam = r'TCGA-HE-7129-01Z-00-DX1' + if nam==r'TCGA-HE-7129-01Z-00-DX1' or nam=='TCGA-HE-7128-01Z-00-DX1' : + AREA_WEIGHT=50 + mean_area=200 + else: + AREA_WEIGHT=0 + mean_area=600 + name=nam+'.png' + lrpimc=io.imread(stage +'/'+nam+'/images/'+name) + oriim=io.imread(stage +'/'+nam+'/images/'+name) + #res=io.imread(result +'/'+name) + # plt.subplot(1, 3, 2) + # plt.imshow(lrpimc) + # plt.subplot(1, 3, 1) + # plt.imshow(oriim) + # plt.subplot(1, 3, 3) + # plt.imshow(res) + # plt.show() + # ddir = r'D:\BaiduNetdiskDownload\BrestCancer\softmaxgradient-lrp-master\vgg\Work\compare_4/' + #plt.savefig(ddir + name , bbox_inches='tight', dpi=900) + # lrpimc=np.array(resize(lrpim,(224,224))) + # plt.imshow(lrpimc) + # plt.show() + gt=np.array(io.imread(gtp+'/'+name[:-4]+'_mask.png')) + gray=rgb2gray(oriim) + # plt.imshow(gray) + # plt.show() + # print(np.mean(gray)) + final_mask=np.zeros(lrpimc.shape[0:2],dtype=np.int16) + f_step3 = np.ones(lrpimc.shape[0:2], dtype=np.int16) + final_responding_gt=np.zeros(lrpimc.shape[0:2]) + mask = np.zeros(lrpimc.shape[0:2]) + blank_result = np.zeros(lrpimc.shape[0:2]) + mask88 = np.zeros(lrpimc.shape[0:2]) + max_convex_map = np.zeros(lrpimc.shape[0:2]) + gtmaskblank_result = np.zeros(lrpimc.shape[0:2]) + gt_respoding_instance = np.zeros(lrpimc.shape[0:2],dtype=np.int16) + double_contour_map = np.zeros(lrpimc.shape[0:2]) + import random + threshold = colours[idd]+(random.random()-0.5)*2*0.01#(np.mean(gray)) + if idd==0: + threshold = 0.35 + mask[gray <= threshold] = 255 + con = measure.label(mask, connectivity=1) + conp = measure.regionprops(con) + gtcon = measure.label(gt, connectivity=1) + gtconp = measure.regionprops(gtcon) + for conpi in conp: + if conpi.area < 100: + con[con == conpi.label] = 0 + con_sq = measure.label(con) + con_sqp=measure.regionprops(con_sq) + # plt.imshow(con_sq) + # plt.show() + score=np.zeros(len(con_sqp)) + f_step3=f_step3*255 + + for i in range(len(con_sqp)) : + convex = con_sqp[i - 1].convex_image + [x1, y1, x2, y2] = con_sqp[i - 1].bbox + use = con[x1:x2, y1:y2] + usef_step3 = f_step3[x1:x2, y1:y2] + usef_step3[convex == True] = 0 + usef_step3[use!=0] = 255 + use[convex == True] = 255 + convex_rate=con_sqp[i].filled_area / con_sqp[i].convex_area + if convex_rate > 0.5: + weight=(convex_rate - 0.5) + else:weight=0 + [x1, y1, x2, y2] = con_sqp[i].bbox + X=x2-x1 + Y=y2-y1 + #score[i] = 300 * convex_rate - AREA_WEIGHT * abs(con_sqp[i].convex_area - 600) - 200 * weight * (((X-Y)/(X+Y))*((X-Y)/(X+Y))) #L3 0789 + score[i] = 300 * convex_rate - AREA_WEIGHT*abs(con_sqp[i].convex_area - mean_area) #- 200 * weight * (((X-Y)/(X+Y))*((X-Y)/(X+Y))) + if nam == r'TCGA-HE-7129-01Z-00-DX1' or nam == 'TCGA-HE-7128-01Z-00-DX1' : + pass + else: + if con_sqp[i].area<200 or con_sqp[i].area>1300: + score[i]=score[i]-1000 + if con_sqp[i].area <= 150 or con_sqp[i].area >= 2000: + score[i] = score[i] - 1000000 + + if x1==0 or y1==0 or x2>=lrpimc.shape[0]-1 or y2>=lrpimc.shape[1]-1: + score[i] =score[i]-10000 + rank=np.argsort(score) + LENGTH=200 + IDS=[] + for i in range(LENGTH+1): + try: + IDS.append(con_sqp[rank[-i]].label) + except: + break + + # plt.imshow(con_sq) + # plt.show() + cid=0 + for current_id in IDS: + # gtmaskblank_result[gtcon == 9] = 255 + + convex=con_sqp[current_id-1].convex_image + if con_sqp[current_id-1].area<2000 and cidthreshold_green]=0 + # mask[lrpimc_green<=threshold_green]=255 + # mask[lrpimc_blue<=threshold_blue]=255 + # mask[gb<=100]=255 + # plt.imshow(mask) + # plt.show() + + + # new_con=sorted(conp,key=lambda item:item.area,reverse=True) + # for i in range(10): + # label=new_con[i].label + # label_toshow=np.zeros(lrpimc.shape[0:2]) + # label_toshow[con==label]=255 + # plt.imshow(label_toshow) + # plt.ion() + # plt.pause(0.6) # 显示秒数 + # plt.close() + + + # gtmaskblank_result[gtcon==9]=255 + # convex=conp[current_id-1].convex_image + # [x1,y1,x2,y2]=conp[current_id-1].bbox + # use=max_convex_map[x1:x2,y1:y2] + # use[convex==True]=255 + # contours=measure.find_contours(max_convex_map,254) + # double_contour_map[con==current_id]=255 + # # mask[] + # gt_responding_value=gtcon[(x2+x1)//2,(y2+y1)//2] + # gt_respoding_instance[gtcon==gt_responding_value]=100 + + # for n, contour in enumerate(contours): + # for x,y in contour: + # double_contour_map[int(x+0.5),int(y+0.5)]=255 + # # for n, contour in enumerate(contours): + # # plt.plot(contour[:, 1], contour[:, 0], linewidth=0.5,color='yellow') + # # plt.show() + # double_contour_map[double_contour_map==0]=1 + # double_contour_map[double_contour_map==255]=0 + # double_contour_map[double_contour_map==1]=255 + # cmcon=measure.label(double_contour_map) + # blank_result[cmcon==2]=200 + # mask88[con==88]=255 + # print(dice(gt_respoding_instance!=0,blank_result!=0)) + # plt.imshow(gt_respoding_instance) + # plt.show() + # gt_respoding_instance=gt_respoding_instance+blank_result + # plt.subplot(1,2,1) + # plt.imshow(con) + # plt.subplot(1,2,2) + # plt.imshow(gt[:,:,0]) + # plt.show() + + + + + # + # plt.imshow(gtmaskblank_result) + # plt.show() + # plt.imshow(blank_result) + # plt.show() + # plt.imshow(double_contour_map) + # plt.show() + # plt.imshow(max_convex_map) + # plt.show() + # max_convex_map=max_convex_map+gt_respoding_instance + # plt.imshow(max_convex_map) + # plt.show() + # plt.imshow(gray) + # plt.show() + # plt.imshow(lrpimc) + # plt.show() + + # final_visual=np.zeros((lrpimc.shape[0],lrpimc.shape[1],3)) + # f1=final_visual[:,:,0] + # f1[final_mask!=0]=255 + # final_visualgt=np.zeros((lrpimc.shape[0],lrpimc.shape[1],3)) + # f2=final_visual[:,:,1] + # f2[final_responding_gt!=0]=255 + # plt.imshow(final_visual) + # plt.show() + # plt.imshow(final_mask) + # plt.show() + # plt.pause(0.6) # 显示秒数 + # plt.close() + # plt.imshow(final_responding_gt) + # plt.show() + # plt.pause(0.6) # 显示秒数 + # plt.close() + # print(dice(final_responding_gt != 0, final_mask != 0)) diff --git a/hovernetCLASS.py b/hovernetCLASS.py new file mode 100644 index 0000000..ccc7ff8 --- /dev/null +++ b/hovernetCLASS.py @@ -0,0 +1,286 @@ +import torch +import torch.nn as nn +from torch.utils.data import DataLoader +from torch.utils.data import Dataset +import torchvision as tv +import torchvision.transforms as tfs +import PIL +import numpy as np +import torch.nn.functional as F +import os +import cv2 +from skimage import io,morphology,measure +import math +import matplotlib.pyplot as plt +import signal +from sklearn import metrics +import time +import cv2 +import argparse +import glob +import importlib +import inspect +import json +import os +import shutil + +import matplotlib +import numpy as np +import torch +from docopt import docopt +from tensorboardX import SummaryWriter +from torch.nn import DataParallel # TODO: switch to DistributedDataParallel +from torch.utils.data import DataLoader +from pytorch_grad_cam import GradCAM, HiResCAM, ScoreCAM, GradCAMPlusPlus, AblationCAM, XGradCAM, EigenCAM, FullGrad,EigenGradCAM,LayerCAM,GradCAMElementWise +from pytorch_grad_cam.utils.model_targets import ClassifierOutputTarget +from pytorch_grad_cam.utils.image import show_cam_on_image +from config import Config +from dataloader.train_loader import FileLoader +from misc.utils import rm_n_mkdir +from run_utils.engine import RunEngine +methods=[GradCAM, HiResCAM, GradCAMPlusPlus, XGradCAM, EigenCAM, FullGrad,EigenGradCAM,LayerCAM,GradCAMElementWise] +# methods=[GradCAM, HiResCAM] +# methods = \ +# {"gradcam": GradCAM, +# "hirescam": HiResCAM, +# "scorecam": ScoreCAM, +# "gradcam++": GradCAMPlusPlus, +# "ablationcam": AblationCAM, +# "xgradcam": XGradCAM, +# "eigencam": EigenCAM, +# "eigengradcam": EigenGradCAM, +# "layercam": LayerCAM, +# "fullgrad": FullGrad, +# "gradcamelementwise": GradCAMElementWise} +from models.hovernetC.net_desc import HoVerNet +class Dataset_train(Dataset): + def __init__(self, path_pos, path_neg): + super(Dataset_train, self).__init__() + self.path_pos = path_pos + self.path_neg = path_neg + self.list_pos = os.listdir(self.path_pos) + self.list_neg = os.listdir(self.path_neg) + self.list_pos.sort() + self.list_neg.sort() + self.num_pos = len(self.list_pos) + self.num_neg = len(self.list_neg) + self.sizeset = 512 + + def __getitem__(self, index): + + if index < self.num_pos: + image,image_numpy = self.read(self.path_pos, self.list_pos[index], self.sizeset) + label = torch.tensor([1, 0]) + elif index < self.num_pos + self.num_neg: + image,image_numpy = self.read(self.path_neg, self.list_neg[index - self.num_pos], self.sizeset) + label = torch.tensor([0, 1]) + + return image, label,image_numpy + + def __len__(self): + return self.num_pos + self.num_neg + + def read(self, path, name, image_size): + image_path = os.path.join(path, name) + image_numpy = io.imread(image_path)[:,:,0:3] + # img = PIL.Image.fromarray(image_numpy) + # resize = tfs.Resize((image_size, image_size)) + # img = resize(img) + # image_numpy = np.array(img) + # image_numpy = cv2.cvtColor(image_numpy, cv2.COLOR_BGR2GRAY) + tensorimage = torch.from_numpy(image_numpy).type(torch.FloatTensor).cuda() + + for i in range(tensorimage.shape[2]): + average = tensorimage[:, :, i].mean() + tensorimage[:, :, i] = (tensorimage[:, :, i] - average) / 255 + + # tensorimage = (tensorimage.unsqueeze(2) - tensorimage.mean())/255 + + + return tensorimage.permute(2, 0, 1),image_numpy +# class Dataset_test(Dataset): +# def __init__(self, path_pos, path_neg, path_gdt, path_gtv): +# super(Dataset_test, self).__init__() +# self.path_pos = path_pos +# self.path_neg = path_neg +# self.path_gdt = path_gdt +# self.path_gtv = path_gtv +# self.list_pos = os.listdir(self.path_pos) +# self.list_neg = os.listdir(self.path_neg) +# self.list_gdt = os.listdir(self.path_gdt) +# self.list_gtv = os.listdir(self.path_gtv) +# self.list_pos.sort() +# self.list_neg.sort() +# self.list_gdt.sort() +# self.list_gtv.sort() +# self.num_pos = len(self.list_pos) +# self.num_neg = len(self.list_neg) +# self.sizeset = 512 +# +# def __getitem__(self, index): +# +# if index < self.num_pos: +# image = self.read(self.path_pos, self.list_pos[index], self.sizeset, True).permute(2, 0, 1) +# label = torch.from_numpy(np.array([1,0])).type(torch.FloatTensor).cuda() +# else: +# image = self.read(self.path_neg, self.list_neg[index-self.num_pos], self.sizeset, True).permute(2, 0, 1) +# label = torch.from_numpy(np.array([0,1])).type(torch.FloatTensor).cuda() +# return image, label +# +# def __len__(self): +# return self.num_pos + self.num_neg +# +# def read(self, path, name, image_size, normalize): +# image_path = os.path.join(path, name) +# image_numpy = io.imread(image_path) +# # img = PIL.Image.fromarray(image_numpy) +# # resize = tfs.Resize((image_size, image_size)) +# # img = resize(img) +# # image_numpy = np.array(img) +# tensorimage = torch.from_numpy(image_numpy).type(torch.FloatTensor).cuda() +# if normalize == True: +# # image_numpy = cv2.cvtColor(tensorimage.to("cpu").numpy(), cv2.COLOR_BGR2GRAY) +# # tensorimage = torch.from_numpy(image_numpy).type(torch.FloatTensor).cuda() +# # tensorimage = (tensorimage.unsqueeze(2) - tensorimage.mean()) / 255 +# for i in range(tensorimage.shape[2]): +# average = tensorimage[:, :, i].mean() +# tensorimage[:, :, i] = (tensorimage[:, :, i] - average) / 255 +# +# return tensorimage +# import sys +# # sys.path.append("..") +# sys.path.append("PytorchLRP") +# from jrieke.utils import load_nifti, save_nifti +# from innvestigator import InnvestigateModel +# from settings import settings +# from jrieke import interpretation +# from nmm_mask_areas import all_areas + +# import numpy as np +# import pickle +# import jrieke.models as models +# from PytorchLRP import jrieke +# from PytorchLRP import utils +# from PytorchLRP import inverter_util + + +# from PytorchLRP.innvestigator import InnvestigateModel +def train(hvnet): + path_pos = "/data1/wyj/M/datasets/MyNP/positive/" + path_neg = "/data1/wyj/M/datasets/MyNP/negative/" + useLRP = True + print("parameters initializing......") + net = hvnet.cuda() + + # net.load_state_dict(torch.load('logs/ep003.pth', map_location='cpu')) + print(net) + if useLRP == True: + target_layers = [net.d3] + camslen=len(methods) + cams=[] + for i in range(camslen): + camname=methods[i] + cam = camname(model=net, target_layers=target_layers, use_cuda=True) + cams.append(cam) + # model_prediction, heatmap = inn_model.innvestigate(in_tensor=data) + + batch_size_set = 1 + dataset = Dataset_train(path_pos, path_neg) + dataload = DataLoader(dataset, batch_size=batch_size_set, shuffle=True, num_workers=0) + dataset_size = len(dataload.dataset) + + lr = 1e-6 + wd = 0.0005 + optimizer = torch.optim.Adam(net.parameters(), lr=lr, weight_decay=wd) + + loss_fn = F.multilabel_soft_margin_loss + num_epoch = 30 + + print('dataset size:', dataset_size) + print("batch size:", batch_size_set) + + print("{:*^50}".format("training start")) + correct=torch.zeros(1).squeeze().cuda() + total=torch.zeros(1).squeeze().cuda() + for epoch in range(6,num_epoch): + # print('Epoch {}/{}'.format(epoch + 1, num_epoch)) + # print('-' * 20) + + epoch_loss = 0 + step = 0 + + for batch in dataload: + image0, label0 ,imnumpy= batch + image = image0.cuda() + label = label0.cuda() + + pred= net(image) + if useLRP==True: + import matplotlib.pyplot as plt + for i in range(camslen): + cam=cams[i] + print(cam) + targets =[ClassifierOutputTarget(0)] + grayscale_cam = cam(input_tensor=image, targets=targets) + grayscale_cam = grayscale_cam[0, :] + oriim=image0[0,:,:,:].cpu().permute(1,2,0).numpy() + + # plt.subplot(2, 2, 1) + # plt.imshow(imnumpy[0, :, :, :]) + # plt.subplot(2, 2, 2) + # plt.imshow(grayscale_cam) + # plt.subplot(2, 2, 3) + # plt.imshow(oriim) + # plt.subplot(2, 2, 4) + # plt.imshow(grayscale_cam>0.02) + # plt.show() + scores=[0.05,0.1,0.15,0.2,0.25,0.3,0.5,0.35,0.35,0.35] + plt.subplot(5,4, i*2+1) + plt.axis('off') + plt.gca().xaxis.set_major_locator(plt.NullLocator()) + plt.gca().yaxis.set_major_locator(plt.NullLocator()) + plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0) + plt.margins(0, 0) + plt.imshow(grayscale_cam) + plt.subplot(5,4, i*2+2) + plt.axis('off') + plt.gca().xaxis.set_major_locator(plt.NullLocator()) + plt.gca().yaxis.set_major_locator(plt.NullLocator()) + plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0) + plt.margins(0, 0) + plt.imshow(grayscale_cam>scores[i]*np.max(grayscale_cam)) + plt.subplot(5,4,19) + plt.imshow(imnumpy[0, :, :, :]) + plt.subplot(5,4,20) + orii=imnumpy[0, :, :, :] + plt.imshow(orii[:,:,0]<100) + plt.show() + # print(f'{pred},, {label}') + loss = loss_fn(pred, label) + + loss.backward() + optimizer.step() + optimizer.zero_grad() + + prediction=torch.argmax(pred,1) + correct+=(prediction==torch.argmax(label)).sum().float() + total+=len(label) + + epoch_loss += loss.item() + step += 1 + # print("%d/%d,train_loss:%0.4f" % (step, math.ceil(dataset_size // dataload.batch_size), loss.item())) + epochs = epoch + 1 + + average_loss = epoch_loss / math.ceil(dataset_size // dataload.batch_size) + print("epoch %d loss:%0.4f average loss:%0.4f" % (epochs, epoch_loss, average_loss)) + print('Acc : {}'.format((correct/total).cpu().detach().data.numpy())) + torch.save(net.state_dict(), 'logs/ep%03d.pth' % (epochs)) + +if __name__ == "__main__": + device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') + # device = torch.device('cpu') + # device = torch.device("cpu") + print("device:", device) + + hvnet=HoVerNet() + train(hvnet) diff --git a/hovernetCLASS2.py b/hovernetCLASS2.py new file mode 100644 index 0000000..e120949 --- /dev/null +++ b/hovernetCLASS2.py @@ -0,0 +1,238 @@ +import torch +import torch.nn as nn +from torch.utils.data import DataLoader +from torch.utils.data import Dataset +import torchvision as tv +import torchvision.transforms as tfs +import PIL +import numpy as np +import torch.nn.functional as F +import os +import cv2 +from skimage import io,morphology,measure +import math +import matplotlib.pyplot as plt +import signal +from sklearn import metrics +import time +import cv2 +import argparse +import glob +import importlib +import inspect +import json +import os +import shutil + +import matplotlib +import numpy as np +import torch +from docopt import docopt +from tensorboardX import SummaryWriter +from torch.nn import DataParallel # TODO: switch to DistributedDataParallel +from torch.utils.data import DataLoader +from pytorch_grad_cam import GradCAM, HiResCAM, ScoreCAM, GradCAMPlusPlus, AblationCAM, XGradCAM, EigenCAM, FullGrad +from pytorch_grad_cam.utils.model_targets import ClassifierOutputTarget +from pytorch_grad_cam.utils.image import show_cam_on_image +from config import Config +from dataloader.train_loader import FileLoader +from misc.utils import rm_n_mkdir +from run_utils.engine import RunEngine + +from models.hovernet.net_desc import HoVerNet +class Dataset_train(Dataset): + def __init__(self, path_pos, path_neg): + super(Dataset_train, self).__init__() + self.path_pos = path_pos + self.path_neg = path_neg + self.list_pos = os.listdir(self.path_pos) + self.list_neg = os.listdir(self.path_neg) + self.list_pos.sort() + self.list_neg.sort() + self.num_pos = len(self.list_pos) + self.num_neg = len(self.list_neg) + self.sizeset = 512 + + def __getitem__(self, index): + + if index < self.num_pos: + image,image_numpy = self.read(self.path_pos, self.list_pos[index], self.sizeset) + label = torch.tensor([1]) + elif index < self.num_pos + self.num_neg: + image,image_numpy = self.read(self.path_neg, self.list_neg[index - self.num_pos], self.sizeset) + label = torch.tensor([0]) + + return image, label,image_numpy + + def __len__(self): + return self.num_pos + self.num_neg + + def read(self, path, name, image_size): + image_path = os.path.join(path, name) + image_numpy = io.imread(image_path)[:,:,0:3] + # img = PIL.Image.fromarray(image_numpy) + # resize = tfs.Resize((image_size, image_size)) + # img = resize(img) + # image_numpy = np.array(img) + # image_numpy = cv2.cvtColor(image_numpy, cv2.COLOR_BGR2GRAY) + tensorimage = torch.from_numpy(image_numpy).type(torch.FloatTensor).cuda() + + for i in range(tensorimage.shape[2]): + average = tensorimage[:, :, i].mean() + tensorimage[:, :, i] = (tensorimage[:, :, i] - average) / 255 + + # tensorimage = (tensorimage.unsqueeze(2) - tensorimage.mean())/255 + + + return tensorimage.permute(2, 0, 1),image_numpy +# class Dataset_test(Dataset): +# def __init__(self, path_pos, path_neg, path_gdt, path_gtv): +# super(Dataset_test, self).__init__() +# self.path_pos = path_pos +# self.path_neg = path_neg +# self.path_gdt = path_gdt +# self.path_gtv = path_gtv +# self.list_pos = os.listdir(self.path_pos) +# self.list_neg = os.listdir(self.path_neg) +# self.list_gdt = os.listdir(self.path_gdt) +# self.list_gtv = os.listdir(self.path_gtv) +# self.list_pos.sort() +# self.list_neg.sort() +# self.list_gdt.sort() +# self.list_gtv.sort() +# self.num_pos = len(self.list_pos) +# self.num_neg = len(self.list_neg) +# self.sizeset = 512 +# +# def __getitem__(self, index): +# +# if index < self.num_pos: +# image = self.read(self.path_pos, self.list_pos[index], self.sizeset, True).permute(2, 0, 1) +# label = torch.from_numpy(np.array([1,0])).type(torch.FloatTensor).cuda() +# else: +# image = self.read(self.path_neg, self.list_neg[index-self.num_pos], self.sizeset, True).permute(2, 0, 1) +# label = torch.from_numpy(np.array([0,1])).type(torch.FloatTensor).cuda() +# return image, label +# +# def __len__(self): +# return self.num_pos + self.num_neg +# +# def read(self, path, name, image_size, normalize): +# image_path = os.path.join(path, name) +# image_numpy = io.imread(image_path) +# # img = PIL.Image.fromarray(image_numpy) +# # resize = tfs.Resize((image_size, image_size)) +# # img = resize(img) +# # image_numpy = np.array(img) +# tensorimage = torch.from_numpy(image_numpy).type(torch.FloatTensor).cuda() +# if normalize == True: +# # image_numpy = cv2.cvtColor(tensorimage.to("cpu").numpy(), cv2.COLOR_BGR2GRAY) +# # tensorimage = torch.from_numpy(image_numpy).type(torch.FloatTensor).cuda() +# # tensorimage = (tensorimage.unsqueeze(2) - tensorimage.mean()) / 255 +# for i in range(tensorimage.shape[2]): +# average = tensorimage[:, :, i].mean() +# tensorimage[:, :, i] = (tensorimage[:, :, i] - average) / 255 +# +# return tensorimage +# import sys +# # sys.path.append("..") +# sys.path.append("PytorchLRP") +# from jrieke.utils import load_nifti, save_nifti +# from innvestigator import InnvestigateModel +# from settings import settings +# from jrieke import interpretation +# from nmm_mask_areas import all_areas + +# import numpy as np +# import pickle +# import jrieke.models as models +# from PytorchLRP import jrieke +# from PytorchLRP import utils +# from PytorchLRP import inverter_util + + +# from PytorchLRP.innvestigator import InnvestigateModel +def train(hvnet): + path_pos = "/data1/wyj/M/datasets/MyNP/positive/" + path_neg = "/data1/wyj/M/datasets/MyNP/negative/" + useLRP = False + print("parameters initializing......") + net = hvnet.cuda() + + # net.load_state_dict(torch.load('logs/newep001.pth', map_location='cpu')) + print(net) + if useLRP == True: + target_layers = [net.d3] + cam = GradCAM(model=net, target_layers=target_layers, use_cuda=True) + # model_prediction, heatmap = inn_model.innvestigate(in_tensor=data) + + batch_size_set = 1 + dataset = Dataset_train(path_pos, path_neg) + dataload = DataLoader(dataset, batch_size=batch_size_set, shuffle=True, num_workers=0) + dataset_size = len(dataload.dataset) + + lr = 1e-6 + wd = 0.0005 + optimizer = torch.optim.Adam(net.parameters(), lr=lr, weight_decay=wd) + + loss_fn = F.multilabel_soft_margin_loss + num_epoch = 30 + + print('dataset size:', dataset_size) + print("batch size:", batch_size_set) + + print("{:*^50}".format("training start")) + for epoch in range(0,num_epoch): + # print('Epoch {}/{}'.format(epoch + 1, num_epoch)) + # print('-' * 20) + + epoch_loss = 0 + step = 0 + + for batch in dataload: + image0, label0 ,imnumpy= batch + image = image0.cuda() + label = label0.cuda() + + pred= net(image) + if useLRP==True: + import matplotlib.pyplot as plt + targets = None + grayscale_cam = cam(input_tensor=image, targets=targets) + grayscale_cam = grayscale_cam[0, :] + oriim=image0[0,:,:,:].cpu().permute(1,2,0).numpy() + + + + plt.subplot(2, 2, 1) + plt.imshow(imnumpy[0, :, :, :]) + plt.subplot(2, 2, 2) + plt.imshow(grayscale_cam) + plt.subplot(2, 2, 3) + plt.imshow(oriim) + plt.subplot(2, 2, 4) + plt.imshow(grayscale_cam>0.01) + plt.show() + # print(f'{pred},, {label}') + loss = loss_fn(pred, label) + + loss.backward() + optimizer.step() + optimizer.zero_grad() + + epoch_loss += loss.item() + step += 1 + # print("%d/%d,train_loss:%0.4f" % (step, math.ceil(dataset_size // dataload.batch_size), loss.item())) + epochs = epoch + 1 + average_loss = epoch_loss / math.ceil(dataset_size // dataload.batch_size) + print("epoch %d loss:%0.4f average loss:%0.4f" % (epochs, epoch_loss, average_loss)) + torch.save(net.state_dict(), 'logs/newep%03d.pth' % (epochs)) + +if __name__ == "__main__": + device = torch.device('cuda:1' if torch.cuda.is_available() else 'cpu') + # device = torch.device('cpu') + # device = torch.device("cpu") + print("device:", device) + + hvnet=HoVerNet() + train(hvnet) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b6873cd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,16 @@ +docopt==0.6.2 +future==0.18.2 +imgaug==0.4.0 +matplotlib==3.3.0 +numpy==1.19.1 +opencv-python==4.3.0.36 +pandas==1.1.0 +pillow==7.2.0 +psutil==5.7.3 +scikit-image==0.17.2 +scikit-learn==0.23.1 +scipy==1.5.2 +tensorboard==2.3.0 +tensorboardx==2.1 +termcolor==1.1.0 +tqdm==4.48.0 diff --git a/run_infer.py b/run_infer.py new file mode 100644 index 0000000..193d183 --- /dev/null +++ b/run_infer.py @@ -0,0 +1,186 @@ +"""run_infer.py + +Usage: + run_infer.py [options] [--help] [...] + run_infer.py --version + run_infer.py (-h | --help) + +Options: + -h --help Show this string. + --version Show version. + + --gpu= GPU list. [default: 0] + --nr_types= Number of nuclei types to predict. [default: 0] + --type_info_path= Path to a json define mapping between type id, type name, + and expected overlaid color. [default: ''] + + --model_path= Path to saved checkpoint. + --model_mode= Original HoVer-Net or the reduced version used PanNuke and MoNuSAC, + 'original' or 'fast'. [default: fast] + --nr_inference_workers= Number of workers during inference. [default: 8] + --nr_post_proc_workers= Number of workers during post-processing. [default: 16] + --batch_size= Batch size per 1 GPU. [default: 32] + +Two command mode are `tile` and `wsi` to enter corresponding inference mode + tile run the inference on tile + wsi run the inference on wsi + +Use `run_infer.py --help` to show their options and usage. +""" + +tile_cli = """ +Arguments for processing tiles. + +usage: + tile (--input_dir=) (--output_dir=) \ + [--draw_dot] [--save_qupath] [--save_raw_map] [--mem_usage=] + +options: + --input_dir= Path to input data directory. Assumes the files are not nested within directory. + --output_dir= Path to output directory.. + + --mem_usage= Declare how much memory (physical + swap) should be used for caching. + By default it will load as many tiles as possible till reaching the + declared limit. [default: 0.2] + --draw_dot To draw nuclei centroid on overlay. [default: False] + --save_qupath To optionally output QuPath v0.2.3 compatible format. [default: False] + --save_raw_map To save raw prediction or not. [default: False] +""" + +wsi_cli = """ +Arguments for processing wsi + +usage: + wsi (--input_dir=) (--output_dir=) [--proc_mag=]\ + [--cache_path=] [--input_mask_dir=] \ + [--ambiguous_size=] [--chunk_shape=] [--tile_shape=] \ + [--save_thumb] [--save_mask] + +options: + --input_dir= Path to input data directory. Assumes the files are not nested within directory. + --output_dir= Path to output directory. + --cache_path= Path for cache. Should be placed on SSD with at least 100GB. [default: cache] + --mask_dir= Path to directory containing tissue masks. + Should have the same name as corresponding WSIs. [default: ''] + + --proc_mag= Magnification level (objective power) used for WSI processing. [default: 40] + --ambiguous_size= Define ambiguous region along tiling grid to perform re-post processing. [default: 128] + --chunk_shape= Shape of chunk for processing. [default: 10000] + --tile_shape= Shape of tiles for processing. [default: 2048] + --save_thumb To save thumb. [default: False] + --save_mask To save mask. [default: False] +""" + +import torch +import logging +import os +import copy +from misc.utils import log_info +from docopt import docopt + +#------------------------------------------------------------------------------------------------------- + +if __name__ == '__main__': + sub_cli_dict = {'tile' : tile_cli, 'wsi' : wsi_cli} + args = docopt(__doc__, help=False, options_first=True, + version='HoVer-Net Pytorch Inference v1.0') + sub_cmd = args.pop('') + sub_cmd_args = args.pop('') + + # ! TODO: where to save logging + logging.basicConfig( + level=logging.INFO, + format='|%(asctime)s.%(msecs)03d| [%(levelname)s] %(message)s',datefmt='%Y-%m-%d|%H:%M:%S', + handlers=[ + logging.FileHandler("debug.log"), + logging.StreamHandler() + ] + ) + + if args['--help'] and sub_cmd is not None: + if sub_cmd in sub_cli_dict: + print(sub_cli_dict[sub_cmd]) + else: + print(__doc__) + exit() + if args['--help'] or sub_cmd is None: + print(__doc__) + exit() + + sub_args = docopt(sub_cli_dict[sub_cmd], argv=sub_cmd_args, help=True) + + args.pop('--version') + gpu_list = args.pop('--gpu') + os.environ['CUDA_VISIBLE_DEVICES'] = gpu_list + + nr_gpus = torch.cuda.device_count() + log_info('Detect #GPUS: %d' % nr_gpus) + + args = {k.replace('--', '') : v for k, v in args.items()} + sub_args = {k.replace('--', '') : v for k, v in sub_args.items()} + if args['model_path'] == None: + raise Exception('A model path must be supplied as an argument with --model_path.') + + nr_types = int(args['nr_types']) if int(args['nr_types']) > 0 else None + method_args = { + 'method' : { + 'model_args' : { + 'nr_types' : nr_types, + 'mode' : args['model_mode'], + }, + 'model_path' : args['model_path'], + }, + 'type_info_path' : None if args['type_info_path'] == '' \ + else args['type_info_path'], + } + + # *** + run_args = { + 'batch_size' : int(args['batch_size']) * nr_gpus, + + 'nr_inference_workers' : int(args['nr_inference_workers']), + 'nr_post_proc_workers' : int(args['nr_post_proc_workers']), + } + + if args['model_mode'] == 'fast': + run_args['patch_input_shape'] = 256 + run_args['patch_output_shape'] = 164 + else: + run_args['patch_input_shape'] = 270 + run_args['patch_output_shape'] = 80 + + if sub_cmd == 'tile': + run_args.update({ + 'input_dir' : sub_args['input_dir'], + 'output_dir' : sub_args['output_dir'], + + 'mem_usage' : float(sub_args['mem_usage']), + 'draw_dot' : sub_args['draw_dot'], + 'save_qupath' : sub_args['save_qupath'], + 'save_raw_map': sub_args['save_raw_map'], + }) + + if sub_cmd == 'wsi': + run_args.update({ + 'input_dir' : sub_args['input_dir'], + 'output_dir' : sub_args['output_dir'], + 'input_mask_dir' : sub_args['input_mask_dir'], + 'cache_path' : sub_args['cache_path'], + + 'proc_mag' : int(sub_args['proc_mag']), + 'ambiguous_size' : int(sub_args['ambiguous_size']), + 'chunk_shape' : int(sub_args['chunk_shape']), + 'tile_shape' : int(sub_args['tile_shape']), + 'save_thumb' : sub_args['save_thumb'], + 'save_mask' : sub_args['save_mask'], + }) + # *** + + if sub_cmd == 'tile': + from infer.tile import InferManager + infer = InferManager(**method_args) + infer.process_file_list(run_args) + else: + from infer.wsi import InferManager + infer = InferManager(**method_args) + infer.process_wsi_list(run_args) diff --git a/run_tile.sh b/run_tile.sh new file mode 100644 index 0000000..2f7800b --- /dev/null +++ b/run_tile.sh @@ -0,0 +1,31 @@ +python run_infer.py \ +--gpu='1' \ +--nr_types=6 \ +--type_info_path=type_info.json \ +--batch_size=64 \ +--model_mode=fast \ +--model_path=../pretrained/hovernet_fast_pannuke_type_tf2pytorch.tar \ +--nr_inference_workers=8 \ +--nr_post_proc_workers=16 \ +tile \ +--input_dir=dataset/sample_tiles/imgs/ \ +--output_dir=dataset/sample_tiles/pred/ \ +--mem_usage=0.1 \ +--draw_dot \ +--save_qupath + +python run_infer.py --gpu='0,1' --nr_types=5 --model_mode=fast --model_path=hovernet_fast_monusac_type_tf2pytorch.tar --type_info_path=type_info.json +tile --input_dir=/data1/wyj/M/datasets/MoNuSAC/masks-new/ --output_dir=./outputtest/ +--mem_usage=0.1 +--draw_dot +--save_qupath + +--gpu=0,1 --nr_types=5 --batch_size=2 --model_mode=fast --model_path=hovernet_fast_monusac_type_tf2pytorch.tar --type_info_path=type_info.json tile --input_dir=/data1/wyj/M/datasets/MoNuSACCROP/images/ --output_dir=./outputtest/ --mem_usage=0.1 --draw_dot --save_qupath +python run_infer.py --gpu=0,1 --nr_types=5 --model_mode=fast --model_path=hovernet_fast_monusac_type_tf2pytorch.tar --type_info_path=type_info.json +tile --input_dir=/data1/wyj/M/datasets/MoNuSAC/masks-new/ --output_dir=./outputtest/ +--mem_usage=0.1 +--draw_dot +--save_qupath +--gpu=0,1 --nr_types=3 --batch_size=2 --model_mode=fast --model_path=/data1/wyj/M/samples/PRM/hover_net-master/logs/01/net_epoch=50.tar --type_info_path=type_info.json tile +--input_dir=/data1/wyj/M/datasets/MoNuSACCROP/images/ --output_dir=./outputtest/ --mem_usage=0.1 --draw_dot --save_qupath --save_raw_map +--gpu=0,1 --view=train \ No newline at end of file diff --git a/run_train.py b/run_train.py new file mode 100644 index 0000000..ae02b79 --- /dev/null +++ b/run_train.py @@ -0,0 +1,305 @@ +"""run_train.py + +Main HoVer-Net training script. + +Usage: + run_train.py [--gpu=] [--view=] + run_train.py (-h | --help) + run_train.py --version + +Options: + -h --help Show this string. + --version Show version. + --gpu= Comma separated GPU list. [default: 0,1,2,3] + --view= Visualise images after augmentation. Choose 'train' or 'valid'. +""" + +import cv2 + +cv2.setNumThreads(0) +import argparse +import glob +import importlib +import inspect +import json +import os +import shutil + +import matplotlib +import numpy as np +import torch +from docopt import docopt +from tensorboardX import SummaryWriter +from torch.nn import DataParallel # TODO: switch to DistributedDataParallel +from torch.utils.data import DataLoader + +from config import Config +from dataloader.train_loader import FileLoader +from misc.utils import rm_n_mkdir +from run_utils.engine import RunEngine +from run_utils.utils import ( + check_log_dir, + check_manual_seed, + colored, + convert_pytorch_checkpoint, +) + + +#### have to move outside because of spawn +# * must initialize augmentor per worker, else duplicated rng generators may happen +def worker_init_fn(worker_id): + # ! to make the seed chain reproducible, must use the torch random, not numpy + # the torch rng from main thread will regenerate a base seed, which is then + # copied into the dataloader each time it created (i.e start of each epoch) + # then dataloader with this seed will spawn worker, now we reseed the worker + worker_info = torch.utils.data.get_worker_info() + # to make it more random, simply switch torch.randint to np.randint + worker_seed = torch.randint(0, 2 ** 32, (1,))[0].cpu().item() + worker_id + # print('Loader Worker %d Uses RNG Seed: %d' % (worker_id, worker_seed)) + # retrieve the dataset copied into this worker process + # then set the random seed for each augmentation + worker_info.dataset.setup_augmentor(worker_id, worker_seed) + return + + +#### +class TrainManager(Config): + """Either used to view the dataset or to initialise the main training loop.""" + + def __init__(self): + super().__init__() + return + + #### + def view_dataset(self, mode="train"): + """ + Manually change to plt.savefig or plt.show + if using on headless machine or not + """ + self.nr_gpus = 1 + import matplotlib.pyplot as plt + check_manual_seed(self.seed) + # TODO: what if each phase want diff annotation ? + phase_list = self.model_config["phase_list"][0] + target_info = phase_list["target_info"] + prep_func, prep_kwargs = target_info["viz"] + dataloader = self._get_datagen(2, mode, target_info["gen"]) + for batch_data in dataloader: + # convert from Tensor to Numpy + batch_data = {k: v.numpy() for k, v in batch_data.items()} + viz = prep_func(batch_data, is_batch=True, **prep_kwargs) + plt.imshow(viz) + plt.show() + self.nr_gpus = -1 + return + + #### + def _get_datagen(self, batch_size, run_mode, target_gen, nr_procs=0, fold_idx=0): + nr_procs = nr_procs if not self.debug else 0 + + # ! Hard assumption on file type + file_list = [] + if run_mode == "train": + data_dir_list = self.train_dir_list + else: + data_dir_list = self.valid_dir_list + for dir_path in data_dir_list: + file_list.extend(glob.glob("%s/*.npy" % dir_path)) + file_list.sort() # to always ensure same input ordering + + assert len(file_list) > 0, ( + "No .npy found for `%s`, please check `%s` in `config.py`" + % (run_mode, "%s_dir_list" % run_mode) + ) + print("Dataset %s: %d" % (run_mode, len(file_list))) + input_dataset = FileLoader( + file_list, + mode=run_mode, + with_type=self.type_classification, + setup_augmentor=nr_procs == 0, + target_gen=target_gen, + **self.shape_info[run_mode] + ) + + dataloader = DataLoader( + input_dataset, + num_workers=nr_procs, + batch_size=batch_size * self.nr_gpus, + shuffle=run_mode == "train", + drop_last=run_mode == "train", + worker_init_fn=worker_init_fn, + ) + return dataloader + + #### + def run_once(self, opt, run_engine_opt, log_dir, prev_log_dir=None, fold_idx=0): + """Simply run the defined run_step of the related method once.""" + check_manual_seed(self.seed) + + log_info = {} + if self.logging: + # check_log_dir(log_dir) + rm_n_mkdir(log_dir) + + tfwriter = SummaryWriter(log_dir=log_dir) + json_log_file = log_dir + "/stats.json" + with open(json_log_file, "w") as json_file: + json.dump({}, json_file) # create empty file + log_info = { + "json_file": json_log_file, + "tfwriter": tfwriter, + } + + #### + loader_dict = {} + for runner_name, runner_opt in run_engine_opt.items(): + loader_dict[runner_name] = self._get_datagen( + opt["batch_size"][runner_name], + runner_name, + opt["target_info"]["gen"], + nr_procs=runner_opt["nr_procs"], + fold_idx=fold_idx, + ) + #### + def get_last_chkpt_path(prev_phase_dir, net_name): + stat_file_path = prev_phase_dir + "/stats.json" + with open(stat_file_path) as stat_file: + info = json.load(stat_file) + epoch_list = [int(v) for v in info.keys()] + last_chkpts_path = "%s/%s_epoch=%d.tar" % ( + prev_phase_dir, + net_name, + max(epoch_list), + ) + return last_chkpts_path + + # TODO: adding way to load pretrained weight or resume the training + # parsing the network and optimizer information + net_run_info = {} + net_info_opt = opt["run_info"] + for net_name, net_info in net_info_opt.items(): + assert inspect.isclass(net_info["desc"]) or inspect.isfunction( + net_info["desc"] + ), "`desc` must be a Class or Function which instantiate NEW objects !!!" + net_desc = net_info["desc"]() + + # TODO: customize print-out for each run ? + # summary_string(net_desc, (3, 270, 270), device='cpu') + + pretrained_path = net_info["pretrained"] + if pretrained_path is not None: + if pretrained_path == -1: + # * depend on logging format so may be broken if logging format has been changed + pretrained_path = get_last_chkpt_path(prev_log_dir, net_name) + net_state_dict = torch.load(pretrained_path)["desc"] + else: + chkpt_ext = os.path.basename(pretrained_path).split(".")[-1] + if chkpt_ext == "npz": + net_state_dict = dict(np.load(pretrained_path)) + net_state_dict = { + k: torch.from_numpy(v) for k, v in net_state_dict.items() + } + elif chkpt_ext == "tar": # ! assume same saving format we desire + net_state_dict = torch.load(pretrained_path)["desc"] + + colored_word = colored(net_name, color="red", attrs=["bold"]) + print( + "Model `%s` pretrained path: %s" % (colored_word, pretrained_path) + ) + + # load_state_dict returns (missing keys, unexpected keys) + net_state_dict = convert_pytorch_checkpoint(net_state_dict) + load_feedback = net_desc.load_state_dict(net_state_dict, strict=False) + # * uncomment for your convenience + print("Missing Variables: \n", load_feedback[0]) + print("Detected Unknown Variables: \n", load_feedback[1]) + + # * extremely slow to pass this on DGX with 1 GPU, why (?) + net_desc = DataParallel(net_desc) + net_desc = net_desc.to("cuda") + # print(net_desc) # * dump network definition or not? + optimizer, optimizer_args = net_info["optimizer"] + optimizer = optimizer(net_desc.parameters(), **optimizer_args) + # TODO: expand for external aug for scheduler + nr_iter = opt["nr_epochs"] * len(loader_dict["train"]) + scheduler = net_info["lr_scheduler"](optimizer) + net_run_info[net_name] = { + "desc": net_desc, + "optimizer": optimizer, + "lr_scheduler": scheduler, + # TODO: standardize API for external hooks + "extra_info": net_info["extra_info"], + } + + # parsing the running engine configuration + assert ( + "train" in run_engine_opt + ), "No engine for training detected in description file" + + # initialize runner and attach callback afterward + # * all engine shared the same network info declaration + runner_dict = {} + for runner_name, runner_opt in run_engine_opt.items(): + runner_dict[runner_name] = RunEngine( + dataloader=loader_dict[runner_name], + engine_name=runner_name, + run_step=runner_opt["run_step"], + run_info=net_run_info, + log_info=log_info, + ) + + for runner_name, runner in runner_dict.items(): + callback_info = run_engine_opt[runner_name]["callbacks"] + for event, callback_list, in callback_info.items(): + for callback in callback_list: + if callback.engine_trigger: + triggered_runner_name = callback.triggered_engine_name + callback.triggered_engine = runner_dict[triggered_runner_name] + runner.add_event_handler(event, callback) + + # retrieve main runner + main_runner = runner_dict["train"] + main_runner.state.logging = self.logging + main_runner.state.log_dir = log_dir + # start the run loop + main_runner.run(opt["nr_epochs"]) + + print("\n") + print("########################################################") + print("########################################################") + print("\n") + return + + #### + def run(self): + """Define multi-stage run or cross-validation or whatever in here.""" + self.nr_gpus = torch.cuda.device_count() + print('Detect #GPUS: %d' % self.nr_gpus) + + phase_list = self.model_config["phase_list"] + engine_opt = self.model_config["run_engine"] + + prev_save_path = None + for phase_idx, phase_info in enumerate(phase_list): + if len(phase_list) == 1: + save_path = self.log_dir + else: + save_path = self.log_dir + "/%02d/" % (phase_idx) + self.run_once( + phase_info, engine_opt, save_path, prev_log_dir=prev_save_path + ) + prev_save_path = save_path + + +#### +if __name__ == "__main__": + args = docopt(__doc__, version="HoVer-Net v1.0"). + trainer = TrainManager() + + if args["--view"]: + if args["--view"] != "train" and args["--view"] != "valid": + raise Exception('Use "train" or "valid" for --view.') + trainer.view_dataset(args["--view"]) + else: + os.environ["CUDA_VISIBLE_DEVICES"] = args["--gpu"] + trainer.run() \ No newline at end of file diff --git a/run_train_classify.py b/run_train_classify.py new file mode 100644 index 0000000..d92ed84 --- /dev/null +++ b/run_train_classify.py @@ -0,0 +1,304 @@ +"""run_train.py + +Main HoVer-Net training script. + +Usage: + run_train.py [--gpu=] [--view=] + run_train.py (-h | --help) + run_train.py --version + +Options: + -h --help Show this string. + --version Show version. + --gpu= Comma separated GPU list. [default: 0,1,2,3] + --view= Visualise images after augmentation. Choose 'train' or 'valid'. +""" + +import cv2 + +cv2.setNumThreads(0) +import argparse +import glob +import importlib +import inspect +import json +import os +import shutil + +import matplotlib +import numpy as np +import torch +from docopt import docopt +from tensorboardX import SummaryWriter +from torch.nn import DataParallel # TODO: switch to DistributedDataParallel +from torch.utils.data import DataLoader + +from config import Config +from dataloader.train_loader import FileLoader +from misc.utils import rm_n_mkdir +from run_utils.engine import RunEngine +from run_utils.utils import ( + check_log_dir, + check_manual_seed, + colored, + convert_pytorch_checkpoint, +) + + +#### have to move outside because of spawn +# * must initialize augmentor per worker, else duplicated rng generators may happen +def worker_init_fn(worker_id): + # ! to make the seed chain reproducible, must use the torch random, not numpy + # the torch rng from main thread will regenerate a base seed, which is then + # copied into the dataloader each time it created (i.e start of each epoch) + # then dataloader with this seed will spawn worker, now we reseed the worker + worker_info = torch.utils.data.get_worker_info() + # to make it more random, simply switch torch.randint to np.randint + worker_seed = torch.randint(0, 2 ** 32, (1,))[0].cpu().item() + worker_id + # print('Loader Worker %d Uses RNG Seed: %d' % (worker_id, worker_seed)) + # retrieve the dataset copied into this worker process + # then set the random seed for each augmentation + worker_info.dataset.setup_augmentor(worker_id, worker_seed) + return + + +#### +class TrainManager(Config): + """Either used to view the dataset or to initialise the main training loop.""" + + def __init__(self): + super().__init__() + return + + #### + def view_dataset(self, mode="train"): + """ + Manually change to plt.savefig or plt.show + if using on headless machine or not + """ + self.nr_gpus = 1 + import matplotlib.pyplot as plt + check_manual_seed(self.seed) + # TODO: what if each phase want diff annotation ? + phase_list = self.model_config["phase_list"][0] + target_info = phase_list["target_info"] + prep_func, prep_kwargs = target_info["viz"] + dataloader = self._get_datagen(2, mode, target_info["gen"]) + for batch_data in dataloader: + # convert from Tensor to Numpy + batch_data = {k: v.numpy() for k, v in batch_data.items()} + viz = prep_func(batch_data, is_batch=True, **prep_kwargs) + plt.imshow(viz) + plt.show() + self.nr_gpus = -1 + return + + #### + def _get_datagen(self, batch_size, run_mode, target_gen, nr_procs=0, fold_idx=0): + nr_procs = nr_procs if not self.debug else 0 + + # ! Hard assumption on file type + file_list = [] + if run_mode == "train": + data_dir_list = self.train_dir_list + else: + data_dir_list = self.valid_dir_list + for dir_path in data_dir_list: + file_list.extend(glob.glob("%s/*.npy" % dir_path)) + file_list.sort() # to always ensure same input ordering + + assert len(file_list) > 0, ( + "No .npy found for `%s`, please check `%s` in `config.py`" + % (run_mode, "%s_dir_list" % run_mode) + ) + print("Dataset %s: %d" % (run_mode, len(file_list))) + input_dataset = FileLoader( + file_list, + mode=run_mode, + with_type=self.type_classification, + setup_augmentor=nr_procs == 0, + target_gen=target_gen, + **self.shape_info[run_mode] + ) + + dataloader = DataLoader( + input_dataset, + num_workers=nr_procs, + batch_size=batch_size * self.nr_gpus, + shuffle=run_mode == "train", + drop_last=run_mode == "train", + worker_init_fn=worker_init_fn, + ) + return dataloader + + #### + def run_once(self, opt, run_engine_opt, log_dir, prev_log_dir=None, fold_idx=0): + """Simply run the defined run_step of the related method once.""" + check_manual_seed(self.seed) + + log_info = {} + if self.logging: + # check_log_dir(log_dir) + rm_n_mkdir(log_dir) + + tfwriter = SummaryWriter(log_dir=log_dir) + json_log_file = log_dir + "/stats.json" + with open(json_log_file, "w") as json_file: + json.dump({}, json_file) # create empty file + log_info = { + "json_file": json_log_file, + "tfwriter": tfwriter, + } + + #### + loader_dict = {} + for runner_name, runner_opt in run_engine_opt.items(): + loader_dict[runner_name] = self._get_datagen( + opt["batch_size"][runner_name], + runner_name, + opt["target_info"]["gen"], + nr_procs=runner_opt["nr_procs"], + fold_idx=fold_idx, + ) + #### + def get_last_chkpt_path(prev_phase_dir, net_name): + stat_file_path = prev_phase_dir + "/stats.json" + with open(stat_file_path) as stat_file: + info = json.load(stat_file) + epoch_list = [int(v) for v in info.keys()] + last_chkpts_path = "%s/%s_epoch=%d.tar" % ( + prev_phase_dir, + net_name, + max(epoch_list), + ) + return last_chkpts_path + + # TODO: adding way to load pretrained weight or resume the training + # parsing the network and optimizer information + net_run_info = {} + net_info_opt = opt["run_info"] + for net_name, net_info in net_info_opt.items(): + assert inspect.isclass(net_info["desc"]) or inspect.isfunction( + net_info["desc"] + ), "`desc` must be a Class or Function which instantiate NEW objects !!!" + net_desc = net_info["desc"]() + # TODO: customize print-out for each run ? + # summary_string(net_desc, (3, 270, 270), device='cpu') + + pretrained_path = net_info["pretrained"] + if pretrained_path is not None: + if pretrained_path == -1: + # * depend on logging format so may be broken if logging format has been changed + pretrained_path = get_last_chkpt_path(prev_log_dir, net_name) + net_state_dict = torch.load(pretrained_path)["desc"] + else: + chkpt_ext = os.path.basename(pretrained_path).split(".")[-1] + if chkpt_ext == "npz": + net_state_dict = dict(np.load(pretrained_path)) + net_state_dict = { + k: torch.from_numpy(v) for k, v in net_state_dict.items() + } + elif chkpt_ext == "tar": # ! assume same saving format we desire + net_state_dict = torch.load(pretrained_path)["desc"] + + colored_word = colored(net_name, color="red", attrs=["bold"]) + print( + "Model `%s` pretrained path: %s" % (colored_word, pretrained_path) + ) + + # load_state_dict returns (missing keys, unexpected keys) + net_state_dict = convert_pytorch_checkpoint(net_state_dict) + load_feedback = net_desc.load_state_dict(net_state_dict, strict=False) + # * uncomment for your convenience + print("Missing Variables: \n", load_feedback[0]) + print("Detected Unknown Variables: \n", load_feedback[1]) + + # * extremely slow to pass this on DGX with 1 GPU, why (?) + net_desc = DataParallel(net_desc) + net_desc = net_desc.to("cuda") + print(net_desc) # * dump network definition or not? + optimizer, optimizer_args = net_info["optimizer"] + optimizer = optimizer(net_desc.parameters(), **optimizer_args) + # TODO: expand for external aug for scheduler + nr_iter = opt["nr_epochs"] * len(loader_dict["train"]) + scheduler = net_info["lr_scheduler"](optimizer) + net_run_info[net_name] = { + "desc": net_desc, + "optimizer": optimizer, + "lr_scheduler": scheduler, + # TODO: standardize API for external hooks + "extra_info": net_info["extra_info"], + } + + # parsing the running engine configuration + assert ( + "train" in run_engine_opt + ), "No engine for training detected in description file" + + # initialize runner and attach callback afterward + # * all engine shared the same network info declaration + runner_dict = {} + for runner_name, runner_opt in run_engine_opt.items(): + runner_dict[runner_name] = RunEngine( + dataloader=loader_dict[runner_name], + engine_name=runner_name, + run_step=runner_opt["run_step"], + run_info=net_run_info, + log_info=log_info, + ) + + for runner_name, runner in runner_dict.items(): + callback_info = run_engine_opt[runner_name]["callbacks"] + for event, callback_list, in callback_info.items(): + for callback in callback_list: + if callback.engine_trigger: + triggered_runner_name = callback.triggered_engine_name + callback.triggered_engine = runner_dict[triggered_runner_name] + runner.add_event_handler(event, callback) + + # retrieve main runner + main_runner = runner_dict["train"] + main_runner.state.logging = self.logging + main_runner.state.log_dir = log_dir + # start the run loop + main_runner.run(opt["nr_epochs"]) + + print("\n") + print("########################################################") + print("########################################################") + print("\n") + return + + #### + def run(self): + """Define multi-stage run or cross-validation or whatever in here.""" + self.nr_gpus = torch.cuda.device_count() + print('Detect #GPUS: %d' % self.nr_gpus) + + phase_list = self.model_config["phase_list"] + engine_opt = self.model_config["run_engine"] + + prev_save_path = None + for phase_idx, phase_info in enumerate(phase_list): + if len(phase_list) == 1: + save_path = self.log_dir + else: + save_path = self.log_dir + "/%02d/" % (phase_idx) + self.run_once( + phase_info, engine_opt, save_path, prev_log_dir=prev_save_path + ) + prev_save_path = save_path + + +#### +if __name__ == "__main__": + args = docopt(__doc__, version="HoVer-Net v1.0") + trainer = TrainManager() + + if args["--view"]: + if args["--view"] != "train" and args["--view"] != "valid": + raise Exception('Use "train" or "valid" for --view.') + trainer.view_dataset(args["--view"]) + else: + os.environ["CUDA_VISIBLE_DEVICES"] = args["--gpu"] + trainer.run() diff --git a/run_wsi.sh b/run_wsi.sh new file mode 100644 index 0000000..766421c --- /dev/null +++ b/run_wsi.sh @@ -0,0 +1,15 @@ +python run_infer.py \ +--gpu='0,1' \ +--nr_types=6 \ +--type_info_path=type_info.json \ +--batch_size=64 \ +--model_mode=fast \ +--model_path=../pretrained/hovernet_fast_pannuke_type_tf2pytorch.tar \ +--nr_inference_workers=8 \ +--nr_post_proc_workers=16 \ +wsi \ +--input_dir=dataset/sample_wsis/wsi/ \ +--output_dir=dataset/sample_wsis/out/ \ +--input_mask_dir=dataset/sample_wsis/msk/ \ +--save_thumb \ +--save_mask diff --git a/type_info.json b/type_info.json new file mode 100644 index 0000000..8f9435a --- /dev/null +++ b/type_info.json @@ -0,0 +1,8 @@ +{ + "0" : ["nolabe", [0 , 0, 0]], + "1" : ["neopla", [255, 0, 0]], + "2" : ["inflam", [0 , 255, 0]], + "3" : ["connec", [0 , 0, 255]], + "4" : ["necros", [255, 255, 0]], + "5" : ["no-neo", [255, 165, 0]] +} \ No newline at end of file diff --git a/variables_tf2pytorch.csv b/variables_tf2pytorch.csv new file mode 100644 index 0000000..c2abe06 --- /dev/null +++ b/variables_tf2pytorch.csv @@ -0,0 +1,668 @@ +Pytorch,Tensorflow +conv0./.weight,conv0/W:0 +conv0.bn.weight,conv0/bn/gamma:0 +conv0.bn.bias,conv0/bn/beta:0 +conv0.bn.running_mean,conv0/bn/mean/EMA:0 +conv0.bn.running_var,conv0/bn/variance/EMA:0 +d0.units.0.conv1.weight,group0/block0/conv1/W:0 +d0.units.0.conv1/bn.weight,group0/block0/conv1/bn/gamma:0 +d0.units.0.conv1/bn.bias,group0/block0/conv1/bn/beta:0 +d0.units.0.conv1/bn.running_mean,group0/block0/conv1/bn/mean/EMA:0 +d0.units.0.conv1/bn.running_var,group0/block0/conv1/bn/variance/EMA:0 +d0.units.0.conv2.weight,group0/block0/conv2/W:0 +d0.units.0.conv2/bn.weight,group0/block0/conv2/bn/gamma:0 +d0.units.0.conv2/bn.bias,group0/block0/conv2/bn/beta:0 +d0.units.0.conv2/bn.running_mean,group0/block0/conv2/bn/mean/EMA:0 +d0.units.0.conv2/bn.running_var,group0/block0/conv2/bn/variance/EMA:0 +d0.units.0.conv3.weight,group0/block0/conv3/W:0 +d0.units.1.preact/bn.weight,group0/block1/preact/bn/gamma:0 +d0.units.1.preact/bn.bias,group0/block1/preact/bn/beta:0 +d0.units.1.preact/bn.running_mean,group0/block1/preact/bn/mean/EMA:0 +d0.units.1.preact/bn.running_var,group0/block1/preact/bn/variance/EMA:0 +d0.units.1.conv1.weight,group0/block1/conv1/W:0 +d0.units.1.conv1/bn.weight,group0/block1/conv1/bn/gamma:0 +d0.units.1.conv1/bn.bias,group0/block1/conv1/bn/beta:0 +d0.units.1.conv1/bn.running_mean,group0/block1/conv1/bn/mean/EMA:0 +d0.units.1.conv1/bn.running_var,group0/block1/conv1/bn/variance/EMA:0 +d0.units.1.conv2.weight,group0/block1/conv2/W:0 +d0.units.1.conv2/bn.weight,group0/block1/conv2/bn/gamma:0 +d0.units.1.conv2/bn.bias,group0/block1/conv2/bn/beta:0 +d0.units.1.conv2/bn.running_mean,group0/block1/conv2/bn/mean/EMA:0 +d0.units.1.conv2/bn.running_var,group0/block1/conv2/bn/variance/EMA:0 +d0.units.1.conv3.weight,group0/block1/conv3/W:0 +d0.units.2.preact/bn.weight,group0/block2/preact/bn/gamma:0 +d0.units.2.preact/bn.bias,group0/block2/preact/bn/beta:0 +d0.units.2.preact/bn.running_mean,group0/block2/preact/bn/mean/EMA:0 +d0.units.2.preact/bn.running_var,group0/block2/preact/bn/variance/EMA:0 +d0.units.2.conv1.weight,group0/block2/conv1/W:0 +d0.units.2.conv1/bn.weight,group0/block2/conv1/bn/gamma:0 +d0.units.2.conv1/bn.bias,group0/block2/conv1/bn/beta:0 +d0.units.2.conv1/bn.running_mean,group0/block2/conv1/bn/mean/EMA:0 +d0.units.2.conv1/bn.running_var,group0/block2/conv1/bn/variance/EMA:0 +d0.units.2.conv2.weight,group0/block2/conv2/W:0 +d0.units.2.conv2/bn.weight,group0/block2/conv2/bn/gamma:0 +d0.units.2.conv2/bn.bias,group0/block2/conv2/bn/beta:0 +d0.units.2.conv2/bn.running_mean,group0/block2/conv2/bn/mean/EMA:0 +d0.units.2.conv2/bn.running_var,group0/block2/conv2/bn/variance/EMA:0 +d0.units.2.conv3.weight,group0/block2/conv3/W:0 +d0.shortcut.weight,group0/block0/convshortcut/W:0 +d0.blk_bna.bn.weight,group0/bnlast/bn/gamma:0 +d0.blk_bna.bn.bias,group0/bnlast/bn/beta:0 +d0.blk_bna.bn.running_mean,group0/bnlast/bn/mean/EMA:0 +d0.blk_bna.bn.running_var,group0/bnlast/bn/variance/EMA:0 +d1.units.0.conv1.weight,group1/block0/conv1/W:0 +d1.units.0.conv1/bn.weight,group1/block0/conv1/bn/gamma:0 +d1.units.0.conv1/bn.bias,group1/block0/conv1/bn/beta:0 +d1.units.0.conv1/bn.running_mean,group1/block0/conv1/bn/mean/EMA:0 +d1.units.0.conv1/bn.running_var,group1/block0/conv1/bn/variance/EMA:0 +d1.units.0.conv2.weight,group1/block0/conv2/W:0 +d1.units.0.conv2/bn.weight,group1/block0/conv2/bn/gamma:0 +d1.units.0.conv2/bn.bias,group1/block0/conv2/bn/beta:0 +d1.units.0.conv2/bn.running_mean,group1/block0/conv2/bn/mean/EMA:0 +d1.units.0.conv2/bn.running_var,group1/block0/conv2/bn/variance/EMA:0 +d1.units.0.conv3.weight,group1/block0/conv3/W:0 +d1.units.1.preact/bn.weight,group1/block1/preact/bn/gamma:0 +d1.units.1.preact/bn.bias,group1/block1/preact/bn/beta:0 +d1.units.1.preact/bn.running_mean,group1/block1/preact/bn/mean/EMA:0 +d1.units.1.preact/bn.running_var,group1/block1/preact/bn/variance/EMA:0 +d1.units.1.conv1.weight,group1/block1/conv1/W:0 +d1.units.1.conv1/bn.weight,group1/block1/conv1/bn/gamma:0 +d1.units.1.conv1/bn.bias,group1/block1/conv1/bn/beta:0 +d1.units.1.conv1/bn.running_mean,group1/block1/conv1/bn/mean/EMA:0 +d1.units.1.conv1/bn.running_var,group1/block1/conv1/bn/variance/EMA:0 +d1.units.1.conv2.weight,group1/block1/conv2/W:0 +d1.units.1.conv2/bn.weight,group1/block1/conv2/bn/gamma:0 +d1.units.1.conv2/bn.bias,group1/block1/conv2/bn/beta:0 +d1.units.1.conv2/bn.running_mean,group1/block1/conv2/bn/mean/EMA:0 +d1.units.1.conv2/bn.running_var,group1/block1/conv2/bn/variance/EMA:0 +d1.units.1.conv3.weight,group1/block1/conv3/W:0 +d1.units.2.preact/bn.weight,group1/block2/preact/bn/gamma:0 +d1.units.2.preact/bn.bias,group1/block2/preact/bn/beta:0 +d1.units.2.preact/bn.running_mean,group1/block2/preact/bn/mean/EMA:0 +d1.units.2.preact/bn.running_var,group1/block2/preact/bn/variance/EMA:0 +d1.units.2.conv1.weight,group1/block2/conv1/W:0 +d1.units.2.conv1/bn.weight,group1/block2/conv1/bn/gamma:0 +d1.units.2.conv1/bn.bias,group1/block2/conv1/bn/beta:0 +d1.units.2.conv1/bn.running_mean,group1/block2/conv1/bn/mean/EMA:0 +d1.units.2.conv1/bn.running_var,group1/block2/conv1/bn/variance/EMA:0 +d1.units.2.conv2.weight,group1/block2/conv2/W:0 +d1.units.2.conv2/bn.weight,group1/block2/conv2/bn/gamma:0 +d1.units.2.conv2/bn.bias,group1/block2/conv2/bn/beta:0 +d1.units.2.conv2/bn.running_mean,group1/block2/conv2/bn/mean/EMA:0 +d1.units.2.conv2/bn.running_var,group1/block2/conv2/bn/variance/EMA:0 +d1.units.2.conv3.weight,group1/block2/conv3/W:0 +d1.units.3.preact/bn.weight,group1/block3/preact/bn/gamma:0 +d1.units.3.preact/bn.bias,group1/block3/preact/bn/beta:0 +d1.units.3.preact/bn.running_mean,group1/block3/preact/bn/mean/EMA:0 +d1.units.3.preact/bn.running_var,group1/block3/preact/bn/variance/EMA:0 +d1.units.3.conv1.weight,group1/block3/conv1/W:0 +d1.units.3.conv1/bn.weight,group1/block3/conv1/bn/gamma:0 +d1.units.3.conv1/bn.bias,group1/block3/conv1/bn/beta:0 +d1.units.3.conv1/bn.running_mean,group1/block3/conv1/bn/mean/EMA:0 +d1.units.3.conv1/bn.running_var,group1/block3/conv1/bn/variance/EMA:0 +d1.units.3.conv2.weight,group1/block3/conv2/W:0 +d1.units.3.conv2/bn.weight,group1/block3/conv2/bn/gamma:0 +d1.units.3.conv2/bn.bias,group1/block3/conv2/bn/beta:0 +d1.units.3.conv2/bn.running_mean,group1/block3/conv2/bn/mean/EMA:0 +d1.units.3.conv2/bn.running_var,group1/block3/conv2/bn/variance/EMA:0 +d1.units.3.conv3.weight,group1/block3/conv3/W:0 +d1.shortcut.weight,group1/block0/convshortcut/W:0 +d1.blk_bna.bn.weight,group1/bnlast/bn/gamma:0 +d1.blk_bna.bn.bias,group1/bnlast/bn/beta:0 +d1.blk_bna.bn.running_mean,group1/bnlast/bn/mean/EMA:0 +d1.blk_bna.bn.running_var,group1/bnlast/bn/variance/EMA:0 +d2.units.0.conv1.weight,group2/block0/conv1/W:0 +d2.units.0.conv1/bn.weight,group2/block0/conv1/bn/gamma:0 +d2.units.0.conv1/bn.bias,group2/block0/conv1/bn/beta:0 +d2.units.0.conv1/bn.running_mean,group2/block0/conv1/bn/mean/EMA:0 +d2.units.0.conv1/bn.running_var,group2/block0/conv1/bn/variance/EMA:0 +d2.units.0.conv2.weight,group2/block0/conv2/W:0 +d2.units.0.conv2/bn.weight,group2/block0/conv2/bn/gamma:0 +d2.units.0.conv2/bn.bias,group2/block0/conv2/bn/beta:0 +d2.units.0.conv2/bn.running_mean,group2/block0/conv2/bn/mean/EMA:0 +d2.units.0.conv2/bn.running_var,group2/block0/conv2/bn/variance/EMA:0 +d2.units.0.conv3.weight,group2/block0/conv3/W:0 +d2.units.1.preact/bn.weight,group2/block1/preact/bn/gamma:0 +d2.units.1.preact/bn.bias,group2/block1/preact/bn/beta:0 +d2.units.1.preact/bn.running_mean,group2/block1/preact/bn/mean/EMA:0 +d2.units.1.preact/bn.running_var,group2/block1/preact/bn/variance/EMA:0 +d2.units.1.conv1.weight,group2/block1/conv1/W:0 +d2.units.1.conv1/bn.weight,group2/block1/conv1/bn/gamma:0 +d2.units.1.conv1/bn.bias,group2/block1/conv1/bn/beta:0 +d2.units.1.conv1/bn.running_mean,group2/block1/conv1/bn/mean/EMA:0 +d2.units.1.conv1/bn.running_var,group2/block1/conv1/bn/variance/EMA:0 +d2.units.1.conv2.weight,group2/block1/conv2/W:0 +d2.units.1.conv2/bn.weight,group2/block1/conv2/bn/gamma:0 +d2.units.1.conv2/bn.bias,group2/block1/conv2/bn/beta:0 +d2.units.1.conv2/bn.running_mean,group2/block1/conv2/bn/mean/EMA:0 +d2.units.1.conv2/bn.running_var,group2/block1/conv2/bn/variance/EMA:0 +d2.units.1.conv3.weight,group2/block1/conv3/W:0 +d2.units.2.preact/bn.weight,group2/block2/preact/bn/gamma:0 +d2.units.2.preact/bn.bias,group2/block2/preact/bn/beta:0 +d2.units.2.preact/bn.running_mean,group2/block2/preact/bn/mean/EMA:0 +d2.units.2.preact/bn.running_var,group2/block2/preact/bn/variance/EMA:0 +d2.units.2.conv1.weight,group2/block2/conv1/W:0 +d2.units.2.conv1/bn.weight,group2/block2/conv1/bn/gamma:0 +d2.units.2.conv1/bn.bias,group2/block2/conv1/bn/beta:0 +d2.units.2.conv1/bn.running_mean,group2/block2/conv1/bn/mean/EMA:0 +d2.units.2.conv1/bn.running_var,group2/block2/conv1/bn/variance/EMA:0 +d2.units.2.conv2.weight,group2/block2/conv2/W:0 +d2.units.2.conv2/bn.weight,group2/block2/conv2/bn/gamma:0 +d2.units.2.conv2/bn.bias,group2/block2/conv2/bn/beta:0 +d2.units.2.conv2/bn.running_mean,group2/block2/conv2/bn/mean/EMA:0 +d2.units.2.conv2/bn.running_var,group2/block2/conv2/bn/variance/EMA:0 +d2.units.2.conv3.weight,group2/block2/conv3/W:0 +d2.units.3.preact/bn.weight,group2/block3/preact/bn/gamma:0 +d2.units.3.preact/bn.bias,group2/block3/preact/bn/beta:0 +d2.units.3.preact/bn.running_mean,group2/block3/preact/bn/mean/EMA:0 +d2.units.3.preact/bn.running_var,group2/block3/preact/bn/variance/EMA:0 +d2.units.3.conv1.weight,group2/block3/conv1/W:0 +d2.units.3.conv1/bn.weight,group2/block3/conv1/bn/gamma:0 +d2.units.3.conv1/bn.bias,group2/block3/conv1/bn/beta:0 +d2.units.3.conv1/bn.running_mean,group2/block3/conv1/bn/mean/EMA:0 +d2.units.3.conv1/bn.running_var,group2/block3/conv1/bn/variance/EMA:0 +d2.units.3.conv2.weight,group2/block3/conv2/W:0 +d2.units.3.conv2/bn.weight,group2/block3/conv2/bn/gamma:0 +d2.units.3.conv2/bn.bias,group2/block3/conv2/bn/beta:0 +d2.units.3.conv2/bn.running_mean,group2/block3/conv2/bn/mean/EMA:0 +d2.units.3.conv2/bn.running_var,group2/block3/conv2/bn/variance/EMA:0 +d2.units.3.conv3.weight,group2/block3/conv3/W:0 +d2.units.4.preact/bn.weight,group2/block4/preact/bn/gamma:0 +d2.units.4.preact/bn.bias,group2/block4/preact/bn/beta:0 +d2.units.4.preact/bn.running_mean,group2/block4/preact/bn/mean/EMA:0 +d2.units.4.preact/bn.running_var,group2/block4/preact/bn/variance/EMA:0 +d2.units.4.conv1.weight,group2/block4/conv1/W:0 +d2.units.4.conv1/bn.weight,group2/block4/conv1/bn/gamma:0 +d2.units.4.conv1/bn.bias,group2/block4/conv1/bn/beta:0 +d2.units.4.conv1/bn.running_mean,group2/block4/conv1/bn/mean/EMA:0 +d2.units.4.conv1/bn.running_var,group2/block4/conv1/bn/variance/EMA:0 +d2.units.4.conv2.weight,group2/block4/conv2/W:0 +d2.units.4.conv2/bn.weight,group2/block4/conv2/bn/gamma:0 +d2.units.4.conv2/bn.bias,group2/block4/conv2/bn/beta:0 +d2.units.4.conv2/bn.running_mean,group2/block4/conv2/bn/mean/EMA:0 +d2.units.4.conv2/bn.running_var,group2/block4/conv2/bn/variance/EMA:0 +d2.units.4.conv3.weight,group2/block4/conv3/W:0 +d2.units.5.preact/bn.weight,group2/block5/preact/bn/gamma:0 +d2.units.5.preact/bn.bias,group2/block5/preact/bn/beta:0 +d2.units.5.preact/bn.running_mean,group2/block5/preact/bn/mean/EMA:0 +d2.units.5.preact/bn.running_var,group2/block5/preact/bn/variance/EMA:0 +d2.units.5.conv1.weight,group2/block5/conv1/W:0 +d2.units.5.conv1/bn.weight,group2/block5/conv1/bn/gamma:0 +d2.units.5.conv1/bn.bias,group2/block5/conv1/bn/beta:0 +d2.units.5.conv1/bn.running_mean,group2/block5/conv1/bn/mean/EMA:0 +d2.units.5.conv1/bn.running_var,group2/block5/conv1/bn/variance/EMA:0 +d2.units.5.conv2.weight,group2/block5/conv2/W:0 +d2.units.5.conv2/bn.weight,group2/block5/conv2/bn/gamma:0 +d2.units.5.conv2/bn.bias,group2/block5/conv2/bn/beta:0 +d2.units.5.conv2/bn.running_mean,group2/block5/conv2/bn/mean/EMA:0 +d2.units.5.conv2/bn.running_var,group2/block5/conv2/bn/variance/EMA:0 +d2.units.5.conv3.weight,group2/block5/conv3/W:0 +d2.shortcut.weight,group2/block0/convshortcut/W:0 +d2.blk_bna.bn.weight,group2/bnlast/bn/gamma:0 +d2.blk_bna.bn.bias,group2/bnlast/bn/beta:0 +d2.blk_bna.bn.running_mean,group2/bnlast/bn/mean/EMA:0 +d2.blk_bna.bn.running_var,group2/bnlast/bn/variance/EMA:0 +d3.units.0.conv1.weight,group3/block0/conv1/W:0 +d3.units.0.conv1/bn.weight,group3/block0/conv1/bn/gamma:0 +d3.units.0.conv1/bn.bias,group3/block0/conv1/bn/beta:0 +d3.units.0.conv1/bn.running_mean,group3/block0/conv1/bn/mean/EMA:0 +d3.units.0.conv1/bn.running_var,group3/block0/conv1/bn/variance/EMA:0 +d3.units.0.conv2.weight,group3/block0/conv2/W:0 +d3.units.0.conv2/bn.weight,group3/block0/conv2/bn/gamma:0 +d3.units.0.conv2/bn.bias,group3/block0/conv2/bn/beta:0 +d3.units.0.conv2/bn.running_mean,group3/block0/conv2/bn/mean/EMA:0 +d3.units.0.conv2/bn.running_var,group3/block0/conv2/bn/variance/EMA:0 +d3.units.0.conv3.weight,group3/block0/conv3/W:0 +d3.units.1.preact/bn.weight,group3/block1/preact/bn/gamma:0 +d3.units.1.preact/bn.bias,group3/block1/preact/bn/beta:0 +d3.units.1.preact/bn.running_mean,group3/block1/preact/bn/mean/EMA:0 +d3.units.1.preact/bn.running_var,group3/block1/preact/bn/variance/EMA:0 +d3.units.1.conv1.weight,group3/block1/conv1/W:0 +d3.units.1.conv1/bn.weight,group3/block1/conv1/bn/gamma:0 +d3.units.1.conv1/bn.bias,group3/block1/conv1/bn/beta:0 +d3.units.1.conv1/bn.running_mean,group3/block1/conv1/bn/mean/EMA:0 +d3.units.1.conv1/bn.running_var,group3/block1/conv1/bn/variance/EMA:0 +d3.units.1.conv2.weight,group3/block1/conv2/W:0 +d3.units.1.conv2/bn.weight,group3/block1/conv2/bn/gamma:0 +d3.units.1.conv2/bn.bias,group3/block1/conv2/bn/beta:0 +d3.units.1.conv2/bn.running_mean,group3/block1/conv2/bn/mean/EMA:0 +d3.units.1.conv2/bn.running_var,group3/block1/conv2/bn/variance/EMA:0 +d3.units.1.conv3.weight,group3/block1/conv3/W:0 +d3.units.2.preact/bn.weight,group3/block2/preact/bn/gamma:0 +d3.units.2.preact/bn.bias,group3/block2/preact/bn/beta:0 +d3.units.2.preact/bn.running_mean,group3/block2/preact/bn/mean/EMA:0 +d3.units.2.preact/bn.running_var,group3/block2/preact/bn/variance/EMA:0 +d3.units.2.conv1.weight,group3/block2/conv1/W:0 +d3.units.2.conv1/bn.weight,group3/block2/conv1/bn/gamma:0 +d3.units.2.conv1/bn.bias,group3/block2/conv1/bn/beta:0 +d3.units.2.conv1/bn.running_mean,group3/block2/conv1/bn/mean/EMA:0 +d3.units.2.conv1/bn.running_var,group3/block2/conv1/bn/variance/EMA:0 +d3.units.2.conv2.weight,group3/block2/conv2/W:0 +d3.units.2.conv2/bn.weight,group3/block2/conv2/bn/gamma:0 +d3.units.2.conv2/bn.bias,group3/block2/conv2/bn/beta:0 +d3.units.2.conv2/bn.running_mean,group3/block2/conv2/bn/mean/EMA:0 +d3.units.2.conv2/bn.running_var,group3/block2/conv2/bn/variance/EMA:0 +d3.units.2.conv3.weight,group3/block2/conv3/W:0 +d3.shortcut.weight,group3/block0/convshortcut/W:0 +d3.blk_bna.bn.weight,group3/bnlast/bn/gamma:0 +d3.blk_bna.bn.bias,group3/bnlast/bn/beta:0 +d3.blk_bna.bn.running_mean,group3/bnlast/bn/mean/EMA:0 +d3.blk_bna.bn.running_var,group3/bnlast/bn/variance/EMA:0 +conv_bot.weight,conv_bot/W:0 +decoder.tp.u3.conva.weight,tp/u3/conva/W:0 +decoder.tp.u3.dense.units.0.preact_bna/bn.weight,tp/u3/dense/blk/0/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.0.preact_bna/bn.bias,tp/u3/dense/blk/0/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.0.preact_bna/bn.running_mean,tp/u3/dense/blk/0/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.0.preact_bna/bn.running_var,tp/u3/dense/blk/0/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.0.conv1.weight,tp/u3/dense/blk/0/conv1/W:0 +decoder.tp.u3.dense.units.0.conv1/bn.weight,tp/u3/dense/blk/0/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.0.conv1/bn.bias,tp/u3/dense/blk/0/conv1/bn/beta:0 +decoder.tp.u3.dense.units.0.conv1/bn.running_mean,tp/u3/dense/blk/0/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.0.conv1/bn.running_var,tp/u3/dense/blk/0/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.0.conv2.weight,tp/u3/dense/blk/0/conv2/W:0 +decoder.tp.u3.dense.units.1.preact_bna/bn.weight,tp/u3/dense/blk/1/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.1.preact_bna/bn.bias,tp/u3/dense/blk/1/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.1.preact_bna/bn.running_mean,tp/u3/dense/blk/1/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.1.preact_bna/bn.running_var,tp/u3/dense/blk/1/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.1.conv1.weight,tp/u3/dense/blk/1/conv1/W:0 +decoder.tp.u3.dense.units.1.conv1/bn.weight,tp/u3/dense/blk/1/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.1.conv1/bn.bias,tp/u3/dense/blk/1/conv1/bn/beta:0 +decoder.tp.u3.dense.units.1.conv1/bn.running_mean,tp/u3/dense/blk/1/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.1.conv1/bn.running_var,tp/u3/dense/blk/1/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.1.conv2.weight,tp/u3/dense/blk/1/conv2/W:0 +decoder.tp.u3.dense.units.2.preact_bna/bn.weight,tp/u3/dense/blk/2/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.2.preact_bna/bn.bias,tp/u3/dense/blk/2/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.2.preact_bna/bn.running_mean,tp/u3/dense/blk/2/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.2.preact_bna/bn.running_var,tp/u3/dense/blk/2/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.2.conv1.weight,tp/u3/dense/blk/2/conv1/W:0 +decoder.tp.u3.dense.units.2.conv1/bn.weight,tp/u3/dense/blk/2/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.2.conv1/bn.bias,tp/u3/dense/blk/2/conv1/bn/beta:0 +decoder.tp.u3.dense.units.2.conv1/bn.running_mean,tp/u3/dense/blk/2/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.2.conv1/bn.running_var,tp/u3/dense/blk/2/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.2.conv2.weight,tp/u3/dense/blk/2/conv2/W:0 +decoder.tp.u3.dense.units.3.preact_bna/bn.weight,tp/u3/dense/blk/3/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.3.preact_bna/bn.bias,tp/u3/dense/blk/3/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.3.preact_bna/bn.running_mean,tp/u3/dense/blk/3/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.3.preact_bna/bn.running_var,tp/u3/dense/blk/3/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.3.conv1.weight,tp/u3/dense/blk/3/conv1/W:0 +decoder.tp.u3.dense.units.3.conv1/bn.weight,tp/u3/dense/blk/3/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.3.conv1/bn.bias,tp/u3/dense/blk/3/conv1/bn/beta:0 +decoder.tp.u3.dense.units.3.conv1/bn.running_mean,tp/u3/dense/blk/3/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.3.conv1/bn.running_var,tp/u3/dense/blk/3/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.3.conv2.weight,tp/u3/dense/blk/3/conv2/W:0 +decoder.tp.u3.dense.units.4.preact_bna/bn.weight,tp/u3/dense/blk/4/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.4.preact_bna/bn.bias,tp/u3/dense/blk/4/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.4.preact_bna/bn.running_mean,tp/u3/dense/blk/4/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.4.preact_bna/bn.running_var,tp/u3/dense/blk/4/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.4.conv1.weight,tp/u3/dense/blk/4/conv1/W:0 +decoder.tp.u3.dense.units.4.conv1/bn.weight,tp/u3/dense/blk/4/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.4.conv1/bn.bias,tp/u3/dense/blk/4/conv1/bn/beta:0 +decoder.tp.u3.dense.units.4.conv1/bn.running_mean,tp/u3/dense/blk/4/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.4.conv1/bn.running_var,tp/u3/dense/blk/4/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.4.conv2.weight,tp/u3/dense/blk/4/conv2/W:0 +decoder.tp.u3.dense.units.5.preact_bna/bn.weight,tp/u3/dense/blk/5/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.5.preact_bna/bn.bias,tp/u3/dense/blk/5/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.5.preact_bna/bn.running_mean,tp/u3/dense/blk/5/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.5.preact_bna/bn.running_var,tp/u3/dense/blk/5/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.5.conv1.weight,tp/u3/dense/blk/5/conv1/W:0 +decoder.tp.u3.dense.units.5.conv1/bn.weight,tp/u3/dense/blk/5/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.5.conv1/bn.bias,tp/u3/dense/blk/5/conv1/bn/beta:0 +decoder.tp.u3.dense.units.5.conv1/bn.running_mean,tp/u3/dense/blk/5/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.5.conv1/bn.running_var,tp/u3/dense/blk/5/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.5.conv2.weight,tp/u3/dense/blk/5/conv2/W:0 +decoder.tp.u3.dense.units.6.preact_bna/bn.weight,tp/u3/dense/blk/6/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.6.preact_bna/bn.bias,tp/u3/dense/blk/6/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.6.preact_bna/bn.running_mean,tp/u3/dense/blk/6/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.6.preact_bna/bn.running_var,tp/u3/dense/blk/6/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.6.conv1.weight,tp/u3/dense/blk/6/conv1/W:0 +decoder.tp.u3.dense.units.6.conv1/bn.weight,tp/u3/dense/blk/6/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.6.conv1/bn.bias,tp/u3/dense/blk/6/conv1/bn/beta:0 +decoder.tp.u3.dense.units.6.conv1/bn.running_mean,tp/u3/dense/blk/6/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.6.conv1/bn.running_var,tp/u3/dense/blk/6/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.6.conv2.weight,tp/u3/dense/blk/6/conv2/W:0 +decoder.tp.u3.dense.units.7.preact_bna/bn.weight,tp/u3/dense/blk/7/preact_bna/bn/gamma:0 +decoder.tp.u3.dense.units.7.preact_bna/bn.bias,tp/u3/dense/blk/7/preact_bna/bn/beta:0 +decoder.tp.u3.dense.units.7.preact_bna/bn.running_mean,tp/u3/dense/blk/7/preact_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.units.7.preact_bna/bn.running_var,tp/u3/dense/blk/7/preact_bna/bn/variance/EMA:0 +decoder.tp.u3.dense.units.7.conv1.weight,tp/u3/dense/blk/7/conv1/W:0 +decoder.tp.u3.dense.units.7.conv1/bn.weight,tp/u3/dense/blk/7/conv1/bn/gamma:0 +decoder.tp.u3.dense.units.7.conv1/bn.bias,tp/u3/dense/blk/7/conv1/bn/beta:0 +decoder.tp.u3.dense.units.7.conv1/bn.running_mean,tp/u3/dense/blk/7/conv1/bn/mean/EMA:0 +decoder.tp.u3.dense.units.7.conv1/bn.running_var,tp/u3/dense/blk/7/conv1/bn/variance/EMA:0 +decoder.tp.u3.dense.units.7.conv2.weight,tp/u3/dense/blk/7/conv2/W:0 +decoder.tp.u3.dense.blk_bna.bn.weight,tp/u3/dense/blk_bna/bn/gamma:0 +decoder.tp.u3.dense.blk_bna.bn.bias,tp/u3/dense/blk_bna/bn/beta:0 +decoder.tp.u3.dense.blk_bna.bn.running_mean,tp/u3/dense/blk_bna/bn/mean/EMA:0 +decoder.tp.u3.dense.blk_bna.bn.running_var,tp/u3/dense/blk_bna/bn/variance/EMA:0 +decoder.tp.u3.convf.weight,tp/u3/convf/W:0 +decoder.tp.u2.conva.weight,tp/u2/conva/W:0 +decoder.tp.u2.dense.units.0.preact_bna/bn.weight,tp/u2/dense/blk/0/preact_bna/bn/gamma:0 +decoder.tp.u2.dense.units.0.preact_bna/bn.bias,tp/u2/dense/blk/0/preact_bna/bn/beta:0 +decoder.tp.u2.dense.units.0.preact_bna/bn.running_mean,tp/u2/dense/blk/0/preact_bna/bn/mean/EMA:0 +decoder.tp.u2.dense.units.0.preact_bna/bn.running_var,tp/u2/dense/blk/0/preact_bna/bn/variance/EMA:0 +decoder.tp.u2.dense.units.0.conv1.weight,tp/u2/dense/blk/0/conv1/W:0 +decoder.tp.u2.dense.units.0.conv1/bn.weight,tp/u2/dense/blk/0/conv1/bn/gamma:0 +decoder.tp.u2.dense.units.0.conv1/bn.bias,tp/u2/dense/blk/0/conv1/bn/beta:0 +decoder.tp.u2.dense.units.0.conv1/bn.running_mean,tp/u2/dense/blk/0/conv1/bn/mean/EMA:0 +decoder.tp.u2.dense.units.0.conv1/bn.running_var,tp/u2/dense/blk/0/conv1/bn/variance/EMA:0 +decoder.tp.u2.dense.units.0.conv2.weight,tp/u2/dense/blk/0/conv2/W:0 +decoder.tp.u2.dense.units.1.preact_bna/bn.weight,tp/u2/dense/blk/1/preact_bna/bn/gamma:0 +decoder.tp.u2.dense.units.1.preact_bna/bn.bias,tp/u2/dense/blk/1/preact_bna/bn/beta:0 +decoder.tp.u2.dense.units.1.preact_bna/bn.running_mean,tp/u2/dense/blk/1/preact_bna/bn/mean/EMA:0 +decoder.tp.u2.dense.units.1.preact_bna/bn.running_var,tp/u2/dense/blk/1/preact_bna/bn/variance/EMA:0 +decoder.tp.u2.dense.units.1.conv1.weight,tp/u2/dense/blk/1/conv1/W:0 +decoder.tp.u2.dense.units.1.conv1/bn.weight,tp/u2/dense/blk/1/conv1/bn/gamma:0 +decoder.tp.u2.dense.units.1.conv1/bn.bias,tp/u2/dense/blk/1/conv1/bn/beta:0 +decoder.tp.u2.dense.units.1.conv1/bn.running_mean,tp/u2/dense/blk/1/conv1/bn/mean/EMA:0 +decoder.tp.u2.dense.units.1.conv1/bn.running_var,tp/u2/dense/blk/1/conv1/bn/variance/EMA:0 +decoder.tp.u2.dense.units.1.conv2.weight,tp/u2/dense/blk/1/conv2/W:0 +decoder.tp.u2.dense.units.2.preact_bna/bn.weight,tp/u2/dense/blk/2/preact_bna/bn/gamma:0 +decoder.tp.u2.dense.units.2.preact_bna/bn.bias,tp/u2/dense/blk/2/preact_bna/bn/beta:0 +decoder.tp.u2.dense.units.2.preact_bna/bn.running_mean,tp/u2/dense/blk/2/preact_bna/bn/mean/EMA:0 +decoder.tp.u2.dense.units.2.preact_bna/bn.running_var,tp/u2/dense/blk/2/preact_bna/bn/variance/EMA:0 +decoder.tp.u2.dense.units.2.conv1.weight,tp/u2/dense/blk/2/conv1/W:0 +decoder.tp.u2.dense.units.2.conv1/bn.weight,tp/u2/dense/blk/2/conv1/bn/gamma:0 +decoder.tp.u2.dense.units.2.conv1/bn.bias,tp/u2/dense/blk/2/conv1/bn/beta:0 +decoder.tp.u2.dense.units.2.conv1/bn.running_mean,tp/u2/dense/blk/2/conv1/bn/mean/EMA:0 +decoder.tp.u2.dense.units.2.conv1/bn.running_var,tp/u2/dense/blk/2/conv1/bn/variance/EMA:0 +decoder.tp.u2.dense.units.2.conv2.weight,tp/u2/dense/blk/2/conv2/W:0 +decoder.tp.u2.dense.units.3.preact_bna/bn.weight,tp/u2/dense/blk/3/preact_bna/bn/gamma:0 +decoder.tp.u2.dense.units.3.preact_bna/bn.bias,tp/u2/dense/blk/3/preact_bna/bn/beta:0 +decoder.tp.u2.dense.units.3.preact_bna/bn.running_mean,tp/u2/dense/blk/3/preact_bna/bn/mean/EMA:0 +decoder.tp.u2.dense.units.3.preact_bna/bn.running_var,tp/u2/dense/blk/3/preact_bna/bn/variance/EMA:0 +decoder.tp.u2.dense.units.3.conv1.weight,tp/u2/dense/blk/3/conv1/W:0 +decoder.tp.u2.dense.units.3.conv1/bn.weight,tp/u2/dense/blk/3/conv1/bn/gamma:0 +decoder.tp.u2.dense.units.3.conv1/bn.bias,tp/u2/dense/blk/3/conv1/bn/beta:0 +decoder.tp.u2.dense.units.3.conv1/bn.running_mean,tp/u2/dense/blk/3/conv1/bn/mean/EMA:0 +decoder.tp.u2.dense.units.3.conv1/bn.running_var,tp/u2/dense/blk/3/conv1/bn/variance/EMA:0 +decoder.tp.u2.dense.units.3.conv2.weight,tp/u2/dense/blk/3/conv2/W:0 +decoder.tp.u2.dense.blk_bna.bn.weight,tp/u2/dense/blk_bna/bn/gamma:0 +decoder.tp.u2.dense.blk_bna.bn.bias,tp/u2/dense/blk_bna/bn/beta:0 +decoder.tp.u2.dense.blk_bna.bn.running_mean,tp/u2/dense/blk_bna/bn/mean/EMA:0 +decoder.tp.u2.dense.blk_bna.bn.running_var,tp/u2/dense/blk_bna/bn/variance/EMA:0 +decoder.tp.u2.convf.weight,tp/u2/convf/W:0 +decoder.tp.u1.conva.weight,tp/u1/conva/W:0 +decoder.tp.u0.bn.weight,preact_out_tp/bn/gamma:0 +decoder.tp.u0.bn.bias,preact_out_tp/bn/beta:0 +decoder.tp.u0.bn.running_mean,preact_out_tp/bn/mean/EMA:0 +decoder.tp.u0.bn.running_var,preact_out_tp/bn/variance/EMA:0 +decoder.tp.u0.conv.weight,conv_out_tp/W:0 +decoder.tp.u0.conv.bias,conv_out_tp/b:0 +decoder.np.u3.conva.weight,np/u3/conva/W:0 +decoder.np.u3.dense.units.0.preact_bna/bn.weight,np/u3/dense/blk/0/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.0.preact_bna/bn.bias,np/u3/dense/blk/0/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.0.preact_bna/bn.running_mean,np/u3/dense/blk/0/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.0.preact_bna/bn.running_var,np/u3/dense/blk/0/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.0.conv1.weight,np/u3/dense/blk/0/conv1/W:0 +decoder.np.u3.dense.units.0.conv1/bn.weight,np/u3/dense/blk/0/conv1/bn/gamma:0 +decoder.np.u3.dense.units.0.conv1/bn.bias,np/u3/dense/blk/0/conv1/bn/beta:0 +decoder.np.u3.dense.units.0.conv1/bn.running_mean,np/u3/dense/blk/0/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.0.conv1/bn.running_var,np/u3/dense/blk/0/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.0.conv2.weight,np/u3/dense/blk/0/conv2/W:0 +decoder.np.u3.dense.units.1.preact_bna/bn.weight,np/u3/dense/blk/1/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.1.preact_bna/bn.bias,np/u3/dense/blk/1/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.1.preact_bna/bn.running_mean,np/u3/dense/blk/1/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.1.preact_bna/bn.running_var,np/u3/dense/blk/1/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.1.conv1.weight,np/u3/dense/blk/1/conv1/W:0 +decoder.np.u3.dense.units.1.conv1/bn.weight,np/u3/dense/blk/1/conv1/bn/gamma:0 +decoder.np.u3.dense.units.1.conv1/bn.bias,np/u3/dense/blk/1/conv1/bn/beta:0 +decoder.np.u3.dense.units.1.conv1/bn.running_mean,np/u3/dense/blk/1/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.1.conv1/bn.running_var,np/u3/dense/blk/1/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.1.conv2.weight,np/u3/dense/blk/1/conv2/W:0 +decoder.np.u3.dense.units.2.preact_bna/bn.weight,np/u3/dense/blk/2/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.2.preact_bna/bn.bias,np/u3/dense/blk/2/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.2.preact_bna/bn.running_mean,np/u3/dense/blk/2/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.2.preact_bna/bn.running_var,np/u3/dense/blk/2/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.2.conv1.weight,np/u3/dense/blk/2/conv1/W:0 +decoder.np.u3.dense.units.2.conv1/bn.weight,np/u3/dense/blk/2/conv1/bn/gamma:0 +decoder.np.u3.dense.units.2.conv1/bn.bias,np/u3/dense/blk/2/conv1/bn/beta:0 +decoder.np.u3.dense.units.2.conv1/bn.running_mean,np/u3/dense/blk/2/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.2.conv1/bn.running_var,np/u3/dense/blk/2/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.2.conv2.weight,np/u3/dense/blk/2/conv2/W:0 +decoder.np.u3.dense.units.3.preact_bna/bn.weight,np/u3/dense/blk/3/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.3.preact_bna/bn.bias,np/u3/dense/blk/3/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.3.preact_bna/bn.running_mean,np/u3/dense/blk/3/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.3.preact_bna/bn.running_var,np/u3/dense/blk/3/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.3.conv1.weight,np/u3/dense/blk/3/conv1/W:0 +decoder.np.u3.dense.units.3.conv1/bn.weight,np/u3/dense/blk/3/conv1/bn/gamma:0 +decoder.np.u3.dense.units.3.conv1/bn.bias,np/u3/dense/blk/3/conv1/bn/beta:0 +decoder.np.u3.dense.units.3.conv1/bn.running_mean,np/u3/dense/blk/3/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.3.conv1/bn.running_var,np/u3/dense/blk/3/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.3.conv2.weight,np/u3/dense/blk/3/conv2/W:0 +decoder.np.u3.dense.units.4.preact_bna/bn.weight,np/u3/dense/blk/4/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.4.preact_bna/bn.bias,np/u3/dense/blk/4/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.4.preact_bna/bn.running_mean,np/u3/dense/blk/4/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.4.preact_bna/bn.running_var,np/u3/dense/blk/4/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.4.conv1.weight,np/u3/dense/blk/4/conv1/W:0 +decoder.np.u3.dense.units.4.conv1/bn.weight,np/u3/dense/blk/4/conv1/bn/gamma:0 +decoder.np.u3.dense.units.4.conv1/bn.bias,np/u3/dense/blk/4/conv1/bn/beta:0 +decoder.np.u3.dense.units.4.conv1/bn.running_mean,np/u3/dense/blk/4/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.4.conv1/bn.running_var,np/u3/dense/blk/4/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.4.conv2.weight,np/u3/dense/blk/4/conv2/W:0 +decoder.np.u3.dense.units.5.preact_bna/bn.weight,np/u3/dense/blk/5/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.5.preact_bna/bn.bias,np/u3/dense/blk/5/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.5.preact_bna/bn.running_mean,np/u3/dense/blk/5/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.5.preact_bna/bn.running_var,np/u3/dense/blk/5/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.5.conv1.weight,np/u3/dense/blk/5/conv1/W:0 +decoder.np.u3.dense.units.5.conv1/bn.weight,np/u3/dense/blk/5/conv1/bn/gamma:0 +decoder.np.u3.dense.units.5.conv1/bn.bias,np/u3/dense/blk/5/conv1/bn/beta:0 +decoder.np.u3.dense.units.5.conv1/bn.running_mean,np/u3/dense/blk/5/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.5.conv1/bn.running_var,np/u3/dense/blk/5/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.5.conv2.weight,np/u3/dense/blk/5/conv2/W:0 +decoder.np.u3.dense.units.6.preact_bna/bn.weight,np/u3/dense/blk/6/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.6.preact_bna/bn.bias,np/u3/dense/blk/6/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.6.preact_bna/bn.running_mean,np/u3/dense/blk/6/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.6.preact_bna/bn.running_var,np/u3/dense/blk/6/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.6.conv1.weight,np/u3/dense/blk/6/conv1/W:0 +decoder.np.u3.dense.units.6.conv1/bn.weight,np/u3/dense/blk/6/conv1/bn/gamma:0 +decoder.np.u3.dense.units.6.conv1/bn.bias,np/u3/dense/blk/6/conv1/bn/beta:0 +decoder.np.u3.dense.units.6.conv1/bn.running_mean,np/u3/dense/blk/6/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.6.conv1/bn.running_var,np/u3/dense/blk/6/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.6.conv2.weight,np/u3/dense/blk/6/conv2/W:0 +decoder.np.u3.dense.units.7.preact_bna/bn.weight,np/u3/dense/blk/7/preact_bna/bn/gamma:0 +decoder.np.u3.dense.units.7.preact_bna/bn.bias,np/u3/dense/blk/7/preact_bna/bn/beta:0 +decoder.np.u3.dense.units.7.preact_bna/bn.running_mean,np/u3/dense/blk/7/preact_bna/bn/mean/EMA:0 +decoder.np.u3.dense.units.7.preact_bna/bn.running_var,np/u3/dense/blk/7/preact_bna/bn/variance/EMA:0 +decoder.np.u3.dense.units.7.conv1.weight,np/u3/dense/blk/7/conv1/W:0 +decoder.np.u3.dense.units.7.conv1/bn.weight,np/u3/dense/blk/7/conv1/bn/gamma:0 +decoder.np.u3.dense.units.7.conv1/bn.bias,np/u3/dense/blk/7/conv1/bn/beta:0 +decoder.np.u3.dense.units.7.conv1/bn.running_mean,np/u3/dense/blk/7/conv1/bn/mean/EMA:0 +decoder.np.u3.dense.units.7.conv1/bn.running_var,np/u3/dense/blk/7/conv1/bn/variance/EMA:0 +decoder.np.u3.dense.units.7.conv2.weight,np/u3/dense/blk/7/conv2/W:0 +decoder.np.u3.dense.blk_bna.bn.weight,np/u3/dense/blk_bna/bn/gamma:0 +decoder.np.u3.dense.blk_bna.bn.bias,np/u3/dense/blk_bna/bn/beta:0 +decoder.np.u3.dense.blk_bna.bn.running_mean,np/u3/dense/blk_bna/bn/mean/EMA:0 +decoder.np.u3.dense.blk_bna.bn.running_var,np/u3/dense/blk_bna/bn/variance/EMA:0 +decoder.np.u3.convf.weight,np/u3/convf/W:0 +decoder.np.u2.conva.weight,np/u2/conva/W:0 +decoder.np.u2.dense.units.0.preact_bna/bn.weight,np/u2/dense/blk/0/preact_bna/bn/gamma:0 +decoder.np.u2.dense.units.0.preact_bna/bn.bias,np/u2/dense/blk/0/preact_bna/bn/beta:0 +decoder.np.u2.dense.units.0.preact_bna/bn.running_mean,np/u2/dense/blk/0/preact_bna/bn/mean/EMA:0 +decoder.np.u2.dense.units.0.preact_bna/bn.running_var,np/u2/dense/blk/0/preact_bna/bn/variance/EMA:0 +decoder.np.u2.dense.units.0.conv1.weight,np/u2/dense/blk/0/conv1/W:0 +decoder.np.u2.dense.units.0.conv1/bn.weight,np/u2/dense/blk/0/conv1/bn/gamma:0 +decoder.np.u2.dense.units.0.conv1/bn.bias,np/u2/dense/blk/0/conv1/bn/beta:0 +decoder.np.u2.dense.units.0.conv1/bn.running_mean,np/u2/dense/blk/0/conv1/bn/mean/EMA:0 +decoder.np.u2.dense.units.0.conv1/bn.running_var,np/u2/dense/blk/0/conv1/bn/variance/EMA:0 +decoder.np.u2.dense.units.0.conv2.weight,np/u2/dense/blk/0/conv2/W:0 +decoder.np.u2.dense.units.1.preact_bna/bn.weight,np/u2/dense/blk/1/preact_bna/bn/gamma:0 +decoder.np.u2.dense.units.1.preact_bna/bn.bias,np/u2/dense/blk/1/preact_bna/bn/beta:0 +decoder.np.u2.dense.units.1.preact_bna/bn.running_mean,np/u2/dense/blk/1/preact_bna/bn/mean/EMA:0 +decoder.np.u2.dense.units.1.preact_bna/bn.running_var,np/u2/dense/blk/1/preact_bna/bn/variance/EMA:0 +decoder.np.u2.dense.units.1.conv1.weight,np/u2/dense/blk/1/conv1/W:0 +decoder.np.u2.dense.units.1.conv1/bn.weight,np/u2/dense/blk/1/conv1/bn/gamma:0 +decoder.np.u2.dense.units.1.conv1/bn.bias,np/u2/dense/blk/1/conv1/bn/beta:0 +decoder.np.u2.dense.units.1.conv1/bn.running_mean,np/u2/dense/blk/1/conv1/bn/mean/EMA:0 +decoder.np.u2.dense.units.1.conv1/bn.running_var,np/u2/dense/blk/1/conv1/bn/variance/EMA:0 +decoder.np.u2.dense.units.1.conv2.weight,np/u2/dense/blk/1/conv2/W:0 +decoder.np.u2.dense.units.2.preact_bna/bn.weight,np/u2/dense/blk/2/preact_bna/bn/gamma:0 +decoder.np.u2.dense.units.2.preact_bna/bn.bias,np/u2/dense/blk/2/preact_bna/bn/beta:0 +decoder.np.u2.dense.units.2.preact_bna/bn.running_mean,np/u2/dense/blk/2/preact_bna/bn/mean/EMA:0 +decoder.np.u2.dense.units.2.preact_bna/bn.running_var,np/u2/dense/blk/2/preact_bna/bn/variance/EMA:0 +decoder.np.u2.dense.units.2.conv1.weight,np/u2/dense/blk/2/conv1/W:0 +decoder.np.u2.dense.units.2.conv1/bn.weight,np/u2/dense/blk/2/conv1/bn/gamma:0 +decoder.np.u2.dense.units.2.conv1/bn.bias,np/u2/dense/blk/2/conv1/bn/beta:0 +decoder.np.u2.dense.units.2.conv1/bn.running_mean,np/u2/dense/blk/2/conv1/bn/mean/EMA:0 +decoder.np.u2.dense.units.2.conv1/bn.running_var,np/u2/dense/blk/2/conv1/bn/variance/EMA:0 +decoder.np.u2.dense.units.2.conv2.weight,np/u2/dense/blk/2/conv2/W:0 +decoder.np.u2.dense.units.3.preact_bna/bn.weight,np/u2/dense/blk/3/preact_bna/bn/gamma:0 +decoder.np.u2.dense.units.3.preact_bna/bn.bias,np/u2/dense/blk/3/preact_bna/bn/beta:0 +decoder.np.u2.dense.units.3.preact_bna/bn.running_mean,np/u2/dense/blk/3/preact_bna/bn/mean/EMA:0 +decoder.np.u2.dense.units.3.preact_bna/bn.running_var,np/u2/dense/blk/3/preact_bna/bn/variance/EMA:0 +decoder.np.u2.dense.units.3.conv1.weight,np/u2/dense/blk/3/conv1/W:0 +decoder.np.u2.dense.units.3.conv1/bn.weight,np/u2/dense/blk/3/conv1/bn/gamma:0 +decoder.np.u2.dense.units.3.conv1/bn.bias,np/u2/dense/blk/3/conv1/bn/beta:0 +decoder.np.u2.dense.units.3.conv1/bn.running_mean,np/u2/dense/blk/3/conv1/bn/mean/EMA:0 +decoder.np.u2.dense.units.3.conv1/bn.running_var,np/u2/dense/blk/3/conv1/bn/variance/EMA:0 +decoder.np.u2.dense.units.3.conv2.weight,np/u2/dense/blk/3/conv2/W:0 +decoder.np.u2.dense.blk_bna.bn.weight,np/u2/dense/blk_bna/bn/gamma:0 +decoder.np.u2.dense.blk_bna.bn.bias,np/u2/dense/blk_bna/bn/beta:0 +decoder.np.u2.dense.blk_bna.bn.running_mean,np/u2/dense/blk_bna/bn/mean/EMA:0 +decoder.np.u2.dense.blk_bna.bn.running_var,np/u2/dense/blk_bna/bn/variance/EMA:0 +decoder.np.u2.convf.weight,np/u2/convf/W:0 +decoder.np.u1.conva.weight,np/u1/conva/W:0 +decoder.np.u0.bn.weight,preact_out_np/bn/gamma:0 +decoder.np.u0.bn.bias,preact_out_np/bn/beta:0 +decoder.np.u0.bn.running_mean,preact_out_np/bn/mean/EMA:0 +decoder.np.u0.bn.running_var,preact_out_np/bn/variance/EMA:0 +decoder.np.u0.conv.weight,conv_out_np/W:0 +decoder.np.u0.conv.bias,conv_out_np/b:0 +decoder.hv.u3.conva.weight,hv/u3/conva/W:0 +decoder.hv.u3.dense.units.0.preact_bna/bn.weight,hv/u3/dense/blk/0/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.0.preact_bna/bn.bias,hv/u3/dense/blk/0/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.0.preact_bna/bn.running_mean,hv/u3/dense/blk/0/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.0.preact_bna/bn.running_var,hv/u3/dense/blk/0/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.0.conv1.weight,hv/u3/dense/blk/0/conv1/W:0 +decoder.hv.u3.dense.units.0.conv1/bn.weight,hv/u3/dense/blk/0/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.0.conv1/bn.bias,hv/u3/dense/blk/0/conv1/bn/beta:0 +decoder.hv.u3.dense.units.0.conv1/bn.running_mean,hv/u3/dense/blk/0/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.0.conv1/bn.running_var,hv/u3/dense/blk/0/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.0.conv2.weight,hv/u3/dense/blk/0/conv2/W:0 +decoder.hv.u3.dense.units.1.preact_bna/bn.weight,hv/u3/dense/blk/1/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.1.preact_bna/bn.bias,hv/u3/dense/blk/1/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.1.preact_bna/bn.running_mean,hv/u3/dense/blk/1/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.1.preact_bna/bn.running_var,hv/u3/dense/blk/1/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.1.conv1.weight,hv/u3/dense/blk/1/conv1/W:0 +decoder.hv.u3.dense.units.1.conv1/bn.weight,hv/u3/dense/blk/1/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.1.conv1/bn.bias,hv/u3/dense/blk/1/conv1/bn/beta:0 +decoder.hv.u3.dense.units.1.conv1/bn.running_mean,hv/u3/dense/blk/1/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.1.conv1/bn.running_var,hv/u3/dense/blk/1/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.1.conv2.weight,hv/u3/dense/blk/1/conv2/W:0 +decoder.hv.u3.dense.units.2.preact_bna/bn.weight,hv/u3/dense/blk/2/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.2.preact_bna/bn.bias,hv/u3/dense/blk/2/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.2.preact_bna/bn.running_mean,hv/u3/dense/blk/2/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.2.preact_bna/bn.running_var,hv/u3/dense/blk/2/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.2.conv1.weight,hv/u3/dense/blk/2/conv1/W:0 +decoder.hv.u3.dense.units.2.conv1/bn.weight,hv/u3/dense/blk/2/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.2.conv1/bn.bias,hv/u3/dense/blk/2/conv1/bn/beta:0 +decoder.hv.u3.dense.units.2.conv1/bn.running_mean,hv/u3/dense/blk/2/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.2.conv1/bn.running_var,hv/u3/dense/blk/2/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.2.conv2.weight,hv/u3/dense/blk/2/conv2/W:0 +decoder.hv.u3.dense.units.3.preact_bna/bn.weight,hv/u3/dense/blk/3/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.3.preact_bna/bn.bias,hv/u3/dense/blk/3/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.3.preact_bna/bn.running_mean,hv/u3/dense/blk/3/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.3.preact_bna/bn.running_var,hv/u3/dense/blk/3/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.3.conv1.weight,hv/u3/dense/blk/3/conv1/W:0 +decoder.hv.u3.dense.units.3.conv1/bn.weight,hv/u3/dense/blk/3/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.3.conv1/bn.bias,hv/u3/dense/blk/3/conv1/bn/beta:0 +decoder.hv.u3.dense.units.3.conv1/bn.running_mean,hv/u3/dense/blk/3/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.3.conv1/bn.running_var,hv/u3/dense/blk/3/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.3.conv2.weight,hv/u3/dense/blk/3/conv2/W:0 +decoder.hv.u3.dense.units.4.preact_bna/bn.weight,hv/u3/dense/blk/4/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.4.preact_bna/bn.bias,hv/u3/dense/blk/4/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.4.preact_bna/bn.running_mean,hv/u3/dense/blk/4/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.4.preact_bna/bn.running_var,hv/u3/dense/blk/4/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.4.conv1.weight,hv/u3/dense/blk/4/conv1/W:0 +decoder.hv.u3.dense.units.4.conv1/bn.weight,hv/u3/dense/blk/4/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.4.conv1/bn.bias,hv/u3/dense/blk/4/conv1/bn/beta:0 +decoder.hv.u3.dense.units.4.conv1/bn.running_mean,hv/u3/dense/blk/4/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.4.conv1/bn.running_var,hv/u3/dense/blk/4/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.4.conv2.weight,hv/u3/dense/blk/4/conv2/W:0 +decoder.hv.u3.dense.units.5.preact_bna/bn.weight,hv/u3/dense/blk/5/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.5.preact_bna/bn.bias,hv/u3/dense/blk/5/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.5.preact_bna/bn.running_mean,hv/u3/dense/blk/5/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.5.preact_bna/bn.running_var,hv/u3/dense/blk/5/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.5.conv1.weight,hv/u3/dense/blk/5/conv1/W:0 +decoder.hv.u3.dense.units.5.conv1/bn.weight,hv/u3/dense/blk/5/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.5.conv1/bn.bias,hv/u3/dense/blk/5/conv1/bn/beta:0 +decoder.hv.u3.dense.units.5.conv1/bn.running_mean,hv/u3/dense/blk/5/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.5.conv1/bn.running_var,hv/u3/dense/blk/5/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.5.conv2.weight,hv/u3/dense/blk/5/conv2/W:0 +decoder.hv.u3.dense.units.6.preact_bna/bn.weight,hv/u3/dense/blk/6/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.6.preact_bna/bn.bias,hv/u3/dense/blk/6/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.6.preact_bna/bn.running_mean,hv/u3/dense/blk/6/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.6.preact_bna/bn.running_var,hv/u3/dense/blk/6/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.6.conv1.weight,hv/u3/dense/blk/6/conv1/W:0 +decoder.hv.u3.dense.units.6.conv1/bn.weight,hv/u3/dense/blk/6/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.6.conv1/bn.bias,hv/u3/dense/blk/6/conv1/bn/beta:0 +decoder.hv.u3.dense.units.6.conv1/bn.running_mean,hv/u3/dense/blk/6/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.6.conv1/bn.running_var,hv/u3/dense/blk/6/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.6.conv2.weight,hv/u3/dense/blk/6/conv2/W:0 +decoder.hv.u3.dense.units.7.preact_bna/bn.weight,hv/u3/dense/blk/7/preact_bna/bn/gamma:0 +decoder.hv.u3.dense.units.7.preact_bna/bn.bias,hv/u3/dense/blk/7/preact_bna/bn/beta:0 +decoder.hv.u3.dense.units.7.preact_bna/bn.running_mean,hv/u3/dense/blk/7/preact_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.units.7.preact_bna/bn.running_var,hv/u3/dense/blk/7/preact_bna/bn/variance/EMA:0 +decoder.hv.u3.dense.units.7.conv1.weight,hv/u3/dense/blk/7/conv1/W:0 +decoder.hv.u3.dense.units.7.conv1/bn.weight,hv/u3/dense/blk/7/conv1/bn/gamma:0 +decoder.hv.u3.dense.units.7.conv1/bn.bias,hv/u3/dense/blk/7/conv1/bn/beta:0 +decoder.hv.u3.dense.units.7.conv1/bn.running_mean,hv/u3/dense/blk/7/conv1/bn/mean/EMA:0 +decoder.hv.u3.dense.units.7.conv1/bn.running_var,hv/u3/dense/blk/7/conv1/bn/variance/EMA:0 +decoder.hv.u3.dense.units.7.conv2.weight,hv/u3/dense/blk/7/conv2/W:0 +decoder.hv.u3.dense.blk_bna.bn.weight,hv/u3/dense/blk_bna/bn/gamma:0 +decoder.hv.u3.dense.blk_bna.bn.bias,hv/u3/dense/blk_bna/bn/beta:0 +decoder.hv.u3.dense.blk_bna.bn.running_mean,hv/u3/dense/blk_bna/bn/mean/EMA:0 +decoder.hv.u3.dense.blk_bna.bn.running_var,hv/u3/dense/blk_bna/bn/variance/EMA:0 +decoder.hv.u3.convf.weight,hv/u3/convf/W:0 +decoder.hv.u2.conva.weight,hv/u2/conva/W:0 +decoder.hv.u2.dense.units.0.preact_bna/bn.weight,hv/u2/dense/blk/0/preact_bna/bn/gamma:0 +decoder.hv.u2.dense.units.0.preact_bna/bn.bias,hv/u2/dense/blk/0/preact_bna/bn/beta:0 +decoder.hv.u2.dense.units.0.preact_bna/bn.running_mean,hv/u2/dense/blk/0/preact_bna/bn/mean/EMA:0 +decoder.hv.u2.dense.units.0.preact_bna/bn.running_var,hv/u2/dense/blk/0/preact_bna/bn/variance/EMA:0 +decoder.hv.u2.dense.units.0.conv1.weight,hv/u2/dense/blk/0/conv1/W:0 +decoder.hv.u2.dense.units.0.conv1/bn.weight,hv/u2/dense/blk/0/conv1/bn/gamma:0 +decoder.hv.u2.dense.units.0.conv1/bn.bias,hv/u2/dense/blk/0/conv1/bn/beta:0 +decoder.hv.u2.dense.units.0.conv1/bn.running_mean,hv/u2/dense/blk/0/conv1/bn/mean/EMA:0 +decoder.hv.u2.dense.units.0.conv1/bn.running_var,hv/u2/dense/blk/0/conv1/bn/variance/EMA:0 +decoder.hv.u2.dense.units.0.conv2.weight,hv/u2/dense/blk/0/conv2/W:0 +decoder.hv.u2.dense.units.1.preact_bna/bn.weight,hv/u2/dense/blk/1/preact_bna/bn/gamma:0 +decoder.hv.u2.dense.units.1.preact_bna/bn.bias,hv/u2/dense/blk/1/preact_bna/bn/beta:0 +decoder.hv.u2.dense.units.1.preact_bna/bn.running_mean,hv/u2/dense/blk/1/preact_bna/bn/mean/EMA:0 +decoder.hv.u2.dense.units.1.preact_bna/bn.running_var,hv/u2/dense/blk/1/preact_bna/bn/variance/EMA:0 +decoder.hv.u2.dense.units.1.conv1.weight,hv/u2/dense/blk/1/conv1/W:0 +decoder.hv.u2.dense.units.1.conv1/bn.weight,hv/u2/dense/blk/1/conv1/bn/gamma:0 +decoder.hv.u2.dense.units.1.conv1/bn.bias,hv/u2/dense/blk/1/conv1/bn/beta:0 +decoder.hv.u2.dense.units.1.conv1/bn.running_mean,hv/u2/dense/blk/1/conv1/bn/mean/EMA:0 +decoder.hv.u2.dense.units.1.conv1/bn.running_var,hv/u2/dense/blk/1/conv1/bn/variance/EMA:0 +decoder.hv.u2.dense.units.1.conv2.weight,hv/u2/dense/blk/1/conv2/W:0 +decoder.hv.u2.dense.units.2.preact_bna/bn.weight,hv/u2/dense/blk/2/preact_bna/bn/gamma:0 +decoder.hv.u2.dense.units.2.preact_bna/bn.bias,hv/u2/dense/blk/2/preact_bna/bn/beta:0 +decoder.hv.u2.dense.units.2.preact_bna/bn.running_mean,hv/u2/dense/blk/2/preact_bna/bn/mean/EMA:0 +decoder.hv.u2.dense.units.2.preact_bna/bn.running_var,hv/u2/dense/blk/2/preact_bna/bn/variance/EMA:0 +decoder.hv.u2.dense.units.2.conv1.weight,hv/u2/dense/blk/2/conv1/W:0 +decoder.hv.u2.dense.units.2.conv1/bn.weight,hv/u2/dense/blk/2/conv1/bn/gamma:0 +decoder.hv.u2.dense.units.2.conv1/bn.bias,hv/u2/dense/blk/2/conv1/bn/beta:0 +decoder.hv.u2.dense.units.2.conv1/bn.running_mean,hv/u2/dense/blk/2/conv1/bn/mean/EMA:0 +decoder.hv.u2.dense.units.2.conv1/bn.running_var,hv/u2/dense/blk/2/conv1/bn/variance/EMA:0 +decoder.hv.u2.dense.units.2.conv2.weight,hv/u2/dense/blk/2/conv2/W:0 +decoder.hv.u2.dense.units.3.preact_bna/bn.weight,hv/u2/dense/blk/3/preact_bna/bn/gamma:0 +decoder.hv.u2.dense.units.3.preact_bna/bn.bias,hv/u2/dense/blk/3/preact_bna/bn/beta:0 +decoder.hv.u2.dense.units.3.preact_bna/bn.running_mean,hv/u2/dense/blk/3/preact_bna/bn/mean/EMA:0 +decoder.hv.u2.dense.units.3.preact_bna/bn.running_var,hv/u2/dense/blk/3/preact_bna/bn/variance/EMA:0 +decoder.hv.u2.dense.units.3.conv1.weight,hv/u2/dense/blk/3/conv1/W:0 +decoder.hv.u2.dense.units.3.conv1/bn.weight,hv/u2/dense/blk/3/conv1/bn/gamma:0 +decoder.hv.u2.dense.units.3.conv1/bn.bias,hv/u2/dense/blk/3/conv1/bn/beta:0 +decoder.hv.u2.dense.units.3.conv1/bn.running_mean,hv/u2/dense/blk/3/conv1/bn/mean/EMA:0 +decoder.hv.u2.dense.units.3.conv1/bn.running_var,hv/u2/dense/blk/3/conv1/bn/variance/EMA:0 +decoder.hv.u2.dense.units.3.conv2.weight,hv/u2/dense/blk/3/conv2/W:0 +decoder.hv.u2.dense.blk_bna.bn.weight,hv/u2/dense/blk_bna/bn/gamma:0 +decoder.hv.u2.dense.blk_bna.bn.bias,hv/u2/dense/blk_bna/bn/beta:0 +decoder.hv.u2.dense.blk_bna.bn.running_mean,hv/u2/dense/blk_bna/bn/mean/EMA:0 +decoder.hv.u2.dense.blk_bna.bn.running_var,hv/u2/dense/blk_bna/bn/variance/EMA:0 +decoder.hv.u2.convf.weight,hv/u2/convf/W:0 +decoder.hv.u1.conva.weight,hv/u1/conva/W:0 +decoder.hv.u0.bn.weight,preact_out_hv/bn/gamma:0 +decoder.hv.u0.bn.bias,preact_out_hv/bn/beta:0 +decoder.hv.u0.bn.running_mean,preact_out_hv/bn/mean/EMA:0 +decoder.hv.u0.bn.running_var,preact_out_hv/bn/variance/EMA:0 +decoder.hv.u0.conv.weight,conv_out_hv/W:0 +decoder.hv.u0.conv.bias,conv_out_hv/b:0