JSTASR: 크기와 투명도를 공동으로 인지하는 눈 제거 알고리즘
Chen 외(2020)의 ‘JSTASR: 수정된 부분 합성곱과 베일링 효과 제거에 기반한 크기 및 투명도 인지형 결합 눈 제거 알고리즘’ 논문 재현 연구, ECCV 2020 채택 본 문서는 AI 번역 기사입니다. 오역 가능성이 있으면 댓글로 알려주세요.
Created on September 12|Last edited on September 12
Comment
재현 가능성 요약
ECCV 2020 논문의 재현 가능성 챌린지 보고서입니다 "JSTASR: 수정된 부분 합성곱과 베일링 효과 제거에 기반한 크기 및 투명도 인식 통합 눈 제거 알고리즘" Chen 외(2020). 원본 코드는 공개되어 있습니다 여기이 논문은 이미지에서 눈이나 눈송이를 제거하는 것을 목표로 합니다. 제안된 모델은 합성 데이터셋은 물론 실제 환경의 이미지에서도 눈 제거 성능이 매우 우수하며, 눈이 포함된 이미지에서의 객체 탐지 성능 향상에도 기여합니다.
재현 범위
저자들은 새로운 대규모 눈 데이터셋인 “Snow Removal in Realistic Scenario (SRRS)”를 공개했으며, 이는 베일링 효과를 포함하고 있습니다. 해당 데이터셋은 다운로드할 수 있습니다. 여기저자들은 “Joint Size and Transparency-Aware Snow Removal(JSTASR)”라는 노이즈 제거 모델을 제안합니다. 이 방법은 이미지의 베일링 눈 효과를 제거하고, 다양한 눈 입자 크기를 식별해 처리하며, 투명도가 다른 눈까지 고려해 제거할 수 있습니다.
방법론
이 논문을 재현하기 위해 주로 새로 공개된 눈 데이터셋인 SRRS와 공개된 모델 가중치 및 코드를 사용했습니다 GitHub 저장소코드 저장소에 명시된 대로 데이터셋과 라이브러리를 설치한 후, 오류 없이 재현할 수 있었습니다. 제공된 테스트 이미지 위주로 결과를 재현했으며, 양호한 성능을 확인했습니다. 학습과 추론 과정에서 다양한 하이퍼파라미터를 기록하기 위해 Weights & Biases를 사용하려 했지만, 코드가 주로 Keras로 작성되어 W&B 지원이 제한적이어서 모든 파라미터를 w&b로 기록하지는 못했습니다.
결과
GPU를 사용해 논문에 보고된 주요 결과를 재현할 수 있었습니다. 우리가 얻은 주요 결과는 보고된 결과와 거의 일치합니다. 다만 케라스와 OpenCV의 구버전 의존성 때문에 적절한 버전을 설치하는 데 약간의 어려움이 있었으나, GitHub의 공개 이슈를 참고해 해결했습니다. 전반적으로 코드와 실험을 복제해 얻은 결과는 JSTASR가 이미지에서 눈을 효과적으로 제거할 수 있다는 저자들의 주장을 뒷받침합니다.
쉬웠던 점
공개된 데이터, 코드, 그리고 추출된 특성을 쉽게 찾을 수 있었기 때문에, 이 논문에서 참조한 코드와 실험을 이해하는 데 큰 어려움이 없었습니다. 모델이 작동하는 근거는 논문의 Training Detail 섹션과 코드의 README 파일에 모두 정리되어 있습니다. 코드에서는 네트워크가 단순화되어 있으며, 전체 과정이 다음과 같은 모듈로 나뉘어 있어 이해하기 쉽습니다: 눈 모델 정식화, 크기 및 투명도 인식 눈 제거, 베일링 효과 제거.
어려웠던 점
그들은 새로운 SRRS 데이터셋을 Google Drive에 업로드했는데, 파일 중 하나의 크기가 20GB에 달해 다운로드가 종종 어렵습니다. 대부분의 비전 애플리케이션에서는 거의 항상 PyTorch를 사용하지만, 해당 코드는 Keras, OpenCV, TensorFlow(게다가 매우 구버전)로 작성되어 있습니다. 그래서 코드를 이해하기에 앞서, 이 라이브러리에서 데이터와 모델 로딩이 어떻게 동작하는지 다시 확인하려고 Keras 문서를 먼저 살펴봐야 했습니다. 또한 Weights & Biases가 아직 Keras의 많은 기능을 지원하지 않기 때문에, 학습 중 모델의 진행 상황과 평가를 추적하는 주요 방법들을 포기해야 했습니다.
저자와의 소통
코드가 오픈소스로 공개되어 있고 재현도 수월해서, 저자들에게 별도로 연락할 필요는 없었습니다. 다만 저자들은 GitHub의 공개 이슈에도 활발히 응답하고 있습니다. 그들의 노력과 신속한 대응에 감사드립니다.
소개
이 보고서는 ECCV 2020 논문의 재현 연구입니다 "JSTASR: 수정된 부분 합성곱과 베일링 효과 제거에 기반한 크기 및 투명도 인식 통합 눈 제거 알고리즘" Chen 등(2020)
이 논문은 이미지에서 눈 또는 눈송이를 제거하는 새로운 기법을 소개합니다. 아울러 눈이 상당히 많이 포함된 새로운 이미지 데이터셋도 공개합니다. 저자들은 베일링 효과를 고려한 눈 모델을 재정식화하였고, 이후 이미지 내 다양한 형태, 크기, 스케일의 눈을 제거할 수 있는 크기 및 투명도 인식 눈 제거 알고리즘 JSTASR을 적용했습니다. 제안한 방법은 실제 이미지와 합성 이미지 데이터셋 모두에서 효과를 검증했으며, 기존 방법론 대비 유의미한 성능 향상을 보였습니다. 본 보고서는 논문에 제시된 내용을 재현하고, 매우 유사한 결과를 확인함으로써 그 주장을 뒷받침합니다.
재현 범위
이 논문은 눈 제거를 위한 JSTASR 방법을 제안하며, 주로 다음의 두 단계로 수행됩니다:
- 크기 인식 눈 식별자
- 투명도 인식 눈 제거
첫 번째 단계는 다양한 스케일의 눈을 생성하도록 돕고, 이 정보를 바탕으로 투명도 인식 모델이 서로 다른 투명도와 스케일을 모두 처리하여 눈을 제거할 수 있습니다. 추가로 세 번째 단계에서는 한 레이어에 미분 가능한 다크 채널을 추가해 모델에 내장하여 베일링 효과를 제거하며, 최종적으로 안정적으로 동작합니다.
방법론
이들의 방법론을 단계별로 자세히 살펴보겠습니다. 이해를 돕기 위해 다음과 같은 관점에서 살펴봅니다:
- 눈 모델 정식화 : 눈은 비, 구름, 안개 등과 달리 국소적으로 분포합니다. 둘째, 다른 대기 현상과 마찬가지로 눈에서도 베일링 효과가 발생합니다. 베일링 효과는 빛의 다중 산란으로 인해 발생하는 전역 조도 현상으로, 이미지가 더 흐릿해지고 노이즈가 증가합니다. 이 효과는 일반적으로 눈 제거 기법의 성능을 저해합니다. 이에 대해 다음과 같은 새로운 모델을 제안했습니다:
위 식에서 I는 카메라로 촬영된 이미지, K는 베일링 효과가 제거되었지만 눈 입자가 남아 있는 이미지, T는 매체 전송, A는 베일링 효과의 대기광을 의미합니다. 이 모델은 눈 픽셀이 수행하는 국소적 재구성까지 고려한다는 점에서 기존 눈 제거 알고리즘과 다릅니다. 따라서 결과 이미지는 더 날카롭고 경계가 뚜렷한 형태로 복원될 수 있습니다.
2. 크기 및 투명도 인식 결합형 눈 제거: JSTASR에서는 처음으로 크기 인식 눈 제거 모델을 설계했습니다. 탐지되는 가능한 크기 범주는 소형, 중형, 대형입니다. 세 가지 서로 다른 규모를 예측하기 위해, 서로 다른 합성곱과 디컨볼루션 층으로 구성된 세 개의 개별 네트워크가 사용됩니다. 이 아키텍처를 통해 이미지와 눈의 크기, 형태, 위치 정보를 추정할 수 있습니다. 이러한 정보를 바탕으로 정확한 눈 정보 맵(SIM)을 생성할 수 있습니다.
투명도 인식을 위해 이미지 인페인팅 기법을 적용합니다. 이는 눈으로 인해 이미지에 생긴 구멍을 메우는 방식입니다. JSTASR는 불규칙하거나 파손된 영역을 복원하기 위해 수정된 부분 합성곱을 사용합니다. 이 투명도 인식 아키텍처는 주로 U-Net에서 영감을 받았습니다. 인코더에서는 기존 부분 합성곱과 달리 멀티스케일 아키텍처를 채택했습니다. 디코더에서는 원래의 부분 합성곱과 다르게 멀티스케일 디컨볼루션과 업샘플링 연산을 함께 사용해 복원된 특징이 흐려지는 것을 방지합니다. 또한 생성기 네트워크의 성능을 높이기 위해 크기 인식 손실 함수도 추가했습니다.
3. 베일링 효과 제거 이 모듈에서는 정확한 전송률과 대기광 값을 추정하는 문제를 다룹니다. 앞서 설명했듯이, 이를 위해 패치 맵과 함께 미분 가능 암채널 우선값(DDCP) 레이어를 추가합니다. 기존 DDCP에는 흰색 또는 밝은 장면에서의 색 저하와 같은 여러 한계가 보고되었습니다. 이러한 문제를 극복하기 위해, 이들은 패치 맵 기반의 미분 가능 암채널 우선값 레이어를 도입하여 성능을 개선하고, 제안된 눈 제거 과정에 더 깊이 통합함으로써 완전한 엔드 투 엔드 학습을 달성합니다. 이 아키텍처에서는 백본으로 VGG-16을 사용하며, 각 합성곱을 멀티레벨 풀링으로 대체합니다.
데이터셋
기존에도 대규모 눈 데이터셋이 있었지만 베일링 효과를 포함하지 않아, 저자들은 Snow Removal in Realistic Scenario(SRRS)라는 새로운 데이터셋을 구축했으며 여기에는 눈의 베일링 효과도 포함됩니다. 이 데이터셋은 인공적으로 합성한 이미지 1만 5천 장과, 인터넷에서 수집한 실제 눈 이미지 1천 장으로 구성됩니다. 데이터셋 생성을 위해, 베일링 효과가 포함된 이미지를 합성하도록 널리 사용되는 안개 벤치마크 데이터셋인 RESIDE를 활용했습니다. 이후 각 눈 이미지에 대해 Photoshop으로 다양한 유형의 눈을 합성하고, 해당 눈 정보(투명도, 크기, 위치)를 라벨링했습니다. 이들 중 무작위로 2,500장을 학습용으로, 1,000장을 테스트용으로 선정하여 Test A로 명명했습니다. 또한 Test A와 동일한 이미지이되 눈의 베일링 효과를 제거한 버전을 별도로 만들어 Test B로 구성했습니다.
학습
이 모델은 크게 두 개의 서브네트워크로 구성되며, 하나는 JSTASR이고 다른 하나는 베일링 효과 제거 모듈입니다. 먼저 RESIDE 데이터셋 기반의 흐림(헤이즈) 이미지 2,500장을 사용해 베일링 효과 제거 모델을 학습한 뒤, 크기 인식 눈 식별기를 학습하여 눈 정보를 예측합니다. 이 두 과정은 고정된 베일링 효과 제거 네트워크를 사용해 사전 학습됩니다. 사전 학습이 완료되면, 두 서브네트워크를 함께 미세 조정 단계에서 공동 학습합니다.
하이퍼파라미터
재현 실험에서는 GitHub 저장소에 명시된 것과 동일한 하이퍼파라미터를 사용했습니다. 주요 설정 일부는 다음과 같습니다: 학습률은 0.0001로 설정했고, 모든 실험에서 ADAM 옵티마이저를 사용했습니다. 값은 그리고 각 에포크마다 학습 데이터의 15%를 검증 세트로 분할했습니다.
실험 설정
SRRS 데이터셋을 사용한 모든 학습 실험은 NVIDIA GeForce RTX 2080 Ti GPU에서 평가했습니다. 위에서 언급한 하이퍼파라미터 설정으로, 우리 GPU에서의 테스트는 수분 내에 완료되었습니다. 모든 실험은 저자들이 공개한 코드를 기반으로 수행했으며, 해당 코드는 그들의 GitHub 저장소.
결과
SRRS 데이터셋을 대상으로 눈 제거 작업을 위해 JSTASR을 재현했습니다. 평가에는 저자들이 공개한 사전 학습 모델을 사용했습니다. 생성된 결과 이미지는 논문에서 보고된 것과 유사했습니다.
논의
획득한 결과를 바탕으로, 우리는 JSTASR 논문에서 저자들이 제시한 주장을 검증하기에 충분한 근거를 확보했습니다. 이 방법은 기존의 눈 제거 기법들보다 큰 폭으로 우수한 성능을 보였으며, 현실적인 베일링 효과를 포함한 새로운 현실적 눈 제거 데이터셋도 함께 제시합니다. 다만 이러한 데이터셋을 구축하는 과정은 하나의 난관이 될 수 있습니다. 실제 환경에서 눈 이미지 수집이 어렵고, 포토샵으로 생성하더라도 현실감을 확보하기가 쉽지 않기 때문입니다. 또한 이 방법은 눈 제거 과정에서 눈의 위치 정보를 고려하므로, 복원된 이미지의 블러 현상을 효과적으로 방지할 수 있습니다. 실행 시간과 복원된 이미지의 품질 면에서 모두 최첨단 기법들을 능가합니다.
결론
JSTASR에서는 이미지의 완전한 복원을 통해 눈을 탐지하고 제거하기 위한 새로운 아키텍처와 데이터셋을 성공적으로 제안했습니다. 이 방법은 크기 인지 및 투명도 인지 필터를 결합하고, 베일링 효과 제거를 포함합니다. 베일링 효과를 줄이기 위해 미분 가능한 DCP가 제안되었습니다. 다양한 크기의 눈 입자에 대해 복원 결과를 최적화하기 위해 크기 인지 손실 함수와 눈 제거 판별기도 설계되어 아키텍처에 추가되었습니다. 실험 결과, 제안한 방법은 복잡한 눈 환경에서도 다른 방법들보다 더 우수한 성능을 보였습니다.
Add a comment