Sense-X / UniFormer

[ICLR2022] official implementation of UniFormer
Apache License 2.0
823 stars 111 forks source link

[segmentation]How to inference just using a single image? #26

Closed earsonlau closed 2 years ago

earsonlau commented 2 years ago

By default I gotta download ADEChallengeData2016 for testing the pre-trained model. Is there a easier way without set up a dataset, just use one image like the demo/inference_demo.ipynb do? when I use the inference_demo and the keyError is ""EncoderDecoder: 'UniFormer is not in the models registry'""

earsonlau commented 2 years ago

By the way, I try to use ade20k to test the model, using upernet_global_small.pth (https://drive.google.com/file/d/13hOneJiFqwEneUz1Zpqo1W2uv7BsoXGF). But see this error:

2022-03-14 20:48:19,772 - mmseg - INFO - Loaded 2000 images
Use Checkpoint: True
Checkpoint Number: [0, 0, 2, 0]
Use global window for all blocks in stage3
Use load_from_local loader
Traceback (most recent call last):
  File "tools/test.py", line 157, in <module>
    main()
  File "tools/test.py", line 125, in main
    model.CLASSES = checkpoint['meta']['CLASSES']
KeyError: 'meta'
earsonlau commented 2 years ago

the cmd I use : python tools/test.py '.../exp/upernet_global_small/test_config_g.py' '.../semantic_segmentation/ckpt/upernet_global_small.pth' --show-dir ./output.pn

Andy1621 commented 2 years ago

For EncoderDecoder: 'UniFormer is not in the models registry, maybe you do not import the model correctly. You have to import the model in __init__.py.

For KeyError: 'meta', it is my mistask to only save the model weights, since I think the meta can be obtained from the dataset. For fix such bug, you can set the meta manually.

The followed message can easily generated when training model on ADE.

checkpoint['meta']['CLASSES'] =  (
    'wall', 'building', 'sky', 'floor', 'tree', 'ceiling', 'road', 'bed ', 
    'windowpane', 'grass', 'cabinet', 'sidewalk', 'person', 'earth', 
    'door', 'table', 'mountain', 'plant', 'curtain', 'chair', 'car', 'water', 
    'painting', 'sofa', 'shelf', 'house', 'sea', 'mirror', 'rug', 'field', 
    'armchair', 'seat', 'fence', 'desk', 'rock', 'wardrobe', 'lamp', 
    'bathtub', 'railing', 'cushion', 'base', 'box', 'column', 'signboard', 
    'chest of drawers', 'counter', 'sand', 'sink', 'skyscraper', 'fireplace', 
    'refrigerator', 'grandstand', 'path', 'stairs', 'runway', 'case', 'pool table', 
    'pillow', 'screen door', 'stairway', 'river', 'bridge', 'bookcase', 'blind', 
    'coffee table', 'toilet', 'flower', 'book', 'hill', 'bench', 'countertop', 
    'stove', 'palm', 'kitchen island', 'computer', 'swivel chair', 'boat', 'bar', 
    'arcade machine', 'hovel', 'bus', 'towel', 'light', 'truck', 'tower', 'chandelier', 
    'awning', 'streetlight', 'booth', 'television receiver', 'airplane', 'dirt track', 
    'apparel', 'pole', 'land', 'bannister', 'escalator', 'ottoman', 'bottle', 'buffet', 
    'poster', 'stage', 'van', 'ship', 'fountain', 'conveyer belt', 'canopy', 'washer', 
    'plaything', 'swimming pool', 'stool', 'barrel', 'basket', 'waterfall', 'tent', 
    'bag', 'minibike', 'cradle', 'oven', 'ball', 'food', 'step', 'tank', 'trade name', 
    'microwave', 'pot', 'animal', 'bicycle', 'lake', 'dishwasher', 'screen', 'blanket', 
    'sculpture', 'hood', 'sconce', 'vase', 'traffic light', 'tray', 'ashcan', 'fan', 'pier', 
    'crt screen', 'plate', 'monitor', 'bulletin board', 'shower', 'radiator', 'glass', 'clock', 'flag'
)
checkpoint['meta']['PALETTE'] = [
    [120, 120, 120], [180, 120, 120], [6, 230, 230], [80, 50, 50], [4, 200, 3], [120, 120, 80], 
    [140, 140, 140], [204, 5, 255], [230, 230, 230], [4, 250, 7], [224, 5, 255], [235, 255, 7], 
    [150, 5, 61], [120, 120, 70], [8, 255, 51], [255, 6, 82], [143, 255, 140], [204, 255, 4], 
    [255, 51, 7], [204, 70, 3], [0, 102, 200], [61, 230, 250], [255, 6, 51], [11, 102, 255], 
    [255, 7, 71], [255, 9, 224], [9, 7, 230], [220, 220, 220], [255, 9, 92], [112, 9, 255], 
    [8, 255, 214], [7, 255, 224], [255, 184, 6], [10, 255, 71], [255, 41, 10], [7, 255, 255], 
    [224, 255, 8], [102, 8, 255], [255, 61, 6], [255, 194, 7], [255, 122, 8], [0, 255, 20], 
    [255, 8, 41], [255, 5, 153], [6, 51, 255], [235, 12, 255], [160, 150, 20], [0, 163, 255], 
    [140, 140, 140], [250, 10, 15], [20, 255, 0], [31, 255, 0], [255, 31, 0], [255, 224, 0], 
    [153, 255, 0], [0, 0, 255], [255, 71, 0], [0, 235, 255], [0, 173, 255], [31, 0, 255], 
    [11, 200, 200], [255, 82, 0], [0, 255, 245], [0, 61, 255], [0, 255, 112], [0, 255, 133], 
    [255, 0, 0], [255, 163, 0], [255, 102, 0], [194, 255, 0], [0, 143, 255], [51, 255, 0], 
    [0, 82, 255], [0, 255, 41], [0, 255, 173], [10, 0, 255], [173, 255, 0], [0, 255, 153], 
    [255, 92, 0], [255, 0, 255], [255, 0, 245], [255, 0, 102], [255, 173, 0], [255, 0, 20], 
    [255, 184, 184], [0, 31, 255], [0, 255, 61], [0, 71, 255], [255, 0, 204], [0, 255, 194], 
    [0, 255, 82], [0, 10, 255], [0, 112, 255], [51, 0, 255], [0, 194, 255], [0, 122, 255], 
    [0, 255, 163], [255, 153, 0], [0, 255, 10], [255, 112, 0], [143, 255, 0], [82, 0, 255], 
    [163, 255, 0], [255, 235, 0], [8, 184, 170], [133, 0, 255], [0, 255, 92], [184, 0, 255], 
    [255, 0, 31], [0, 184, 255], [0, 214, 255], [255, 0, 112], [92, 255, 0], [0, 224, 255], 
    [112, 224, 255], [70, 184, 160], [163, 0, 255], [153, 0, 255], [71, 255, 0], [255, 0, 163], 
    [255, 204, 0], [255, 0, 143], [0, 255, 235], [133, 255, 0], [255, 0, 235], [245, 0, 255], 
    [255, 0, 122], [255, 245, 0], [10, 190, 212], [214, 255, 0], [0, 204, 255], [20, 0, 255], 
    [255, 255, 0], [0, 153, 255], [0, 41, 255], [0, 255, 204], [41, 0, 255], [41, 255, 0], 
    [173, 0, 255], [0, 245, 255], [71, 0, 255], [122, 0, 255], [0, 255, 184], [0, 92, 255], 
    [184, 255, 0], [0, 133, 255], [255, 214, 0], [25, 194, 194], [102, 255, 0], [92, 0, 255]
]
Andy1621 commented 2 years ago

@earsonlau By the way, I have updated the pre-trained weights and save the meta, you can simply download the new model to fix this bug.

image
earsonlau commented 2 years ago

Thank you very much!