mirror of
https://github.com/open-mmlab/mmsegmentation.git
synced 2025-06-03 22:03:48 +08:00
Add test tutorial (#9)
* add test tutorial * remote torch/torchvision from requirements * update getting started * rename drop_out_ratio -> dropout_ratio
This commit is contained in:
parent
b72a6d00ef
commit
b975d3b72a
@ -22,7 +22,7 @@ model = dict(
|
||||
project_channels=256,
|
||||
query_scales=(1, ),
|
||||
key_pool_scales=(1, 3, 6, 8),
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -35,7 +35,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -20,7 +20,7 @@ model = dict(
|
||||
in_index=3,
|
||||
channels=512,
|
||||
recurrence=2,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -33,7 +33,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -20,7 +20,7 @@ model = dict(
|
||||
in_index=3,
|
||||
channels=512,
|
||||
pam_channels=64,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -33,7 +33,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -20,7 +20,7 @@ model = dict(
|
||||
in_index=3,
|
||||
channels=512,
|
||||
dilations=(1, 12, 24, 36),
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -33,7 +33,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -22,7 +22,7 @@ model = dict(
|
||||
dilations=(1, 12, 24, 36),
|
||||
c1_in_channels=256,
|
||||
c1_channels=48,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -35,7 +35,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -22,7 +22,7 @@ model = dict(
|
||||
num_codes=32,
|
||||
use_se_loss=True,
|
||||
add_lateral=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -37,7 +37,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -41,7 +41,7 @@ model = dict(
|
||||
kernel_size=1,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -21,7 +21,7 @@ model = dict(
|
||||
channels=512,
|
||||
num_convs=2,
|
||||
concat_input=True,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -34,7 +34,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -22,7 +22,7 @@ model = dict(
|
||||
ratio=1 / 4.,
|
||||
pooling_type='att',
|
||||
fusion_types=('channel_add', ),
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -35,7 +35,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -19,7 +19,7 @@ model = dict(
|
||||
in_channels=2048,
|
||||
in_index=3,
|
||||
channels=512,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
reduction=2,
|
||||
use_scale=True,
|
||||
mode='embedded_gaussian',
|
||||
@ -35,7 +35,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -43,7 +43,7 @@ model = dict(
|
||||
kernel_size=1,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -56,7 +56,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
channels=512,
|
||||
ocr_channels=256,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -25,7 +25,7 @@ model = dict(
|
||||
shrink_factor=2,
|
||||
normalization_factor=1.0,
|
||||
psa_softmax=True,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -38,7 +38,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -20,7 +20,7 @@ model = dict(
|
||||
in_index=3,
|
||||
channels=512,
|
||||
pool_scales=(1, 2, 3, 6),
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -33,7 +33,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -20,7 +20,7 @@ model = dict(
|
||||
in_index=[0, 1, 2, 3],
|
||||
pool_scales=(1, 2, 3, 6),
|
||||
channels=512,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -33,7 +33,7 @@ model = dict(
|
||||
channels=256,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
num_classes=19,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -13,7 +13,7 @@ model = dict(decode_head=[
|
||||
kernel_size=1,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -26,7 +26,7 @@ model = dict(decode_head=[
|
||||
input_transform='resize_concat',
|
||||
channels=512,
|
||||
ocr_channels=256,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -14,7 +14,7 @@ model = dict(decode_head=[
|
||||
kernel_size=1,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -27,7 +27,7 @@ model = dict(decode_head=[
|
||||
input_transform='resize_concat',
|
||||
channels=512,
|
||||
ocr_channels=256,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -14,7 +14,7 @@ model = dict(decode_head=[
|
||||
kernel_size=1,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -27,7 +27,7 @@ model = dict(decode_head=[
|
||||
input_transform='resize_concat',
|
||||
channels=512,
|
||||
ocr_channels=256,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -13,7 +13,7 @@ model = dict(decode_head=[
|
||||
kernel_size=1,
|
||||
num_convs=1,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
@ -26,7 +26,7 @@ model = dict(decode_head=[
|
||||
input_transform='resize_concat',
|
||||
channels=512,
|
||||
ocr_channels=256,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
norm_cfg=norm_cfg,
|
||||
align_corners=False,
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=19,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=21,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -18,7 +18,7 @@ model = dict(
|
||||
num_convs=1,
|
||||
norm_cfg=norm_cfg,
|
||||
concat_input=False,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
@ -31,7 +31,7 @@ model = dict(
|
||||
input_transform='resize_concat',
|
||||
in_index=(0, 1, 2, 3),
|
||||
norm_cfg=norm_cfg,
|
||||
drop_out_ratio=-1,
|
||||
dropout_ratio=-1,
|
||||
num_classes=150,
|
||||
align_corners=False,
|
||||
loss_decode=dict(
|
||||
|
@ -224,8 +224,8 @@ log_config = dict( # config to register logger hook
|
||||
dist_params = dict(backend='nccl') # Parameters to setup distributed training, the port can also be set.
|
||||
log_level = 'INFO' # The level of logging.
|
||||
load_from = None # load models as a pre-trained model from a given path. This will not resume training.
|
||||
resume_from = None # Resume checkpoints from a given path, the training will be resumed from the epoch when the checkpoint's is saved.
|
||||
workflow = [('train', 1)] # Workflow for runner. [('train', 1)] means there is only one workflow and the workflow named 'train' is executed once. The workflow trains the model by 12 epochs according to the total_epochs.
|
||||
resume_from = None # Resume checkpoints from a given path, the training will be resumed from the iteration when the checkpoint's is saved.
|
||||
workflow = [('train', 1)] # Workflow for runner. [('train', 1)] means there is only one workflow and the workflow named 'train' is executed once. The workflow trains the model by 40000 iterations according to the total_iters.
|
||||
cudnn_benchmark = True # Whether use cudnn_benchmark to speed up, which is fast for fixed input size.
|
||||
optimizer = dict( # Config used to build optimizer, support all the optimizers in PyTorch whose arguments are also the same as those in PyTorch
|
||||
type='SGD', # Type of optimizers, refer to https://github.com/open-mmlab/mmcv/blob/master/mmcv/runner/optimizer/default_constructor.py#L13 for more details
|
||||
|
@ -125,23 +125,34 @@ Assume that you have already downloaded the checkpoints to the directory `checkp
|
||||
--eval mAP
|
||||
```
|
||||
|
||||
4. Test PSPNet with 8 GPUs, and evaluate the standard mIoU and cityscapes metric.
|
||||
4. Test PSPNet with 4 GPUs, and evaluate the standard mIoU and cityscapes metric.
|
||||
|
||||
```shell
|
||||
./tools/dist_test.sh configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py \
|
||||
checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth \
|
||||
8 --out results.pkl --eval mIoU cityscapes
|
||||
4 --out results.pkl --eval mIoU cityscapes
|
||||
```
|
||||
|
||||
5. Test PSPNet on cityscapes test split with 8 GPUs, and generate the png files to be submit to the official evaluation server.
|
||||
5. Test PSPNet on cityscapes test split with 4 GPUs, and generate the png files to be submit to the official evaluation server.
|
||||
|
||||
First, add following to config file `configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py`,
|
||||
|
||||
```python
|
||||
data = dict(
|
||||
test=dict(
|
||||
img_dir='leftImg8bit/test',
|
||||
ann_dir='gtFine/test'))
|
||||
```
|
||||
Then run test.
|
||||
|
||||
```shell
|
||||
./tools/dist_test.sh configs/pspnet/pspnet_r50-d8_512x1024_40k_cityscapes.py \
|
||||
checkpoints/pspnet_r50-d8_512x1024_40k_cityscapes_20200605_003338-2966598c.pth \
|
||||
8 --format-only --options "imgfile_prefix=./pspnet_test_results"
|
||||
4 --format-only --options "imgfile_prefix=./pspnet_test_results"
|
||||
```
|
||||
|
||||
You will get png files under `./pspnet_test_results` directory.
|
||||
You may run `zip -r results.zip pspnet_test_results/` and submit the zip file to [evaluation server](https://www.cityscapes-dataset.com/submit/).
|
||||
|
||||
|
||||
### Image demo
|
||||
@ -205,8 +216,10 @@ By default we evaluate the model on the validation set after some iterations, yo
|
||||
evaluation = dict(interval=4000) # This evaluate the model per 4000 iterations.
|
||||
```
|
||||
|
||||
**\*Important\***: The default learning rate in config files is for 8 GPUs and 1 img/gpu (batch size = 8x1 = 8).
|
||||
Equivalently, you may also use 4 GPUs and 2 imgs/gpu since all models using cross-GPU SyncBN.
|
||||
**\*Important\***: The default learning rate in config files is for 4 GPUs and 2 img/gpu (batch size = 4x2 = 8).
|
||||
Equivalently, you may also use 8 GPUs and 1 imgs/gpu since all models using cross-GPU SyncBN.
|
||||
|
||||
To trade speed with GPU memory, you may pass in `--options model.backbone.with_cp=True` to enable checkpoint in backbone.
|
||||
|
||||
### Train with a single GPU
|
||||
|
||||
|
@ -61,6 +61,7 @@ class CityscapesDataset(CustomDataset):
|
||||
list[str: str]: result txt files which contains corresponding
|
||||
semantic segmentation images.
|
||||
"""
|
||||
mmcv.mkdir_or_exist(imgfile_prefix)
|
||||
result_files = []
|
||||
prog_bar = mmcv.ProgressBar(len(self))
|
||||
for idx in range(len(self)):
|
||||
@ -135,9 +136,9 @@ class CityscapesDataset(CustomDataset):
|
||||
the prefix of filename, e.g., "a/b/prefix".
|
||||
If results are evaluated with cityscapes protocol, it would be
|
||||
the prefix of output png files. The output files would be
|
||||
png images under folder "a/b/prefix/xxx/", where "xxx" is the
|
||||
video name of cityscapes. If not specified, a temp file will
|
||||
be created.
|
||||
png images under folder "a/b/prefix/xxx.png", where "xxx" is
|
||||
the image name of cityscapes. If not specified, a temp file
|
||||
will be created for evaluation.
|
||||
Default: None.
|
||||
|
||||
Returns:
|
||||
|
@ -17,7 +17,7 @@ class BaseDecodeHead(nn.Module, metaclass=ABCMeta):
|
||||
in_channels (int|Sequence[int]): Input channels.
|
||||
channels (int): Channels after modules, before conv_seg.
|
||||
num_classes (int): Number of classes.
|
||||
drop_out_ratio (float): Ratio of dropout layer. Default: 0.1.
|
||||
dropout_ratio (float): Ratio of dropout layer. Default: 0.1.
|
||||
conv_cfg (dict|None): Config of conv layers. Default: None.
|
||||
norm_cfg (dict|None): Config of norm layers. Default: None.
|
||||
act_cfg (dict): Config of activation layers.
|
||||
@ -46,7 +46,7 @@ class BaseDecodeHead(nn.Module, metaclass=ABCMeta):
|
||||
channels,
|
||||
*,
|
||||
num_classes,
|
||||
drop_out_ratio=0.1,
|
||||
dropout_ratio=0.1,
|
||||
conv_cfg=None,
|
||||
norm_cfg=None,
|
||||
act_cfg=dict(type='ReLU'),
|
||||
@ -63,7 +63,7 @@ class BaseDecodeHead(nn.Module, metaclass=ABCMeta):
|
||||
self._init_inputs(in_channels, in_index, input_transform)
|
||||
self.channels = channels
|
||||
self.num_classes = num_classes
|
||||
self.drop_out_ratio = drop_out_ratio
|
||||
self.dropout_ratio = dropout_ratio
|
||||
self.conv_cfg = conv_cfg
|
||||
self.norm_cfg = norm_cfg
|
||||
self.act_cfg = act_cfg
|
||||
@ -77,8 +77,8 @@ class BaseDecodeHead(nn.Module, metaclass=ABCMeta):
|
||||
self.sampler = None
|
||||
|
||||
self.conv_seg = nn.Conv2d(channels, num_classes, kernel_size=1)
|
||||
if drop_out_ratio > 0:
|
||||
self.dropout = nn.Dropout2d(drop_out_ratio)
|
||||
if dropout_ratio > 0:
|
||||
self.dropout = nn.Dropout2d(dropout_ratio)
|
||||
else:
|
||||
self.dropout = None
|
||||
|
||||
|
@ -1,3 +1,2 @@
|
||||
# These must be installed before building mmsegmentation
|
||||
numpy
|
||||
# torch
|
||||
|
@ -1,4 +1,2 @@
|
||||
matplotlib
|
||||
numpy
|
||||
# torch
|
||||
# torchvision
|
||||
|
@ -71,7 +71,7 @@ def test_decode_head():
|
||||
assert hasattr(head, 'dropout') and head.dropout.p == 0.1
|
||||
|
||||
# test set dropout
|
||||
head = BaseDecodeHead(32, 16, num_classes=19, drop_out_ratio=0.2)
|
||||
head = BaseDecodeHead(32, 16, num_classes=19, dropout_ratio=0.2)
|
||||
assert hasattr(head, 'dropout') and head.dropout.p == 0.2
|
||||
|
||||
# test no input_transform
|
||||
|
@ -4,7 +4,6 @@ CONFIG=$1
|
||||
CHECKPOINT=$2
|
||||
GPUS=$3
|
||||
PORT=${PORT:-29500}
|
||||
$CONFIG\/$GPUS/
|
||||
PYTHONPATH="$(dirname $0)/..":$PYTHONPATH \
|
||||
python -m torch.distributed.launch --nproc_per_node=$GPUS --master_port=$PORT \
|
||||
$(dirname "$0")/test.py $CONFIG $CHECKPOINT --launcher pytorch ${@:4}
|
||||
|
@ -31,6 +31,7 @@ def main():
|
||||
raise ValueError('invalid input shape')
|
||||
|
||||
cfg = Config.fromfile(args.config)
|
||||
cfg.model.pretrained = None
|
||||
model = build_segmentor(
|
||||
cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg).cuda()
|
||||
model.eval()
|
||||
|
Loading…
x
Reference in New Issue
Block a user