ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 위성 사진에서 태양광 패널을 탐지하자
    [+] 프로젝트 [+]/태양 전지의 전력량 예측! 2021. 2. 6. 19:05

     

    0. 배경

     

    혹시 여러분들은 파리협정에 대해 들어보신적 있으신가요?

     

    지구온난화를 억제하고자 온실가스 배출을 규제하고, 식량생산에 위협을 가하지 않는 선에서 적은 온실배출 개발을 위한 협약입니다. 2021년 부터 모든 국가들은 온실가스 감축의 의무를 갖습니다.

     

     

    세계인들의 환경보호와 지속가능한 성장에 대한 관심도는 무척이나 높아진 것 같습니다.

     

    MSCI나 FTSE와 같은 기구는 ESG(환경,사회,지배구조)에 기반한 지표를 신설하여 기업의 비재무적 성과를 평가합니다.

     

    ESG인덱스는 기업 경영에 중요합니다. 이 지표가 낮은 기업들은 ESG 지수에 편입되지 못하고, 높은 기업들은 편입되는 등, 세계적인 부의 흐름이 더이상 돈만을 쫒는 기업을 향하지 않는 듯합니다.

     

    그런까닭에 국내에서도 그린 뉴딜을 필두로, 신재생 에너지에 대한 많은 지원과 발전이 있었는데요.

     

    https://www.solarconnect.kr/

    그중 에너지원 별로 쪼게어 본다면 신재생 설비 중 태양광 에너지가 67%로 단연 가장 높다는 것을 알 수 있습니다.

     

    아래는 연도별 발전실비 지수입니다.

     

    https://www.solarconnect.kr/

    전체 에너지 총 생산량은 소폭 증가한 반면에 재생 에너지, 그중에서도 태양 전지는 빠른 속도로 보급되었음을 알 수 있습니다.

     

    호오 그렇군요, 근데 그게 왜요?

     

    신재생 에너지의 등장은 기존에 유지되던 전력계통에 위협을 가합니다.

     

    한국전력공사는 국내에 전기에너지를 안정적으로 공급해야할 의무를 갖습니다.

     

    하지만 가계에서 설치된 소규모 태양광 설비까지 완벽하게 집계하기는 어렵고,

     

    공기업의 특성상 수요 예측을 보수적으로 잡아, 수요량보다 상회하는 에너지를 생산할 수 밖에 없는 실정입니다.

     

     

    예측이라... 그러고 보니 그거 인공지능이 제일 잘하는거 아니었던가요...?

     

     

    그렇다면, 인공지능으로 태양 전지의 생산량을 파악하여 수요를 예측한다면 어떨까요?

     

    위성사진을 기반으로 태양광 패널을 탐지한 후 크기에 따라 전력생산량을 예측하는거죠!

     


     

    1. 모델 선정

     

    우리의 목표는 위성 사진에서 태양광 패널을 탐지한 후 이를 기반으로 전력생산량을 예측해내어야 합니다.

     

    즉, 객체 탐지가 선행되어야 하는 것이죠, Object Detection의 영역입니다. (물론 Segmentation을 동시에 진행하는 Mask R-CNN과 같은 모델이 있습니다.)

     

    Object Detection 모델은 다양하게 존재합니다. 본 프로젝트는 정적인 영상(이미지)을 대상으로 물체를 탐지하고자 합니다.

     

    https://cv-tricks.com/object-detection/faster-r-cnn-yolo-ssd/

     

    수행시간이나 모델의 사이즈 등은 우선 순위가 낮겠지요!

     

    정확도를 최우선순위로 하여 Faster R-CNN 모델을 선정했습니다.

     

    2. 데이터셋

     

    위성사진을 순회하며 사진을 수집해야합니다.

     

    하지만 위성사진 중에는 선택지가 여럿 있지요?

     

    구글 어스 vs 네이버지도 vs 카카오 맵 중에서 고민되었습니다.

     

    우선 네이버 맵과 카카오 지도에는 노이즈가 많이 껴 있습니다.

     

    글씨 기호 등등..

    국소적인 부분을 캐치해야하는 프로젝트의 특성상 좁은 영역에 글씨나 기호가 차지하는 부분은 작지 않았습니다.

     

    기호에 가려져 태양광 패널이 잘 보이지 않는 케이스도 있었구요.

     

    이는 성능에 부정적인 영향을 가할 것입니다.

     

    하지만 구글 어스에는 노이즈나, 기호, 글씨 등이 기입되어 있지 않습니다.

     

    네 분명 노이즈는 없었습니다만...

     

    기본적으로 해상도가 너무 저조했습니다.

     

    또한 위성사진이 최근 사진으로 업데이트가 되어있지 않아, 태양광 패널이 있어야할 건물에 과거 사진으로 나타나 있는 경우도 많았습니다.

     

    태양광 패널이 널리 보급된 것은 비교적 최근이니까 말이지요

     

    결국 궁여지책으로 네이버지도와 카카오 맵 중에 선택해야 했습니다.

     

    해상도가 제일 괜찮고, 10m 배율까지 확대 가능한 카카오 맵을 선정했습니다.

    (이 문제는 차후에 유료 항공사진을 이용하여 해결하였습니다.)

     

    Selenium 라이브러리를 사용하여 제가 거주하는 지역 전역을 순회하며 사진을 수집하였고,

     

    LabelIMG라는 툴을 이용하여 라벨링 하였습니다.

     

    최종적으로 1000개의 데이터셋을 구축하였습니다.

     

    수작업으로 일일이 태깅해야합니다.

     

    해당 데이터는 모델에 입력되기 전에 TFRecord라는 특수한 형태의 파일 포맷으로 변환시킨 후 입력되는데,

     

    이 작업은 Roboflow라는 사이트에서 손쉽게 진행할 수 있습니다.

     

    Roboflow: Everything you need to start building computer vision into your applications

    Even if you're not a machine learning expert, you can use Roboflow train a custom, state-of-the-art computer vision model on your own data. Let us show you how.

    roboflow.com

     

    Roboflow

     

     

    3. 파인 튜닝

     

    이제 준비는 끝났습니다. Tensorflow hub에서 원하는 모델을 내려받아서 파인튜닝 시켜주도록 합니다.

     

    본인의 경우에는 faster_rcnn_resnet101 모델을 사용하였습니다.

     

    Tensorboard Train Loss

     

    그래프 상으로 볼땐 점점 줄어드는 것 같지만, Loss의 변동폭이 너무 들쭉날쭉해서 이게 잘 진행되는 것인지 확신이 없었습니다.

     

    무지에서 기인한 오류가 있었는지 어떤지 잘 확신이 가지 않아서, 2K step 마다 모델의 파라미터를 저장해두고 눈으로 확인해 보고자 하였습니다.

     

    80장의 사진을 추가로 수집하고, 저장된 모델에 넣어보고 수작업으로 mAP를 계산했습니다.

     

    최종적으로 16K step을 학습한 모델이 나왔습니다!

     

    그럼 결과를 볼까요?

     

    그럭저럭 괜찮지요?

     


    4. 이후에

     

    기본적으로 이 모델은 노이즈가 많이 껴 있는 데이터로 학습했다는 한계를 안고있습니다.

     

    유료 항공 위성사진을 이용하여 모델을 새로 만들기에는 부담스럽고 이 모델을 버리자니엔 아까운 상황이네요.

     

    이 모델의 Threshold 값을 낮추어 항공 위성사진의 태양광 패널을 검출하고, 그럭저럭 잘 검출된 사진만 추려서 새로운 데이터로 삼아 재학습하는 방식을 구상하고있습니다.

     

    일종의 준 지도학습이 되겠지요?

     

     

    또한 본 프로젝트의 본질은 전력 생산량 예측입니다.

     

    탐지에 성공했다면 이를 기반으로 태양광 패널의 규모를 가늠하고, 생산량을 예측해야 하는데,

     

    태양전지의 원리에 대해 알면알수록 어렵다 느끼게 되는것이...

     

    위성사진은 수직하방으로 사진을 캡쳐하는데, 태양광 패널이 설치된 기울기에 따라 2차원 이미지 상에선 크기가 다르게 측정될 수 있다는 점이지요.

     

    또한 건물 옥상에 태양광 패널이 설치되는 법인데, 건물의 높낮이가 상이하다는 점도 있구요.

     

    그렇다면 2차원 평면 상에서 패널의 넓이 뿐만 아니라, CNN을 이용하여 패널이 몇 개의 판으로 이루어 졌는지 등을 모두 수집하여,

     

    넓이, 판의 개수, 일조량 등등을 입력으로 제공하여 머신러닝으로 해결할 수 있지 않을까? 하는 생각을 하는 중입니다만, 이는 좀더 논의를 통하여 해결해 보고자 합니다.

     

     

    여튼! 긴 글을 읽어주셔서 감사합니다!

    댓글

Designed by Tistory.