Skip to content

Latest commit

ย 

History

199 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

KonanXAI

  • Explain(GradCAM, GradCAM++, EigenCAM, LRP, YOLOLRP)
  • Train(ResNet50, VGG19)
    • Default, ABN, DomainGeneralization

Dtrain, DarkNet ์‚ฌ์šฉ์‹œ

  • Dtrain ์„ค์น˜ ๋ฐฉ๋ฒ•

    • git clone http://10.10.16.165:6272/vision-ai-lab/kai2021.git
    • cd kai2021
    • git checkout releases_xai
    • visual studio 2019๋ฅผ ํ†ตํ•œ ๋นŒ๋“œ ํ˜น์€ ๋นŒ๋“œ๋œ ์••์ถ•ํŒŒ์ผ์„ kai2021/out/ ๊ฒฝ๋กœ์— ์••์ถ•ํ•ด์ œ ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒฝ๋กœ๋ฅผ ๋งž์ถค(ex: C:\Users\user\kai2021\out\Release)
    • C:\Users\user\kai2021\source\python ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์—ฌ pip install . ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ API ์„ค์น˜
  • DarkNet ์„ค์น˜ ๋ฐฉ๋ฒ•

    • git clone http://10.10.18.132:6118/vision-recognition-team/xai_darknet.git
    • cd xai_darknet
    • cuda 11ํ™˜๊ฒฝ์˜ ๊ฒฝ์šฐ: git checkout dev_cuda_11x_wt
    • cuda 12ํ™˜๊ฒฝ์˜ ๊ฒฝ์šฐ: git checkout dev_cuda_12x_wt
    • pip install . ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Darknet ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ API ์„ค์น˜

์‚ฌ์šฉ๋ฒ•

  • project ํŒŒ์ผ์— ์‚ฌ์šฉํ•  yamlํŒŒ์ผ ์ž‘์„ฑ
  • main.py์— ์ƒ์„ฑํ•œ yaml ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ •
  • ์ตœ์ƒ๋‹จ ๋ฃจํŠธ์—์„œ main.py ์‹คํ–‰

Yaml ํŒŒ์ผ ์ž‘์„ฑ ์š”๋ น

  • yamlํŒŒ์ผ์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ ๋ฉ๋‹ˆ๋‹ค.

    • head

    • train or explain

  • ๋งŒ์•ฝ ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ ~ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(None ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•จ)

  • head์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • project_type:

      • ํ•™์Šต์„ ์›ํ•  ๊ฒฝ์šฐ train, attribution์„ ์›ํ•  ๊ฒฝ์šฐ explain์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) "train"
    • save_path:

      • ์ €์žฅ๋  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) "./heatmap/"
    • weight_path:

      • ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ๋ชจ๋ธ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) "./yolov5s.pt"
    • cfg_path:

      • yolo๋ชจ๋ธ์„ ์„ ํƒํ•  ๊ฒฝ์šฐ yamlํŒŒ์ผ ํ˜น์€ cfgํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) "./yolov5s.yaml"
    • data_resize:

      • ๋ชจ๋ธ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์žฌ์„ค์ • ํ•ฉ๋‹ˆ๋‹ค. tuple ํ˜น์€ list ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) [224,224] or (224,224)
    • data_path:

      • ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) "D:/Datasets/ai_fire/train"
    • model_name:

      • ์‚ฌ์šฉํ•  ๋ชจ๋ธ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (torchvision์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ’€๋„ค์ž„์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค)
      • ex) vgg19, resnet50, efficientnet_b0, yolov5s
    • framework:

      • ์–ด๋–ค ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) torch, darknet
    • source:

      • ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ex) torchvision, github, local
        • torchvision์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ํด๋”์˜ .cacheํด๋”์— ๋‹ค์šด๋กœ๋“œ ๋ฉ๋‹ˆ๋‹ค.
        • github์„ ์„ ํƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ด๋‹น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ .cache ํด๋”์— ๋‹ค์šด๋กœ๋“œ ๋ฉ๋‹ˆ๋‹ค.
        • local์„ ์„ ํƒํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ repo_or_dir ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋ชจ๋ธ์„ load ํ•ฉ๋‹ˆ๋‹ค.
    • repo_or_local:

      • repo ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ• ์ง€ local ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ๋‚ด์šฉ ์ถ”๊ฐ€ ํ•„์š”
    • cache_or_local:

      • .cache ๊ฒฝ๋กœ์— ์ €์žฅํ• ์ง€, ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๊ฒฝ๋กœ์— ์ €์žฅํ• ์ง€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ex) cache, "์ €์žฅ๋  ๊ฒฝ๋กœ"
    • data_type:

      • datasets์„ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„๋œ dataloader๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ์…‹์— ๋งž๊ฒŒ ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • ex) CUSTOM, AI_FIRE ๋“ฑ
  • explain์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • algorithm:

      • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ex) gradcam, eigencam, gradcampp, lrp, lrpyolo ๋“ฑ
    • target_layer:

      • cam๋ฐฉ์‹์ผ ๊ฒฝ์šฐ hook์˜ ๋Œ€์ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) [layer4,'2',relu]
    • rule:

      • lrp์˜ ๊ฒฝ์šฐ ์–ด๋–ค rule์„ ์‚ฌ์šฉํ• ์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) Epsilon
  • train์˜ ํ•„์ˆ˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • epoch:

      • ํ•™์Šตํ•  ํšŸ์ˆ˜๋ฅผ ์ง€์ • ํ•ฉ๋‹ˆ๋‹ค.
      • ex) 50
    • learning_rate:

      • ํ•™์Šต๋ฅ ์— ๋Œ€ํ•œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) 0.0001
    • batch_size:

      • ํ•œ๋ฒˆ์— ๋ช‡์žฅ์”ฉ ์ฒ˜๋ฆฌํ•  ์ง€ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ex) 128
    • optimizer:

      • optimizer๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ex) adam
    • loss_function:

      • ์†์‹คํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ex) crossentropyloss
    • save_step:

      • ํ•™์Šต๋œ ๋ชจ๋ธ์„ n๋ฒˆ ๊ฐ„๊ฒฉ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      • ex) 10
    • improvement_algorithm:

      • ABN, DG ๋“ฑ ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•„์š”ํ•œ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ํ•˜์œ„ ๋ชจ๋“ˆ์—๋Š” algorithm, transefer_weights, gpu_count ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
      • algorithm์€ abn, default, domaingeneralization ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
        • ex) abn
      • trainsfer_weights๋Š” ์ „์ดํ•™์Šต ์‹œํ‚ฌ ๋ชจ๋ธ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
        • ex) "./checkpoint/default_resnet50_10ep.pt"
      • gpu_count ๋Š” ํ•™์Šต์— ์‚ฌ์šฉ๋  gpu์˜ ์ˆซ์ž๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
        • ํ˜„์žฌ๋Š” 0๋ฒˆ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€ ์ˆซ์ž๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
        • ex) 3์ผ ๊ฒฝ์šฐ 0,1,2 gpu ์‚ฌ์šฉ

Example YAML[single explain] and JSON[multi explain]

  • yaml ํŒŒ์ผ์˜ ๊ฒฝ์šฐ main.py ์‹คํ–‰
  • json์˜ ๊ฒฝ์šฐ main_multi.py ์‹คํ–‰
  • Explain GradCAM for ResNet50 [YAML]

    head:
    project_type: 'explain'
    save_path: "./heatmap/"
    weight_path: "./resnet50-0676ba61.pth"
    cfg_path: ~
    data_path: "./data"
    data_resize: [224,224]
    model_name: resnet50
    framework: torch
    source: torchvision
    repo_or_dir: ~
    cache_or_local: cache
    data_type: CUSTOM
    
    explain:
    algorithm: GradCAM
    model_algorithm: Default
    target_layer: [layer4,'2',relu]
    
  • Train for ResNet50 [YAML]

    head:
    project_type: 'train'
    save_path: "./checkpoint"
    weight_path: ~
    # weight_path: "./resnet50-0676ba61.pth"
    cfg_path: ~
    data_resize: [224,224]
    data_path: "D:/Datasets/ai_fire/train_lite"
    model_name: resnet50
    framework: torch
    source: torchvision
    repo_or_dir: ~
    cache_or_local: cache
    data_type: AI_FIRE
    
    train:
    epoch: 10
    learning_rate: 0.0001
    batch_size: 128
    optimizer: 'adam'
    loss_function: 'CrossEntropyLoss'
    save_step: 1
    improvement_algorithm: { 
        algorithm: Default,
        transfer_weights: ~,
        gpu_count: 1
    }
    
  • Multi Explain and Evaluation [JSON]

    • explain: gradcam, lime, guidedgradcam
    • evaluation: AbPC, Sensitivity
    {
    "job_infos": [
        {
        "job_type": "evaluation",
        "model_type": "xai",
        "inputs": [
            {
            "model_info": {
                "framework": "torch",
                "weight_path": "D:/xai_refactoring/resnet50-0676ba61.pth",
                "cfg_path": null,
                "num_classes": 1000,
                "repo_or_dir": "C:/Users/jaehyeok/.cache/torch/hub/pytorch_vision_v0.11.0",
                "model_algorithm": "default",
                "model_name": "resnet50"
            },
            "data_info": {
                "data_path": "D:/xai_refactoring/data",
                "data_type": "CUSTOM",
                "resize": [224,224]
            },
            "type_config": {
                "algorithm_name": ["gradcam","lime","guidedgradcam"],
                "metric": ["ABPC", "sensitivity"],
                "gradcam": {"model_algorithm": "Default",
                            "target_layer": ["layer4","2","relu"]},
                "lime": {"model_algorithm": "Default",
                            "segments": {"algo_type": "slic", "n_segments": 40, "compactnes": 2, "sigma": 3},
                            "seed": 415,
                            "num_samples": 40,
                            "num_features": 10,
                            "positive_only": true,
                            "hide_rest": true},
                "guidedgradcam": {"model_algorithm": "Default",
                                    "target_layer": ["layer4","2","relu"]}
            }
            }
        ],
        "outputs": [
            {
            "volume": "D:/",
            "file_path": "save_test"
            }
        ]
        }
    ]
    }
    
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

15 watching

Forks

Releases

Packages

Used by

Contributors

Languages