/AI-Vision

Primary LanguagePython

네이버 AI 해커톤 2018_Ai Vision

"올해 봄 첫걸음을 내디딘 AI해커톤을 기억하시나요?"

약 한달간의 여정동안 여러분들의
치열한 고민과 열정이 있었기에 두번째 AI Hackathon 으로 찾아올 수 있었습니다.
그래서 이번 해커톤은 더 흥미로운 AI Vision 주제를 가지고 더 풍성한 자리를 마련했습니다.

네이버 AI 해커톤 2018은 네이버의 클라우드 머신러닝 플랫폼인 NSML과 함께 합니다.

NSML(Naver Smart Machine Learning)은 모델을 연구하고 개발하는 데 필요한 복잡한 과정을 대신 처리해주어
연구 개발자들이 "모델 개발"에만 전념할 수 있고, 다양한 시도를 쉽게 할 수 있는 창의적인 환경을 제공할 것입니다.

지금 바로 네이버 AI 해커톤 2018에 참여해서
서로의 경험을 공유하고, 다양하고 창의적인 방법으로 문제를 해결해 보세요!

“ Competition? It’s not competition Coorperation! ”
AI Hackathon에서 세상을 변화시킬 비전을 기다립니다.

Leaderboard (결선(온라인), 진행중 )

참가 신청

AI로 문제를 해결하는 데 관심 있는 분이라면 누구나 참가 신청할 수 있습니다.
개인 또는 팀(최대 3명)으로 참가 가능합니다. 신청폼 으로 참가 신청하세요!

일정

일정 기간 장소
참가 신청
~2018년 12월 30일(일)
약 2주 접수 마감
예선 1라운드
2019년 1월 2일(수) ~ 1월 16일(수) 23:59:59
약 2주 온라인
https://hack.nsml.navercorp.com
예선 2라운드
2019년 1월 23일(수) 14:00 ~ 2월 8일(금) 16:00
약 16일 온라인
https://hack.nsml.navercorp.com
결선(온라인)
2019년 2월 12일(화) 14:00 ~ 2월 20일(수)16:00
약 9일 온라인
https://hack.nsml.navercorp.com
결선(오프라인)
2019년 2월 21일(목) ~ 2월 22일(금)
1박 2일 네이버 커넥트원(춘천)

※ 예선 및 결선 참가자에게는 개별로 참가 안내드립니다.
   결선 참가자는 네이버 본사(그린팩토리, 분당)에 모여서 커넥트원(춘천)으로 함께 이동하며
   네이버 본사 - 커넥트원 간 이동 차량 및 결선 기간 중 숙식, 간식 등을 제공합니다.

대회종료

순위 팀명
1위 Cheat_Key 팀
2위 Resource_exhausted 팀
3위 snu_CherryPickers 팀

미션

  • 예선 1차 : 소규모의 라인프렌즈 상품 image retrieval
  • 예선 2차 / 결선(온라인, 오프라인) : 대규모의 일반 상품 image retrieval

※ 모든 미션은 NSML 플랫폼을 사용해 해결합니다.
   NSML을 통해 미션을 해결하는 방법은 이 튜토리얼을 참고해 주세요.

예선 1차

예선 1차는 소규모의 라인프렌즈 상품 데이터를 이용한 image retrieval challenge 입니다. Training data를 이용하여 image retrieval model을 학습하고, test시에는 각 query image(질의 이미지)에 대해 reference images(검색 대상 이미지) 중에서 질의 이미지에 나온 상품과 동일한 상품들을 찾아야 합니다.

Training data

Training data는 각 class(상품) 폴더 안에 그 상품을 촬영한 이미지들이 존재합니다.

  • Class: 1,000
  • Total images: 7,104
  • Training data 예시: Data_example_ph1.zip
    • 예선 1차 학습 데이터 중 10개의 클래스이며, 각 클래스의 모든 이미지를 포함합니다.

Test data

Test data는 query image와 reference image로 나뉘어져 있습니다.

  • Query images: 195
  • Reference images: 1,127
  • Total images: 1,322

예선 2차 / 결선(온라인, 오프라인)

예선 2차 / 결선(온라인, 오프라인)은 대규모의 일반 상품 데이터를 이용한 image retrieval challenge 입니다. 예선 1차와 같은 방식이지만, 데이터의 종류가 라인프렌즈로 한정되어 있지 않고, 데이터의 개수가 상대적으로 많습니다.

Training data

Training data는 각 class(상품) 폴더 안에 그 상품을 촬영한 이미지들이 존재합니다.

  • Class: 1,383
  • Total images: 73,551
  • Training data 예시: Data_example_ph2.zip
    • 예선 2차 학습 데이터 중 5개의 클래스이며, 각 클래스의 대부분 이미지를 포함합니다.

Test data

Test data는 query image와 reference image로 나뉘어져 있습니다.

  • Query images: 18,027
  • Reference images: 36,748
  • Total images: 54,775

※ 예선 2차와 결선(온라인)에서는 전체 test data의 query images 중 50%만으로 순위를 결정합니다. 결선(오프라인)에서 나머지 50%를 포함하여, 전체 test data로 최종 순위를 결정합니다.

데이터셋 구조

예선 1차, 예선 2차, 결선(온라인, 오프라인) 모두 동일합니다.

|-- train
      |-- train_data
            |-- 1141  # 상품 ID
                  |-- s0.jpg
                  |-- s1.jpg
                  |-- s2.jpg
                  ...
            |-- 1142 # 상품 ID
                  |-- s0.jpg
                  |-- s1.jpg
                  |-- s2.jpg
                  ...
             ...
|-- test
      |-- test_data
            |-- query # 질의 이미지 폴더
                  |-- s0.jpg
                  |-- s1.jpg
                  |-- s2.jpg
                  ...
            |-- reference # 검색 대상 이미지 폴더
                  |-- s0.jpg
                  |-- s1.jpg
                  |-- s2.jpg
                  ...
            ...

※ 폴더 이름은 위와 같지만, 파일 이름은 위 예시와 다를 수 있습니다.

평가지표

  • 평가지표는 image retrieval 분야에서 흔히 쓰이는 mAP(mean average precision)을 사용합니다.
    • 예선 1차에서는 mAP로 score를 계산합니다.
    • 예선 2차와 결선(온라인, 오프라인)에서는 테스트 데이터의 규모가 크기때문에, 상위 1000개의 검색 결과만 고려하는 mAP@1000으로 score를 계산합니다.
  • 동점자가 나올 경우에는 Recall@k를 계산하여 순위를 결정할 수 있습니다.

For the retrieval task, we use the Recall@K metric. Each test image (query) first retrieves K nearest neighbors from the test set and receives score 1 if an image of the same class is retrieved among the K nearest neighbors and 0 otherwise. Recall@K averages this score over all the images.

Baseline in NSML

  • NSML에 적응하는데 도움을 주기 위해, 예선 1라운드에만 베이스라인 모델을 제공합니다.
  • 예선 2라운드 부터는 train 및 test 데이터의 개수가 매우 커지기 때문에, 베이스라인 모델처럼 데이터를 한번에 읽고 사용하는 방식은 OOM(Out Of Memory) 문제가 발생할 수 있습니다. 따라서, 데이터를 batch 단위로 읽고 train 및 inference하는 방식을 추천드립니다.
    • E.g. tf.data.Dataset in TensorFlow, ImageDataGenerator in Keras, DataLoader in PyTorch

Baseline model 정보

  • Deep learning framework: Keras
  • Docker 이미지: nsml/ml:cuda9.0-cudnn7-tf-1.11torch0.4keras2.2
  • Python 3.6
  • 평가지표: mAP
  • Epoch=100으로 학습한 결과: mAP 0.0116

NSML

  1. 실행법

  2. 제출하기

    • 세션의 모델 정보를 확인합니다.
      $ nsml model ls [session]
    • 확인한 모델로 submit 명령어를 실행합니다.
      $ nsml submit [session] [checkpoint]
  3. web 에서 점수를 확인할수있습니다.

Infer 함수

Submit을 하기위해서는 infer()함수에서 [다음]과 같이 return 포맷을 정해줘야합니다.

대략적인 형태는 아래와 같습니다.

[
    (0, ('query_0', ['refer_12', 'refer_3', 'refer_35', 'refer_87', 'refer_152', 'refer_2', ...])),
    (1, ('query_1', ['refer_2', 'refer_25', 'refer_13', 'refer_7', 'refer_64', 'refer_243', ...])),
     ...
]
  • 최종 return 형태는 list로 반환해야 합니다.
  • (0, ('query_0', ['refer_12', 'refer_3', 'refer_35', 'refer_87', 'refer_152', 'refer_2', ...])) tuple
    • 위 형태의 tuple의 첫번째 숫자 값(위의 예제에서는 0)은 query 이미지의 번호이며, 평가와는 무관합니다.
  • ('query_0', ['refer_12', 'refer_3', 'refer_35', 'refer_87', 'refer_152', 'refer_2', ...]) tuple
    • query_0는 query 이미지 test_data/query/query_0.jpg에서 확장자를 뺀 파일명입니다.
    • refer_12는 reference 이미지 test_data/reference/refer_12.jpg에서 확장자를 뺀 파일명입니다.
    • ['refer_12', 'refer_3', 'refer_35', 'refer_87', 'refer_152', 'refer_2', ...]은 모든 reference 이미지들을 query_0와 가까운 순으로 정렬한 list입니다. (검색 결과의 ranking list)
    • 예선 1차에서는 mAP로 score를 계산하기 때문에, ranking list에 전체 reference 이미지들이 존재해야 합니다.
    • 예선 2차, 결선(온라인, 오프라인)에서는 mAP@1000으로 score를 계산하기 때문에, ranking list에 1000개의 reference 이미지만 존재하면 됩니다.

진행 방식 및 심사 기준

예선

  • 예선 참가팀에게는 예선 기간중 매일 시간당 60-120 NSML 크레딧을 지급합니다. (누적 최대치는 2,880이며 리소스 상황에 따라 추가지급될 수 있습니다.)
  • 팀 참가자일 경우 대표 팀원에게만 지급합니다.
  • 사용하지 않는 크레딧은 누적됩니다.

예선 1라운드

  • 일정 : 2019. 1. 2 ~ 2019. 1. 16
  • NSML 리더보드 순위로 2라운드 진출자 선정 (2라운드 진출팀 50팀 선발,순위가 낮으면 자동 컷오프)

예선 2라운드

  • 일정 : 2019. 1. 23 – 2019. 2. 8
  • NSML 리더보드 순위로 결선 진출자 선정 (결선 진출자 약 40팀 선발)
  • 전체 인원에 따라 결선 진출팀 수에 변동이 있을 수 있습니다.

결선

결선 (온라인)

  • 일정 : 2019. 2. 12 – 2019. 2. 20
  • 온라인 결선 과정은 오프라인 결선 전, 모델을 향상시키기 위함입니다.
  • 온라인 결선을 거치더라도 별도의 컷오프 없이 모든 결선 참여팀이 오프라인 결선에 참여할 수 있습니다.

결선 (오프라인)

  • 일정 : 2019. 2. 21 – 2019. 2. 22 1박 2일간 춘천 커넥트원에서 진행
  • 최종 우승자는 NSML 리더보드 순위(1위, 2위, 3위)로 결정합니다.
  • 결선 참가자에게 제공하는 크레딧은 추후 공지 예정입니다.

※ 1 NSML 크레딧으로 NSML GPU를 1분 사용할 수 있습니다.
   10 NSML 크레딧 = GPU 1개 * 10분 = GPU 2개 * 5분 사용

※ 예선, 결선 진출자는 개별 안내 드립니다.

시상 및 혜택

  • 결선 진출자에게는 티셔츠 등의 기념품 증정
  • 우수 참가자 중 네이버 입사 지원 시 혜택

FAQ

  • 자주 문의하는 내용을 확인해 보세요! FAQ.md

문의

  • 해커톤 관련 문의는 Q&A issue page를 통해 할 수 있습니다.
  • 관련 문의는 Tag를 달아 코멘트를 남겨주세요.
  • Q&A 문의 답변 시간은 월-금 10:00-19:00 입니다.

License

Copyright 2018 NAVER Corp.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.