강인한 산불 검출기를 위한 학습 전략

Minseong Kim

Minseong Kim

2021년 5월 4일 (화)

안녕하세요. Anomaly Analysis(AA) Lab 김민성입니다.

이번 포스트에서는 AA Lab에서 산불 검출기의 robustness(강인함)를 개선하기 위해, 사용하고 있는 방법 중 하나인 image(data) augmentation에 대해 말씀드리려고 합니다. 비전문가들도 가볍게 읽으실 수 있도록 작성하기 위해 노력했습니다만, 보시고 이해가 안 되는 내용이 있다면 언제든지 문의주세요!

Content
·         산불 검출기의 robustness?
·         robustness를 개선해야 하는지?
·         산불 검출기에 적용한 image augmentation 방법은?
·         결론(요약 및 느낀 점)

산불 검출기의 robustness?
머신 러닝 모델(산불 검출기) robustness에 대해 알아보면 다음과 같습니다.

For a machine learning algorithm to be considered robust, the testing error has to be consistent with the training error. [1]

위 문장을 좀 더 이해하기 쉽게 해석해보면, machine learning algorithm은 산불 검출기로 치환 할 수 있고 testing error는 검출기를 학습할 때 사용하지 않은 데이터에 대한 에러 그리고 training error는 산불 검출기를 학습할 때 사용한 데이터에 대한 에러로 볼 수 있습니다. 목적에 맞는 머신 러닝 모델을 만들기 위해서는 학습 데이터(입력 데이터+정답 레이블)를 수집하고 이를 활용하여 모델을 학습시키는데, 모델이 학습한 데이터에 대해선 높은 성능(낮은 에러)이 나오더라도 실제 서비스 환경(테스트 데이터)에서 낮은 성능(높은 에러)이 나오면 이 모델은 강인하지 않다고 할 수 있습니다. 여기서 성능은 산불 검출기의 경우, “배경을 연기로 검출하지 않고(precision), 정확한 위치의 연기를 잘 찾았는가(recall)”로 볼 수 있습니다.

Precision에 대해 조금 더 설명해 드리면, 산불 검출기는 연기를 잘 찾는 것도 중요하지만 오 알람을 적게 발생시키는 것도 매우 중요합니다. 연기와 조금이라도 비슷한 구름이나 안개에 대해 모두 알람을 발생시키는 시스템은 많은 화재를 찾을 수는 있겠지만양치기 소년과 같이 신뢰도가 낮아 사용하기 어렵습니다.

robustness를 개선해야 하는지?
앞서 언급하였듯이, 오 알람을 줄이기 위해 산불 검출기의 정밀도(precision)를 개선하는 것은 완성도 높은 제품을 만들기 위한 중요한 작업 중 하나입니다. 예를 들어, 고객은 산불 검출기가 찾지 못한 화재는 직접적으로 알 수 없지만(또한 실제 화재가 발생하는 경우는 드뭅니다.) 산불 검출기가 발생시킨 알람은 실시간으로 받기 때문에 고객의 피부에 더 직접적으로 닿는 요소로 간주 할 수 있기 때문입니다. 화재를 아무리 잘 찾더라도 엉뚱한 곳을 화재라고 알람을 계속 발생시키면 산불 검출기에 대한 신뢰도가 낮게 체감될 것이고 결국 사용하지 않을 것입니다주의할 것으론, 발생한 화재를 놓치지 않고 잘 찾는 것(recall)도 똑같이 매우 중요합니다. 사실 둘 다 놓칠 수 없는 요소입니다. 하지만 이번 포스트에서는 오 알람을 줄이는 것에 대해서만 알아보겠습니다.

아래 그림들은 제가 실험했던 검출기의 성능을 정성적으로 분석하기 위해, 모델의 오 알람 결과들을 각 이미지에 빨간색으로 그린 것입니다.

 

[그림 1] 화면 얼룩을 연기로 검출한 경우.

 

 

[그림 2] 햇빛 잔상을 연기로 검출한 경우.
 

위 그림들에서 볼 수 있듯이, [그림 1]에서는 산등성이에 있는 화면 얼룩을 연기로 검출하였고 [그림 2]에서는 햇빛 잔상을 검출했습니다. 여기서 그러면어떻게 하면 얼룩이나 햇빛 잔상을 검출하지 않도록 할 수 있을까?” 란 생각이 자연스레 듭니다. 이에 대한 해결 방안으로, (1) 위 같은 경우의 영상들을 더 많이 수집하여 학습시킨다. (2) 위와 같은 현상(얼룩이나 햇빛 잔상)을 유사하게 묘사하여 학습 시 영상에 적절히 적용한다. 이렇게 두 가지 정도를 생각 할 수 있습니다. (1)번 방법이 더 확실하지만, 수작업으로 각 영상을 수집해야 하기 때문에 현실적인 어려움이 있습니다. 그리고 (2)번 방법에 해당하는 것이 바로 image augmentation입니다.

산불 검출기에 적용한 image augmentation 방법은?

Image augmentation이란 말 그대로 이미지 데이터의 수를 증가시키는 것입니다. 어떤 영상에 화면 얼룩을 실제와 같이 유사하게 그려 넣으면 새로운 데이터가 생성되어 기존 1장의 영상이 2장으로 증가한 것으로 볼 수 있습니다. 위에서 언급된 오검출 문제를 해결하기 위해 AA Lab에서 시도했던 방법 중 이번 포스트에서는 다음과 같은 augmentation 기법들에 대해서만 말씀드리겠습니다.

·         Blob effect: 얼룩에 대한 오 알람을 줄이기 위해 시도했던 방법
·         Spatter effect: 햇빛 잔상에 대한 오 알람을 줄이기 위해 시도했던 방법

백문이 불여일견이라고 우선 각 effect를 적용한 결과 이미지부터 보겠습니다.

[그림 3] 입력 이미지 (a) Blob effect (b) Spatter effect (c)를 적용한 결과.

 

 

 

Blob effect [그림 1]과 같은 오검출을 예방하기 위해 위 [그림 3] (b)에서와 같이 검은 얼룩들을 입력 이미지의 랜덤한 위치에 그려 넣는 것입니다. 그리고 Spatter effect [그림 2]의 햇빛 잔상과 유사하게 보이는 흰색 무늬들을 입력 이미지에 그려 넣는 것입니다. 산불 검출기 학습시 위 effect들을 입력 이미지(입력 데이터)에 적용하고 얼룩이나 햇빛 잔상이 있는 부분을 배경(정답 레이블)이라고 알려주면, 테스트 데이터(실제 서비스 환경)에서 이와 유사한 경우의 오 알람을 줄일 수 있습니다.


결론

요약
이번 포스트에서는 산불 검출기의 강인함을 개선하기 위한 다양한 방법 중 한 가지인 image augmentation에 대해 설명해 드렸습니다. 강인함이란 산불 검출기가 학습하지 않은 실제 서비스 환경(테스트 데이터)에서도 학습 데이터에서만큼 높은 성능이 나오는 것입니다. 이를 위해, 테스트 데이터를 분석해보고 모델이 오검출을 발생시키는 상황(화면 얼룩, 햇빛 잔상)을 가상적으로 묘사하여, 학습 시 이를 적용해 오검출을 완화할 수 있는 방법을 소개했습니다.
개론적인 내용을 설명하는 것으로 작성하다 보니, 모든 용어에 대한 세부적인 설명을 작성하진 못했습니다. 이해가 되지 않는 내용이 있다면 언제든지 문의 주세요.

느낀 점

 

 

[그림 5] CS 329S: Machine Learning Systems Design (Stanford, Winter 2021)
— Intro to machine learning systems design (Lecture slide 35 page)
 

포스트 작성에 당첨(?)된 후 어떤 내용을 쓸지 고민하다 보니, 자연스럽게 입사 후 지난 시간을 돌이켜 보게 되었습니다. 대학원에 있을 때는 정제된 오픈 데이터 셋으로 연구를 했었습니다. 그러다 보니 [그림 5]에서 처럼 아주 아마추어같이 쉽게 생각했었는데, 현업에 와서 날 것(?)의 데이터들을 보니 눈앞이 깜깜해지더군요. 저는 하느님도 안 믿는데 기도가 essential 하다고 표현한 아래 강의 자료([그림 6])가 참 공감되었습니다. 비단 연구 개발뿐만 아니라 다른 모든 직업군도 비슷한 상황이라는 생각이 들었습니다. 다른 사람들이 가볍게 생각하는 것보다 실제 업무에 대해선 훨씬 더 많은 고민 요소들이 있을 것이라고, 그렇기에 독단적으로 생각(판단)하지 않고 동료의 의견을 존중하고 귀 기울이는 사람이 되어야겠다는 생각이 들었습니다.

 

[그림 6] CS 329S: Machine Learning Systems Design (Stanford, Winter 2021)
— Intro to machine learning systems design (Lecture slide 36 page)

Reference

·         [1] https://en.wikipedia.org/wiki/Robustness_(computer_science)
·         [그림 5, 6] CS 329S: Machine Learning Systems Design (Stanford, Winter 2021)
 

 

 

...

...