주제3은 같은 장소를 서로 다른 두 시점에 촬영한 고해상도 위성영상 전/후 쌍에서, 그 사이에 일어난 증축과 벌목을 폴리곤으로 검출하는 과제입니다.
입력은 같은 땅을 서로 다른 시기에 촬영한 위성영상 두 장입니다. 전(pre) 영상과 후(post) 영상은 같은 격자에 정렬되어 있어, 같은 화소 위치가 두 영상에서 같은 지점을 가리킵니다. 정답은 두 시점 사이에 일어난 변화가 차지하는 범위를 후 영상 위의 폴리곤으로 표시한 것입니다. 후 영상에 무엇이 있는지가 아니라 전과 후 사이에 무엇이 달라졌는지가 판정 대상입니다. 전 영상부터 있던 건물, 도로, 나지는 정답이 아닙니다. 두 시점은 촬영 시기가 달라 색감과 그림자 방향이 다르지만, 그 차이 자체는 변화가 아닙니다.
탐지 대상은 두 가지입니다. 두 클래스 모두 변화의 결과가 후 영상에 나타나므로, 정답 폴리곤은 언제나 후(post) 영상 위에 놓입니다.
레이블 | 뜻 |
|---|---|
new_building | 증축- 전 영상에 없던 건물이 후 영상에 새로 올라온 경우이며, 기존 건물에 덧대어 늘린 경우는 늘어난 지붕 부분만 해당 (비닐하우스도 여기서 말하는 건물에 포함) |
tree_removal | 벌목- 전 영상에서 수관(나무의 윗부분)으로 덮여 있던 자리가 후 영상에서 맨땅이나 풀밭 등으로 바뀐 범위 전체 |
증축 폴리곤은 지붕면의 외곽선만 따며 그림자와 벽면은 포함하지 않습니다. 위성이 비스듬히 촬영해 지붕이 실제 바닥 위치에서 밀려 보이더라도, 폴리곤은 후 영상에 보이는 지붕면 그대로 놓입니다. 다음은 증축이 아닙니다:
지붕의 색이나 재질만 바뀐 경우
같은 자리에 같은 윤곽으로 다시 지은 경우
화물차와 버스 같은 대형 차량
그림자나 나무에 가려 보이지 않게 된 기존 건물
도로 포장과 경작지 변화처럼 건물 이외의 모든 변화
벌목 폴리곤은 나무가 걷힌/ 사라진 범위를 감쌉니다. 경계의 근거는 전 영상에서 수관이 덮고 있던 범위이고, 폴리곤은 그 범위가 맨땅으로 드러난 후 영상 위에 놓입니다. 나지에 나무가 다시 자란 회복은 대상이 아니며, 정답이 빈 쌍도 있습니다. 그 경우 두 클래스 모두 아무것도 내지 않는 것이 정답입니다.
폴리곤의 좌표계는 후 영상 패치의 픽셀좌표입니다. 원점은 패치의 왼쪽 위 모서리이고 x는 오른쪽(열 방향), y는 아래쪽(행 방향)으로 증가합니다. 화소 (r, c)는 [c, c+1] × [r, r+1] 구간을 차지하므로 좌표 범위는 0에서 256까지입니다. 좌표는 소수점을 포함한 연속값이며 소수 2~3자리로 적으면 충분합니다. 지리좌표(위경도, UTM)와 EPSG 정보는 제공되지 않습니다.
본 과제는 위성영상을 참가자에게 제공하지 않습니다. 학습 데이터, 샘플 영상, 평가 영상이 모두 해당하며, 평가 영상은 채점 서버 안에서 제출된 코드만 읽습니다.
자료 | 제공 여부 | 내용 |
|---|---|---|
베이스라인 패키지 | 제공 | 추론 노트북, 학습된 가중치, 의존성 목록입니다. 영상은 들어 있지 않습니다 |
학습 데이터 | 제공하지 않음 | 영상과 정답 모두 제공하지 않습니다 |
샘플 영상 | 제공하지 않음 | 예시 쌍과 예시 그림도 제공하지 않습니다 |
평가 영상과 정답 | 제공하지 않음 | 채점 서버 안에서만 쓰입니다 |
입력 한 건은 같은 자리를 서로 다른 시기에 촬영한 전 영상과 후 영상 두 장입니다. 위에서 내려다본 자연색 사진이며, 두 장을 나란히 놓았을 때 달라진 곳 가운데 증축과 벌목에 해당하는 범위를 찾는 것이 과제입니다.
항목 | 규격 |
|---|---|
패치 크기 | 256×256 화소. |
해상도 | 1화소가 지상 0.55~0.7m 쌍마다 축척이 다르므로 화소 수로 잰 크기를 그대로 실제 크기로 보아서는 안 됨 |
채널 | 자연색 RGB 3채널 8bit PNG이며 채널 순서는 R, G, B 알파 채널과 근적외(NIR) 밴드는 없음 |
무영상 | 촬영 범위 밖은 검정 무영상 영역의 위치는 전/후 영상에서 서로 다를 수 있으며, 두 영상이 모두 검지 않은 구역만 판정 대상 |
화소값은 표시용으로 밝기를 편 값이며 물리량이 아닙니다. 전 영상과 후 영상은 각각 따로 밝기를 조정했으므로, 같은 지붕이라도 두 영상에서 화소값이 다를 수 있습니다. 채널 간 비율이나 색지수도 원본 분광 비율과 대응하지 않습니다. 또, 전/후 영상에는 시차가 남아 있습니다. 촬영 각도 차이에서 오는 어긋남이 완전히 제거되지 않아 급경사지와 건물 상단은 두 시점 사이에 화면상 수 화소 어긋날 수 있습니다 (화소 단위 완전 일치를 전제로 한 차분은 오검출을 만들기 쉬움).
1화소가 지상 0.55~0.7m이므로 패치 한 장은 한 변이 약 140~180m인 땅을 담습니다. 흔한 대상이 화면에서 차지하는 크기는 대략 다음과 같습니다.
대상 | 실제 크기 | 화면상 크기 |
|---|---|---|
단독주택 지붕 | 한 변 10m | 한 변 14~18화소 |
승용차 | 4.5m × 1.8m | 6~8화소 × 3화소 안팎 |
나무 한 그루의 수관 | 지름 5m | 지름 7~9화소 |
2차로 도로 | 폭 7m | 폭 10~13화소 |
패치에는 산림과 함께 경작지, 마을, 시가지, 도로, 하천 같은 생활권 경관이 담길 수 있으며, 한 패치 안에 여러 경관이 섞일 수 있습니다. 촬영 범위의 가장자리에 걸린 패치에는 검은 무영상 영역이 직선이나 완만한 곡선 경계로 들어옵니다.
두 영상은 촬영 시기가 달라 변화가 없는 자리도 다르게 보입니다. 다음 차이는 정답이 아닙니다.
계절에 따른 색 차이: 같은 산림이 한쪽에서는 짙은 녹색, 다른 쪽에서는 잎이 진 갈색으로 보일 수 있고, 논밭도 작물 상태에 따라 색이 크게 달라집니다
그림자의 길이와 방향: 해의 높이와 방위가 달라 건물과 나무의 그림자가 다른 쪽으로 드리웁니다
영상별 밝기와 색조, 시차에 따른 어긋남: 입력 영상 규격 절의 주의 사항과 같습니다
움직이는 물체: 차량은 위치가 바뀌어 있을 뿐 아니라, 주변에 무지개색 얼룩이 번져 보일 수 있습니다
증축은 후 영상에 새로 나타난 지붕면입니다. 지붕은 재질에 따라 밝은 회색, 흰색, 청색, 녹색, 적갈색 등으로 보이며 곧은 변을 가진 다각형 윤곽을 이룹니다. 전 영상의 같은 자리는 맨땅, 공사 부지, 경작지, 수목 등으로 보입니다
벌목은 전 영상에서 수관이 덮던 자리가 후 영상에서 맨땅이나 풀밭으로 바뀐 범위입니다. 수관은 둥근 알갱이가 촘촘히 모인 거친 질감으로 보이고, 나무가 걷힌 자리는 황토색이나 갈색, 연녹색의 비교적 고른 면으로 보입니다
평가 입력은 환경변수 AIF_INPUT_DIR이 가리키는 폴더에 다음 구조로 주어집니다:
pairs.csv 추론 대상 목록. 열은 id 하나
images/<id>/pre.png 전 영상. 256×256 자연색 RGB 8bit PNG
images/<id>/post.png 후 영상. 같은 규격, 같은 격자평가 영상은 256×256, 자연색 RGB 8bit PNG, 무영상 검정 규약이 위에서 설명한 대로 적용됩니다
평가 입력에는 정답 파일이 들어가지 않습니다. 목록 파일과 쌍마다 전/후 영상 두 장만 주어집니다
id는 u0001 같은 익명 연번입니다. 추론 대상은 pairs.csv에 적힌 id 전체이며, 폴더를 훑어 대상을 정하지 마시기 바랍니다
결과 파일은 id,new_building,tree_removal 세 열의 CSV 한 개입니다. 한 행이 쌍 하나의 예측이며, 두 클래스의 폴리곤 목록을 각각 JSON 문자열로 적습니다.
열 | 내용 |
|---|---|
|
|
| 증축 폴리곤 목록의 JSON 문자열입니다. 증축이 없으면 빈 문자열입니다 |
| 벌목 폴리곤 목록의 JSON 문자열입니다. 벌목이 없으면 빈 문자열입니다 |
폴리곤 목록은 JSON 배열이고, 폴리곤 하나는 [x, y] 점의 목록입니다. 점은 3개 이상이어야 하며 첫 점을 끝에 반복해 닫아도 되고 닫지 않아도 됩니다. 구멍이 있는 폴리곤은 표현하지 않습니다. 한 쌍에 폴리곤이 여러 개면 목록에 나란히 담고, 폴리곤끼리 겹쳐도 됩니다.
id,new_building,tree_removal
u0001,"[[[10,10],[30,10],[30,22],[10,22]]]",
u0002,,"[[[128.01,54.11],[153.99,69.11],[141.99,89.89],[116.01,74.89]]]"
u0003,,첫 행은 축과 나란한 20×12 사각형 증축 하나와 빈 벌목, 둘째 행은 30도 회전한 사각형 벌목 하나와 빈 증축, 셋째 행은 두 클래스 모두 변화가 없는 쌍입니다. 폴리곤 하나를 낼 때도 바깥 목록은 필요합니다. JSON 문자열 안에 쌍따옴표가 있으므로 CSV 셀은 인용 처리가 필요합니다 (파이썬의 csv 모듈로 쓰면 자동으로 처리됩니다). 폴리곤마다 신뢰도 값은 내지 않습니다.
writer.writerow([pair_id, json.dumps(building_polygons), json.dumps(tree_polygons)])결과 파일에 대한 규칙은 다음과 같습니다.
목록에 있는 id의 행이 없으면 두 클래스 모두 빈 예측으로 처리합니다. 한 클래스의 칸이 비어 있거나 []이면 그 클래스만 빈 예측입니다
패치 범위(0~256) 밖으로 나간 부분은 잘라내고 채점합니다
한 클래스의 폴리곤을 모두 합친 면적이 20화소 미만이면 빈 예측으로 간주합니다
정점이 3개 미만이거나 면적이 0인 폴리곤은 무시합니다. 자기교차하는 폴리곤은 자동으로 복구되지만 의도와 다르게 해석될 수 있으므로 피해 주시기 바랍니다
다음이 있으면 제출 전체가 채점 실패로 처리됩니다:
JSON으로 읽을 수 없는 셀
폴리곤 목록이 아닌 구조(점 목록만 넣은 것, 배열이 한 겹 더 감싸인 것, 객체)
숫자가 아닌 좌표와 NaN
목록에 없는 id
같은 id의 중복 행
세 열이 없는 헤더
셀 하나에 262,144개 또는 파일 전체에 5,000,000개를 넘는 정점
세 열 외의 열은 무시합니다
대회에서 제공되는 모든 자료는 본 대회 참가 목적으로만 사용할 수 있으며, 대회 외 재배포와 전재, 공개를 금합니다
각 쌍은 서로 독립적으로 판정합니다
무영상 검정 구역은 판정 대상이 아닙니다. 두 영상 중 어느 한쪽이라도 검은 구역에는 예측을 만들지 마시기 바랍니다
외부 공개 데이터와 공개 사전학습 가중치는 그 라이선스가 대회 참가와 파생물 제출을 허용하는 범위에서 사용하실 수 있습니다
segmentation_models_pytorch (UNet 구현): MIT. 원문
ResNet18 ImageNet 인코더 가중치 (torchvision 원본, segmentation_models_pytorch 재배포본 사용): BSD-3-Clause. 원문, 재배포본
shapely (마스크를 폴리곤으로 바꾸는 후처리): BSD-3-Clause. 원문. 함께 설치되는 GEOS 는 LGPL-2.1 이며 동적 링크로만 쓰여 파생 제출물에 조건이 전파되지 않습니다
베이스라인 코드와 파인튜닝 가중치: 대회 참가 목적으로 자유롭게 사용, 수정, 재학습하실 수 있습니다. 파생 제출물에 별도 조건이 전파되지 않습니다
===============================================================================================
본 대회는 별도의 학습 데이터셋이 제공되지 않습니다
===============================================================================================