easton-cau / SOTR

SOTR: Segmenting Objects with Transformers
MIT License
193 stars 32 forks source link

关于测试demo的问题 #3

Closed Anglechina closed 3 years ago

Anglechina commented 3 years ago

尊敬的作者您好,我想使用自己的图片测试您这里的demo程序,但是参数一致填不对,pth文件已经下载,是否方便给一个使用demo.py测试的示例呢

easton-cau commented 3 years ago
  1. rewrite demo.py:
import argparse
import multiprocessing as mp
import time
from detectron2.data.detection_utils import read_image
from detectron2.utils.logger import setup_logger
from predictor import VisualizationDemo
from adet.config import get_cfg

# constants
WINDOW_NAME = "COCO detections"

def setup_cfg(args):
    cfg = get_cfg()
    cfg.merge_from_file(args.config_file)
    cfg.merge_from_list(args.opts)
    cfg.freeze()
    return cfg

def get_parser():
    parser = argparse.ArgumentParser(description="Detectron2 Demo")
    parser.add_argument(
        "--config-file",
        # 1. yaml path:
        default="/data/SOTR/configs/SOTR/R101.yaml",
        metavar="FILE",
        help="path to config file",
    )
    parser.add_argument(
        "--opts",
        help="Modify config options using the command-line 'KEY VALUE' pairs",
        # 2. weight path:
        default=['MODEL.WEIGHTS', '/data/SOTR/tools/output/SOTR_R101/SOTR_R101.pth'],
        nargs=argparse.REMAINDER,
    )
    return parser

if __name__ == "__main__":
    mp.set_start_method("spawn", force=True)
    args = get_parser().parse_args()
    logger = setup_logger()
    logger.info("Arguments: " + str(args))
    cfg = setup_cfg(args)
    demo = VisualizationDemo(cfg)

    # 3. image path:
    img_path = "/data/SOTR/demo/demo.jpg"
    img = read_image(img_path, format="BGR")
    start_time = time.time()
    predictions, visualized_output = demo.run_on_image(img)
    logger.info(
        "{}: detected {} instances in {:.2f}s".format(
            img_path, len(predictions["instances"]), time.time() - start_time
        )
    )
    # 4. output path:
    visualized_output.save("/data/SOTR/demo/output/output.png")
  1. modify SOTR/adet/config/defaults.py(line 111)
_C.MODEL.SOTR.CONFIDENCE_SCORE = 0.25
  1. modify SOTR/adet/modeling/sotr/sotr.py (line 52 and line 498)
self.confidence_score = cfg.MODEL.SOTR.CONFIDENCE_SCORE
if not self.training:
    keep_ = cate_scores > self.confidence_score
    cate_scores = cate_scores[keep_]
    cate_labels = cate_labels[keep_]
    seg_masks = seg_masks[keep_]
lucasjinreal commented 2 years ago

How’s the time vs solov2 ?