AI 양재 허브 인공지능 오픈소스 경진대회

다들 어떤 방법 시도해보셨나요?

2022.10.11 11:30 3,012 Views

안녕하세요.

이번 대회에 참여하면서 초해상화를 처음 접했습니다. 제출한 결과도 순정 아키텍처로 학습한 결과입니다. 어떤 방법을 적용해봐야 할지 잘 모르겠더군요. 그래서 다른 분들이 어떤 방식으로 초해상화 퍼포먼스를 개선했는지 너무 궁금합니다... 최종 점수가 높지 않더라도, 점수를 개선한 방법이 있다면 공유해주시면 감사하겠습니다.


참고로 저는 단순하게 벤치마크 데이터에 대한 점수가 가장 높은 모델을 사용해 학습했는데요. 구체적으로는 paperswithcode에서 벤치마크 데이터에 대해 점수가 가장 높은 HAT-L 모델을 사용했습니다.  official 코드를 사용했고, 하이퍼파라미터도 dault 값을 설정해 90000번 iteration을 돌렸더니 public/private 모두 psnr 23 정도 나왔습니다.

논문 : Activating More Pixels in Image Super-Resolution Transformer (2022)

official 코드 : https://github.com/XPixelGroup/HAT

로그인이 필요합니다
0 / 1000
seareale
2022.10.11 13:14

저는 학습데이터셋 LR 이미지의 downscale 방식이 너무 제각각이라 restoration model를 거친 후 HAT 모델에 적용하였습니다. 저도 super resolution이 이번이 처음이라 순위권에 계신 분들의 방법이 매우 궁금하네요! 

psh30
2022.10.11 14:32

어떤 restoration model을 적용했는지 궁금하네요. Denoising이나 Deblurring을 하셨단 건가요?

seareale
2022.10.11 14:39

HR 이미지에서 특정 interpolation으로 생성한 이미지를 GT로 두고 NAFNet 사용하여 학습했습니다.

psh30
2022.10.11 16:50

생각지도 못한 방법이네요! base model보다 개선이 되던가요??

seareale
2022.10.11 16:55

HAT 모델만 사용 시 public 23.7 정도의 성능이었는데, NAFNet 추가해서 public 24.5 까지 올렸어요. HAT-L 모델을 학습해서 사용한다면 더 높은 성능을 기대할 수 있을 것 같아요.

c4big2
2022.10.11 18:02

멋진 방법입니다. 정보 감사합니다.ㅎ

탐앤탐스
2022.10.11 14:05

저희도 HAT-L 모델 사용했습니다.
다만 디폴트로 돌리셨다면 이터레이션이 적어보이네요. 
제 기억으로는 250k 돌리니까 25 정도 진입하고, 150k 일때 24.7 정도 나왔던것으로 기억합니다.

psh30
2022.10.11 14:28

대회 막바지에 급하게 돌렸던 터라 오래 학습시키지 못했는데 아쉽네요. GPU RTX 3090(메모리 24GB) 하나 사용했고, 배치 사이즈 3으로 설정해서 9k 돌리는데 이틀 이상 소요됐던 것 같습니다. 혹시 하드웨어 사양과 배치사이즈도 알려주실 수 있나요?

seareale
2022.10.11 14:44

대회에서 제공된 데이터셋 이외에 다른 데이터셋이나 추가 튜닝은 없으셨나요? 저는 HAT 모델이긴 하지만 235k 까지 학습시켰더니 23.5로 오히려 성능이 낮아졌습니다.

탐앤탐스
2022.10.11 14:41

v100 or a40 vram 40gb 이상 으로 batch size 4 돌렸습니다.
순수학습만 2주넘게 쓴거같네요. 

psh30
2022.10.11 16:50

일찍 학습했어야 했군요 ㅠㅠ

탐앤탐스
2022.10.11 14:46

여러가지 augmentation 이랑 lr degradation 기법 적용햇습니다.
추가 데이터도 넣어봤구요. 
안해도 HAT-L 자체가 25 근처까지는 갔엇구요 
했을때 0.5 포인트정도 올라갔는데 저도 시간이 부족해서 더 학습은 못했습니다. 그래프 보면 더 올라갈거같긴합니다. 
곧 정리해서 코드게시판에 올릴게요. 

seareale
2022.10.11 14:49

시간이 부족해서 HAT-L 모델은 아예 생각조차 안 했는데 성능 차이가 엄청나네요... HAT-L 모델을 사용하지 못 한게 아쉽네요 ㅠㅜ 코드 공유 기대하겠습니다!

탐앤탐스
2022.10.11 14:51

기존 hat 모델도 patch size 를 늘려주면 성능이 높아지더라구요 아무래도 트랜스포머 기반의 비전모델들이 패치를 너무 적게봐서 sr 태스크에서는 좀 힘을 못쓰는거같습니다. 

psh30
2022.10.11 16:53

어떻게 실험해보셨는지 궁금합니다 ㅎㅎ 코드 공유 기대할게요!

CEPILOTH
2022.10.11 16:34

오오 다들 ㅠㅠ 시간이 부족한다고 느끼는건 동일하네요

psh30
2022.10.11 16:54

저도 중간부터 시작해서... 학습 한번 해보니 마감이 코앞이었습니다 ㅠㅠ

모두연고인물
2022.10.11 17:27

Transformer 계열은 다양하고 방대한 데이터에 대해서는 효과적이지만 한정된 데이터에 대해서는 좋지 않을 것이라는 판단하에 (https://arxiv.org/abs/2010.11929) HAT을 사용하지 않았고요.
경험상 densenet이 효과적일 것이라 판단했고 BasicSR repository 안에 있는 rrdbnet(https://github.com/XPixelGroup/BasicSR/blob/master/basicsr/archs/rrdbnet_arch.py)을 baseline으로 사용했습니다.
대회가 PSNR만 보기때문에 GAN loss 등의 부가적인 loss는 다 떼고, L2 loss로만 학습하였습니다.
test image와 train image가 같은 카메라로 찍었고, lr을 만든 방식도 같다라는 가정하에 rotation, flip의 augmentation만을 사용했습니다.
트레이닝 때는 CLIP 모델 적용, network 구조변경, hyper-params 조정 등을 시도해보았고,
inference 때는 flip, rotation 등을 이용한 ensemble 등을 시도하였습니다.

CEPILOTH
2022.10.11 17:30

오오! 좋은 답변 감사합니다.

psh30
2022.10.11 22:58

굉장히 논리적이고 다양한 실험을 하신 것 같습니다!
혹시 코드 공유할 계획이 있으신가요? clip 모델 적용과 Ensemble Augmentation을 어떻게 적용하셨는지 궁금하네요

c4big2
2022.10.11 17:55

colab plus 환경에서 진행했어요. 
모델은 real-esrgan 사용하였습니다.
pretrained model 로 훈련없이 제출하면 20.8 정도 점수가 나왔더군요.

훈련)
1. psnr 을 위해서 perceptual loss 의 가중치를 매우 낮추어 학습을 진행했습니다.  
2. 그리고 real-esrgan 에서 usm the ground-truth 값을 전부 False 하였습니다. 이것 역시 perceptual 을 높이기 위한 기술이라 판단했거든요.
1, 2 를 조정하니 점수가 좀 올랐습니다.
그리고 몇몇 옵션들을 추가로 조정해서 (learning rate, crop size, ..) 학습이 진행 될 수록 계속 점수가 올라갔습니다.
  
train 의 hr 이미지를 가지고 lr degradation 을 만들어 훈련도 진행해보았으나 훈련시간이 좀 더 길어질거라 판단되어 
실제 진행은 train 데이터로만 하였습니다. (대회 중간에 colab 이 종량제가 되어서요. 긴 훈련은 엄두가 안났습니다.)

colab 이 종량제가 되어 a100 을 36시간 돌리면 컴퓨팅 파워를 추가로 돈주고 충전(pay as you go선택)해야 되네요..
대회 10등 안에 들면 재현을 위해 또 colab 결재를 해야 했기에 11등 밖으로 되길 빌었습니다. 크윽 ㅠㅠ

psh30
2022.10.11 23:03

종량제 때문에 10등 안에 들지 않길 빌어야 하다니... 웃픈 상황이네요