🏆 수상자 발표
구분 | 팀명 | 예선 | 본선 | 총점 | 상금 |
1등 | 박스가돌고돌아도라에몽 | 0.454869 | 0.443213 | 0.4502535134 | 5,000,000원 |
2등 | 스티브킴 | 0.420538 | 0.440563 | 0.4284674028 | 3,000,000원 |
3등 | 김평 | 0.395111 | 0.412294 | 0.4019150413 | 1,000,000원 |
누누와 | 0.352243 | 0.363769 | 0.3568070098 | 1,000,000원 |
- 축하드립니다!!
- 상금은 팀 리더에게 일괄 지급되며 이를 위해 담당자가 팀 리더에게 연락을 할 예정입니다.
- 상금은 제세공과금을 제외하여 지급합니다.
✅ 유의사항 안내
- 공지사항 내용을 참고하세요.
- 참가자는 반드시 경진대회 [데이터]탭을 참고하여 제출하세요.
✅ 안내
[대회 관련 안내]
- 예선/본선 평가로 상위 10개팀에 대해서 추가 데이터를 활용하여 최종 순위가 결정됩니다.
- [데이터] 탭은 경진대회 기간 중에 (10월 1일 ~ 10월 26일 00:00) 공개됩니다.
- 이번 경진대회에서는 참가자는 Pre-Trained 모델 사용이 가능합니다.
- 샘플데이터를 참고하여 모델링을 진행하고 참가자는 제출 조건을 준수하여 제출합니다.
- 사전설명회 (9월30일 17:00 진행)는 유튜브 Live로 진행됩니다. 링크
💡 문제 개요 (예시)
- 위성영상 이미지 내 선박을 탐지하는 AI 모델을 제작하는 경진대회입니다.(rotated_bbox)
- 본 대회는 별도의 학습 데이터는 제공하지 않고 참가자분들이 샘플 데이터를 참고하여 원하는 데이터셋을 활용하여 모델을 만드는 대회입니다.
- 상세한 내용은 대회 시작과 함께 공개되는 [데이터] 탭을 확인해주세요.
- 선박 탐지 모델을 제출하면 실시간으로 평가 데이터에 의해 리더보드와 순위표를 확인할 수 있습니다.
- 그 외 상세한 설명은 [데이터] 탭을 확인해주세요.
- 리더보드의 평가 데이터셋은 보안상의 사유로 공개가 불가능합니다.
✅ 참가신청
상단 우측의 ‘참여하기’ 버튼을 클릭하시고 참여정보를 입력하신 뒤 ‘제출’을 완료하시면 참가신청이 접수됩니다.
- 참가 신청 접수 기간 : `24. 9. 9.(월) ~ `24. 9. 26.(목) 23:59 까지
- 참가대상: 위성영상 기반의 선박 탐지 AI 모델 개발에 관심 있는 만 14세 이상 시민 누구나
- 참가형태 : 팀 또는 개인으로 참여 가능
- 팀 (2인 이상 최대 4인)
(✽ 팀 빌딩은 참가 신청 이후에 태스크 내 [팀] 탭에서 진행하실 수 있습니다) - 팀 리더는 [팀] 탭에서 ‘팀명’을 찾아 검색하여 팀으로 초대 (기본설정된 팀명은 해당 팀원의 닉네임)
- 팀을 구성하였다가 탈퇴한 팀원은 탈퇴 후 해당 대회에 재참여가 불가능
- 팀 빌딩과 관련된 자세한 사항 및 유의사항은 [팀] 탭의 관련규칙 및 가이드 필독
🏆 시상(상장 및 상금 수여)
총 4개 팀 선발 / 총 상금 1,000만원
수상자에게 상장 및 상금 제공 (팀은 최대 4인까지 가능합니다)
구분 | 선정팀 | 상금 |
1등 | 1팀 | 5,000,000원 |
2등 | 1팀 | 3,000,000원 |
3등 | 2팀 | 1,000,000원 |
📊 평가 방법
- 본 대회의 평가에는 IoU를 반영한 커스텀 F2-Score가 활용됩니다. 수식은 다음과 같습니다.
각 항목별 개념은 다음과 같습니다.
- TP: 정답 오브젝트 가운데 예측 결과가 있는 오브젝트의 수
- 각 오브젝트마다 최소 IoU(=0.1)를 넘은 예측 결과들을 해당 오브젝트에 대한 예측으로 할당합니다.
- 할당된 예측 가운데 해당 오브젝트와의 IoU가 가장 큰 예측 결과를 해당 오브젝트에 대한 최종 예측으로 정합니다.
- 최종 예측과 오브젝트 사이의 IoU값을 해당 오브젝트에 대한 예측 IoU값으로 사용합니다.
- IoU가 최소(0.1)를 넘는 예측 결과가 없는 오브젝트는 TP에 가산되지 않습니다. (FN)
- IOU_TP: TP인 오브젝트들 각각마다 IoU가 최대인 예측 결과 1개와의 IoU 값입니다.
- FP: 예측 결과 가운데 ‘특정한 오브젝트와 IoU가 최소 기준(=0.1) 이상이지만 할당되지 않은’ 예측 결과 수를 잘못된 예측으로 FP에 가산합니다. 예를 들어 하나의 오브젝트에 대하여 두 개의 예측 결과가 할당되는 경우, IoU가 최대인 결과는 TP로 들어가지만 그렇지 않은 결과는 FP로 들어갑니다. FP를 줄이기 위해서는 Non-Max Suppression 혹은 그와 유사한 필터링을 통하여 불필요한 중복 예측을 줄여야 합니다.
- FN: 오브젝트 가운데 최소(0.1)를 넘는 예측 결과가 없는 오브젝트는 예측이 이루어지지 않은 오브젝트로 간주하여 FN으로 분류합니다.
- ※ 모든 예측 결과는 IoU가 가장 큰 하나의 오브젝트에만 할당됩니다. 따라서 하나의 오브젝트가 여러 예측 결과를 할당받을 수는 있지만 하나의 예측 결과가 여러 오브젝트에 할당되는 일은 없습니다.
※ 아무 오브젝트에도 할당되지 않은(min IoU_obj < 0.1) 예측 결과는 점수 계산에 포함되지 않습니다.
- 아래는 점수 산정에 사용되는 커스텀 스코어 코드입니다.
def rotated_bbox_iou(bbox1, bbox2):
"""
회전된 경계 상자의 IoU를 계산합니다.
:param bbox1: [cx, cy, w, h, angle] 형식의 첫 번째 경계 상자
:param bbox2: [cx, cy, w, h, angle] 형식의 두 번째 경계 상자
:return: 두 경계 상자의 IoU
"""
def get_corners(bbox):
cx, cy, w, h, angle = bbox
angle = np.deg2rad(angle)
cos_a, sin_a = np.cos(angle), np.sin(angle)
half_w, half_h = w / 2, h / 2
corners = np.array([
[-half_w, -half_h],
[half_w, -half_h],
[half_w, half_h],
[-half_w, half_h]
])
rotation_matrix = np.array([
[cos_a, -sin_a],
[sin_a, cos_a]
])
corners = corners @ rotation_matrix.T
corners += [cx, cy]
return corners
# 두 경계 상자의 코너 좌표를 얻습니다
corners1 = get_corners(bbox1)
corners2 = get_corners(bbox2)
# Shapely Polygon 객체를 생성합니다
polygon1 = Polygon(corners1)
polygon2 = Polygon(corners2)
# 교집합과 합집합의 면적을 계산합니다
intersection_area = polygon1.intersection(polygon2).area
union_area = polygon1.union(polygon2).area
# IoU를 계산합니다
iou = intersection_area / union_area
iou = 0 if np.isnan(iou) else iou # 어떤 사유로든 nan인 경우 0처리
return iou
def f2_with_iou(gt, pr, th=0.01):
tp_iou = []
tp = []
fp = []
fn = []
for img in list(set(gt['file_name'])):
gt_img = gt[gt['file_name'] == img][['cx', 'cy', 'width', 'height', 'angle']]
pr_img = pr[pr['file_name'] == img][['cx', 'cy', 'width', 'height', 'angle']]
# 해당 GT에 대한 예측이 있는 경우
if len(pr_img) > 0:
ious = [rotated_bbox_iou(i, j) for i in gt_img.values for j in pr_img.values]
ioumat = np.array(ious).reshape(len(gt_img), -1) # gt_dim:0, pr_dim:1
# pr을 iou가 최대인 gt에 할당
np.argmax(ioumat, axis=0)
ioumat = ioumat * (ioumat.max(axis=0, keepdims=True) == ioumat)
# TP_IoU / FP / FN
max_vals = np.amax(ioumat, axis=1)
tp_iou.extend([i for i in max_vals if i != 0])
tp.append(sum(max_vals != 0))
fp.extend([sum(i > th) -1 for i in ioumat if sum(i > th) >= 2])
fn.append(sum(max_vals == 0))
# 해당 GT에 대한 예측이 없는 경우 모든 object를 FN에 추가
else:
fn.append(len(gt_img))
tp_iou = np.sum(tp_iou)
tp = np.sum(tp)
fp = np.sum(fp)
fn = np.sum(fn)
# precision - 분모가 0이 될 가능성이 있으므로 nan 처리 필요
precision = tp_iou / (tp + fp)
precision = 0 if np.isnan(precision) else precision
# recall
recall = tp_iou / (tp + fn)
f2_score = (1 + (2 ** 2)) * (precision * recall) / (((2 ** 2) * precision) + recall)
return f2_score
📊 제출 방법
본 대회는 추론 자동화 방식으로 진행되는 대회로 평가 데이터셋을 공개하지 않고 진행됩니다. 추론 자동화 대회란 참가자분들께서 개발한 추론 코드를 규칙에 따라 제출하면 AIFactory에서 자동으로 본 대회의 평가 데이터로 참가자 분들이 제출한 코드를 실행시켜 채점되는 방식입니다.
참가자는 본 경진대회의 [데이터]텝을 참고하세요.
🔍 결과 검증
- 입상 대상자는 아래 저작물을 제출해야 합니다.
- 모델 스크립트 : 학습 및 추론에 사용된 모델 전체 코드로 최초 학습부터 제 3자가 순차적으로 수행했을 때 입상대상 리더보드 스코어를 재현하는 결과물이 생성될 수 있어야 합니다.
- 모델 설명서 : 아래 양식에 맞게 작성 후 입상후보팀에게 안내되는 메일에 회신으로 전달
- 코드와 주석의 인코딩은 모두 UTF-8을 사용하여야 합니다.
- 입상 대상이 되는 상위 제출 결과물은 재현성 검증 과정을 거쳐 순위를 확정짓게 됩니다.
재현성 검증은 다음 세 단계를 거쳐 이루어집니다.- 재추론 검증
- 제출된 모델에서 주어진 데이터를 이용하여 결과가 정상 생성되는지 여부를 확인할 수 있도록 재추론합니다.
- 원칙적으로 재추론을 통해 생성된 결과는 참가자가 실제 제출한 결과와 동일해야 합니다.
- 재학습 검증
- 제출된 모델이 허가된 데이터만을 사용하여 학습되었는지, 학습된 모델은 제출된 결과를 재현할 수 있는지의 여부를 재학습을 통해 검증합니다.
- 소스코드 분석
- 소스코드 표절, 미허가 데이터 사용, 모델 조건 불충족 여부 등을 소스코드 분석을 통해 검증합니다.
- 재현성 검증에 문제가 발생하거나 소스코드 표절을 비롯한 치팅이 확인되는 경우 원칙적으로 해당 제출 결과는 무효처리됩니다.
- 제출 시 랜덤 시드를 고정하지 않을 경우, 결과가 일괄적으로 산출되지 않을 수 있으므로 반드시 고정하여 제출해 주세요. 랜덤 시드 미고정시 평가에 불이익을 받을 수 있습니다.
- 재추론 검증
⚡️ 대회 규칙 (중요)
※ 본 대회는 http://aifactory.space 의 회원가입을 완료한 회원이 아래 규칙에 대해 동의한 경우에만 참가 가능합니다.
※ 대회 참여 중 규칙에 위배되는 상황이 발생한 경우, 입상이 취소될 수 있습니다.
스코어 관련
이번 대회는 비공개데이터셋으로 평가하여 Public 스코어를 기반으로 리더보드 상 스코어를 확인하실 수 있으며 스코어가 높은 순으로 순위가 결정됩니다.
입상 대상자에 한해 제출한 모델 학습코드, 추론코드를 통해 부정 행위를 적발하여 순위가 변동될 수 있습니다.
- 대회기간 중에는 Public 스코어만 리더보드 상에 표출
- 리더보드에 표출되는 점수는 당사에서 확보한 비공개 데이터셋을 활용하여 채점
- 평가용 비공개 데이터셋은 보안 상 공개 불가
팀 참가 관련 (팀 빌딩은 참가자 접수기한까지 완료해야 함)
- 팀 (2인 이상 최대 4인)
✽팀 빌딩은 참가신청 이후에 [팀] 탭에서 진행하실 수 있습니다.
대회 제출 관련
- 해당 문제는 제출 관련 제한사항이 있습니다. 이전 정상 제출 시점 기준으로 1시간 지난 시점부터 재 제출이 가능하오니 이 점 참고 부탁드립니다.
✅ 입상자 선정 기준
- 리더보드 종료 후, 각 문제 순위별로 점수가 부여됩니다.
- 동점자가 발생할 경우, 제출 순서를 기준으로 입상자를 선정합니다.
- 점수는 비공개 평가 데이터를 활용해 평가되며, 대회 기간중에는 Public Score만 노출됩니다. 이를 기준으로 각 문제의 순위가 결정됩니다.(예선)
- 심사 평가기간 (10월26일~)에는 상위 10개 팀에 대해서 추가 데이터를 활용하여 최종 순위가 결정됩니다. (본선)
- 대회의 취지에 따라 딥러닝/머신러닝 및 기타 자동화된 알고리즘/모델을 이용한 문제 해결만이 정당한 결과로 인정되는 점 참고바랍니다.
🗓 진행 일정
(접수기간)
- `24. 9. 9.(월) ~ `24. 9. 26.(목) 23:59 까지
(온라인설명회)
- `24. 9. 30.(월) 17:00 진행
- URL: https://www.youtube.com/@aifactoryspace (추후 공지)
(대회기간) - 예선 (전체 팀)
- `24. 10. 1.(화) 00:00 ~ `24. 10. 26.(금) 00:00 까지
(심사기간) -본선 (상위 10개팀)
- `24. 10. 26.(토) ~ `24. 11. 2.(토)
(수상자공지)
- `24. 11. 4.(월) 17:00 이후 ~ `24. 11. 8.(금)
- 참가자의 개별 메일로 수상 내용이 발송됩니다.
📝 저작물 소유권 관련
- 공모전에 제출된 응모작에 대한 권리는 응모자에게 있습니다.
- 응모작에 대해 공동 소유 등의 권리 변동이 필요하거나 공모전 요강에 공고된 범위를 넘어 응모작을 이용할 경우, 저작자와 별도로 합의하여 정합니다.
- 공모전 응모자는 응모작의 반환을 요구할 수 있으며, 이 때 주최 측은 작품 반환 후 응모작과 관련된 자료 일체를 즉시 폐기합니다
- 공모전에 응모된 아이디어와 관련하여 주최 측과 아이디어 제안자 사이에 분쟁이 발생할 경우, 주최 측과 아이디어 제안자는 우선적으로 대화와 협상을 통하여 분쟁을 해결하도록 최선을 다해야 합니다.
- 데이터셋 파일 및 데이터에 대한 설명 등 제공된 일체의 정보는 주최사 및 주관사의 자산이며 해당 정보는 본 대회의 참가 목적으로만 사용해야 하고, 그 외 용도로 타 인에게 양도 및 대여, 재배포, 2차적 저작 및 상업적 용도로 이용할 수 없습니다.
- 그밖의 산출물에 대한 권리 등 법적 권리에 관한 사항은 문체부 '창작물 공모전 가이드라인'을 준용합니다.
- 표절 및 저작권 관련한 부분은 관련 법규 및 규정을 준수합니다.
📨 문의처
- 인공지능팩토리 운영자 메일 : cs@aifactory.page
- 경진대회 내 Q&A 탭 사용
* 각 경진대회의 Q&A를 활용하시면 빠르고 상세한 답변을 받아 보실 수 있습니다🕵🏻