A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mmsegmentation.readthedocs.io/en/latest/notes/faq.html below:

Frequently Asked Questions (FAQ) — MMSegmentation 1.2.2 documentation

Frequently Asked Questions (FAQ)

We list some common troubles faced by many users and their corresponding solutions here. Feel free to enrich the list if you find any frequent issues and have ways to help others to solve them. If the contents here do not cover your issue, please create an issue using the provided templates and make sure you fill in all required information in the template.

Installation

The compatible MMSegmentation, MMCV and MMEngine versions are as below. Please install the correct versions of them to avoid installation issues.

MMSegmentation version MMCV version MMEngine version MMClassification (optional) version MMDetection (optional) version dev-1.x branch mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 main branch mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.2.2 mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.2.1 mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.2.0 mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.1.2 mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.1.1 mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.1.0 mmcv >= 2.0.0 MMEngine >= 0.7.4 mmpretrain>=1.0.0rc7 mmdet >= 3.0.0 1.0.0 mmcv >= 2.0.0rc4 MMEngine >= 0.7.1 mmcls==1.0.0rc6 mmdet >= 3.0.0 1.0.0rc6 mmcv >= 2.0.0rc4 MMEngine >= 0.5.0 mmcls>=1.0.0rc0 mmdet >= 3.0.0rc6 1.0.0rc5 mmcv >= 2.0.0rc4 MMEngine >= 0.2.0 mmcls>=1.0.0rc0 mmdet>=3.0.0rc6 1.0.0rc4 mmcv == 2.0.0rc3 MMEngine >= 0.1.0 mmcls>=1.0.0rc0 mmdet>=3.0.0rc4, \<=3.0.0rc5 1.0.0rc3 mmcv == 2.0.0rc3 MMEngine >= 0.1.0 mmcls>=1.0.0rc0 mmdet>=3.0.0rc4, \<=3.0.0rc5 1.0.0rc2 mmcv == 2.0.0rc3 MMEngine >= 0.1.0 mmcls>=1.0.0rc0 mmdet>=3.0.0rc4, \<=3.0.0rc5 1.0.0rc1 mmcv >= 2.0.0rc1, \<=2.0.0rc3> MMEngine >= 0.1.0 mmcls>=1.0.0rc0 Not required 1.0.0rc0 mmcv >= 2.0.0rc1, \<=2.0.0rc3> MMEngine >= 0.1.0 mmcls>=1.0.0rc0 Not required

Notes:

How to know the number of GPUs needed to train the model What does the auxiliary head mean

Briefly, it is a deep supervision trick to improve the accuracy. In the training phase, decode_head is for decoding semantic segmentation output, auxiliary_head is just adding an auxiliary loss, the segmentation result produced by it has no impact to your model’s result, it just works in training. You may read this paper for more information.

How to output the segmentation mask image when running the test script

In the test script, we provide --out argument to control whether output the painted images. Users might run the following command:

python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} --out ${OUTPUT_DIR}
How to handle binary segmentation task

MMSegmentation uses num_classes and out_channels to control output of last layer self.conv_seg. More details could be found here.

num_classes should be the same as number of types of labels, in binary segmentation task, dataset only has two types of labels: foreground and background, so num_classes=2. out_channels controls the output channel of last layer of model, it usually equals to num_classes. But in binary segmentation task, there are two solutions:

In summary, to implement binary segmentation methods users should modify below parameters in the decode_head and auxiliary_head configs. Here is a modification example of pspnet_unet_s5-d16.py:

decode_head=dict(
    type='PSPHead',
    in_channels=64,
    in_index=4,
    num_classes=2,
    out_channels=2,
    loss_decode=dict(
        type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0)),
auxiliary_head=dict(
    type='FCNHead',
    in_channels=128,
    in_index=3,
    num_classes=2,
    out_channels=2,
    loss_decode=dict(
        type='CrossEntropyLoss', use_sigmoid=False, loss_weight=0.4)),
decode_head=dict(
    type='PSPHead',
    in_channels=64,
    in_index=4,
    num_classes=2,
    out_channels=1,
    loss_decode=dict(
        type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0)),
auxiliary_head=dict(
    type='FCNHead',
    in_channels=128,
    in_index=3,
    num_classes=2,
    out_channels=1,
    loss_decode=dict(
        type='CrossEntropyLoss', use_sigmoid=True, loss_weight=0.4)),
Functionality of reduce_zero_label

The parameter type of reduce_zero_label in dataset is Boolean, which is default to False. It is used to ignore the dataset label 0. The specific method is to change label 0 to 255, and subtract 1 from the corresponding number of all the remaining labels. At the same time, set 255 as ignore index in the decode head, which means that it will not participate in the loss calculation.

Following is the specific implementation logic of reduce_zero_label:

if self.reduce_zero_label:
    # avoid using underflow conversion
    gt_semantic_seg[gt_semantic_seg == 0] = 255
    gt_semantic_seg = gt_semantic_seg - 1
    gt_semantic_seg[gt_semantic_seg == 254] = 255

Whether your dataset needs to use reduce_zero_label, there are two types of situations:

Note: Please confirm the number of original classes in the dataset. If there are only two classes, you should not use reduce_zero_label which is reduce_zero_label=False.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4