'2019/08'에 해당되는 글 11건

  1. 2019.08.30 약 3달간의 긴 대회 끝에, [ka.kr] Solve chem. together 팀이
  2. 2019.08.29 Python Cheat Sheet --------------------------------------- สำหรับใครที่กำลังฝึกฝนการเขียนภาษา Python อยู่… วันนี้ Data ภาษาคน มี Cheat Sheet จ..
  3. 2019.08.28 Reinforcement Learning KR 에서 행사가 하나 있었습니다.
  4. 2019.08.26 AI 연구원, 머신러닝이 연금술에 불과하다고 역설
  5. 2019.08.21 [Keras] GPU sync failed,
  6. 2019.08.20 [시계열 데이터 Missing Values 공백 제거하기]How to Handle Missing Timesteps in Sequence Prediction Problems with Python
  7. 2019.08.20 2014 ~ 현재까지 등장한 거의 모든(?) Object Detection 모델, 패러다임, Metric, 성능, 데이터셋등을 조사한 논문입니다.
  8. 2019.08.18 Coursera, Udacity, Stanford, Berkeley, and Google offer excellent intros to Machine Learning. Here are a full set of notes, and primers to get started.
  9. 2019.08.18 구글 이미지를 통해서, 데이터셋 구축을 시도하시는 분들이 많을 것으로 생각 됩니다. 여러가지 방법이 있긴 하지만, fastai 학생 중 한명이 작성한 매우 단순하면서도, 꽤 괜찮은 방법이 있어..
  10. 2019.08.18 저는 이번 2019 3rd ML month with KaKR에서 1st score을 기록했습니다. 혹시 공부하시는데 도움이 되실까봐 solution을 공유해 드리겠습니다
  11. 2019.08.16 [Jupyter - Notebook] ipynb 파일을 python 파일로 변환하기: jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb

https://www.facebook.com/groups/KaggleKoreaOpenGroup/permalink/474777576587680/?sfnsn=mo

안녕하세요!

약 3달간의 긴 대회 끝에, [ka.kr] Solve chem. together 팀이
3등의 어마어마한 성적을 거두었습니다.


대회가 첫 시작했을 때, 친근한 화학 분야 관련 대회라서 매우 들떴었습니다만, 대회가 워낙 새로워서 힘들었었네요.

Graph neural network (GNN) 도 처음인데, 이걸 가지고 대회에서 이기려고 하니 너무 힘들었습니다. 자료도 너무 없었구요!

그래도 좋은 팀원들과 함께 포기하지 않고 해나갔네요.

그러던 중, 갓상훈!!님께서 한줄기 희망을 주셨습니다.
Transformer 를 사용하셔서 해결하시다니, 아직도 그 충격(?)이 가시지 않습니다.

이번 대회를 통해서, 딥러닝을 이용한 화학 분야에 캐글러들이 많은 contribution을 한 것 같군요. 앞으론 GNN 자료를 구하기가 훨씬 수월해질 것 같습니다.

이번 대회가 끝나면서,
총 4분의 컴퍼티션 마스터가 생겼습니다.
이제 국내에도 두자릿수 master 가 있네요 ㅎ (열몇명 되는걸로 압니다.)

점점 한국 캐글러가 많아지고, 좋은 성적을 거두시는 분들이 많아지는 것을 봅니다.

향후 Aptos, IEEE, steel 등의 대회에서 좋은 성적을 거두는 한국 캐글러들이 생기길 바랍니다.

캐글하며 환자들의 눈을 구하고,
캐글하며 transaction anomaly 찾고,
캐글하며 steel defect detection 을 해서
각 분야에 contribution 해봅시다 :)

아래는 각 팀원별 후기입니다 :)

정말 Amazing 한 솔루션을 제시해주시고, 엄청난 개발능력으로 빛을 내려주신 상훈님,
끊임없는 EDA로 갓원호하시는 원호님
열정적인 탐구심으로 논문으로 계속 아이디어를 제시해주신 영수님,
지적으로 도메인 지식을 풍성히 제공해주신 성환님
(밥도 사주신다는!!!!)
함께해서 영광입니다.

저희 솔루션 링크는 아래와 같습니다
한번 읽어보셔용 ㅎㅎ

https://www.kaggle.com/c/champs-scalar-coupling/discussion/106572

## 김상훈
'빨리 가려면 혼자가고 멀리 가려면 함께 가라' - 아프리카 속담
여러분과 함께해서 여기까지 올 수 있었던 것 같습니다. 함께하면서 많이 배웠습니다!
재미있었고, 즐거웠으며, 결과까지 좋아서 +알파가 되는 행복한 경험이었습니다.

## 송원호
Aptos 열심하겠습니다
팀 여러분 감사합니다. 영광입니다 !!!!

## 이영수
함께해서 영광이었고, 많이 배웠습니다. GNN을 배우러 참가하였다가 화학domain에서 End-to-End Bert를 영접하는 재미있는 경험을 했습니다. 대회기간내내 즐거웠고, 모두 감사합니다!

## 이유한
그저...행복할 따름입니다. 처음부터 끝까지 좋은 팀원들과 함께 너무나 즐겁게 문제를 풀어갔네요 ㅎ 한 분야를 다양한 사람들이 풀어가니, 정말 새로운 접근이 계속 나왔던 거 같습니다. 제 첫 금메달을 함께 해주셔서 너무나 감사드립니다!

## 최성환
처음 이 대회 나가게 될때 절대 5등 안으로 못들어간다고 그랬었는데 (그렇죠 유한님? ㅎ) 머리를 맞대니 정말 신기한 마법들이 생겨나더군요. 좋은 팀원들에게 좋은 자극 좋은 정보 많이 받았습니다.

####
끝으로, 다른 한국 캐글러도분들도 많으셨습니다 혼자서 9등, 31등하신 분들도 계셨군요 !! 모두 고생하셨습니다
Posted by uniqueone
,

https://www.facebook.com/groups/machinelearningforum/permalink/10158264878983475/?sfnsn=mo


Posted by uniqueone
,

https://m.facebook.com/groups/245664385452646?view=permalink&id=2694782997207427&sfnsn=mo

#RLKorea행사 #RL_RealWorld #발표자료
안녕하세요! 지난 8월 26일 월요일에 Reinforcement Learning KR 에서 행사가 하나 있었습니다.
제목은 "이쯤 되면 RL도 Real World로 나가봐야지!" 였는데요🙂

행사에서 연사자분들이 발표하셨던 자료를 공유하고자 합니다~!!!🤩🤩

- Game: <하스스톤> 강화학습 환경 개발기 (Nexon Korea 옥찬호 (Chan-Ho Chris Ohk))
--> https://www.slideshare.net/utilforever/rlkorea-166558013/utilforever/rlkorea-166558013

- Recommender System: Atari는 더 이상 Naver... (NAVER Search&Clova Dialog 주찬웅)
--> https://www.slideshare.net/w0ong/atari-naver

- Control: Rainbow의 혈관 속 탐험 (Medipixel 김경환)
--> https://www.slideshare.net/KyunghwanKim27/rainbow-the-rainbows-adventure-in-the-vessel-rl-korea-166819765

끝으로, 본 행사를 빛내주신 연사자분들, 참석자분들께 감사드립니다!

올해 11월이나 12월 쯤에 좀 더 큰 공간에서 다양한 도메인에 계시는 연사자분들을 모시고 행사를 할 예정입니다. 못오신 분들은 그 때 뵈어요!🙌🙌
감사합니다~!😁
Posted by uniqueone
,

https://github.com/jehyunlee/texts/blob/master/AI_researchers_allege_that_machine_learning_is_alchemy/text.md?fbclid=IwAR0xKKFftD-uPn06lIDoGvtBoqP7FGD5lSXuuyzxqW8js7kNJ0VObeppxZI

AI 연구원, 머신러닝이 연금술에 불과하다고 역설

원본 주소 : https://www.sciencemag.org/news/2018/05/ai-researchers-allege-machine-learning-alchemy
번역 철학 : 매끄럽게 읽으실 수 있는 적절한 의역을 지향합니다.
전문 용어 : 가급적 우리말 용어를 사용하고자 하며, 원어를 병기합니다.



3D 공간의 최소값을 찾는 알고리즘에서, 경사하강법은 시행착오에 기반한 최적화를 수행한다.


지난 12월, 캘리포니아의 샌프란시스코에 있는 구글(Google)에서 AI 연구원으로 일하는 Ali Rahimi가 날린 한 방에 박수세례가 40초간 이어졌다. 한 AI 컨퍼런스에서 머신러닝 알고리즘이 시행착오를 통해 학습하는 일종의 연금술이 되었음을 폭로한 것이다(본 글에서는 연금술이라는 단어가 '체계적인 지식이나 접근법 없이, 되면 좋고 안되면 말고 식으로 결과를 운에 맡기고 이런 저런 시도를 반복하는 행태'를 가리키는 데 쓰였다: 역자 註). Rahimi에 따르면 연구원들은 왜 어떤 알고리즘은 작동하고 다른 알고리즘은 작동하지 않는지 알지 못하며, 다른 것들을 제치고 특정한 AI 아키텍처를 선정하는 견고한 기준선이 없다. 4월 30일 캐나다 밴쿠버에서 열린 International Conference on Learning Representations에서 Rahimi와 동료들은 그들이 어떤 행위들을 연금술로 간주하는지에 대한 사례를 공개하고, AI의 신뢰성을 강화하는 방법을 제시했다.

Rahimi는 이렇게 말했다.
"이 분야는 고뇌를 피할 수 없습니다. 우리 중 대다수가 외계 기술을 다루는 것 같은 느낌을 받아요."

이 이슈는 AI의 재현성 문제(실험 및 출판 사례에서 일관성이 결여되어 서로의 연구를 재현하지 못하는 문제)와는 별개의 것이고, 흔히 말하는 머신 러닝의 '블랙 박스' 또는 '설명력' 문제(특정 AI가 어떻게 이 결론에 이르렀는지 설명하는데 어려움을 겪는 문제)와도 다르다. Rahimi가 말하듯, "블랙 박스인 머신 러닝과 블랙 박스가 되어버린 어떤 총체적 분야 사이에 경계선을 긋고자 한" 것이다.

Rahimi는 연구자들이 마치 중세의 연금술사들처럼 새로운 알고리즘을 구축하고 훈련시키는데 필요한 기본 도구에 대한 깊은 이해 없이 AI를 만들어내고 있다고 말한다. 캘리포니아 마운틴 뷰에 있는 구글의 컴퓨터 과학자 프랑소와 숄레(François Chollet)는 이렇게 덧붙인다. "사람들은 화물 숭배(caro-cult: 동남아 원주민들이 2차 세계대전 중 미국과 일본의 전투기가 화물을 나르는 것을 보고, 죽은 조상들이 특별한 화물을 가지고 올 것이라고 믿는 현상: 역자 註) 같은 것에 끌립니다. 전통 신앙이나 마법의 주문 같은 것 말입니다." 예를 들면, 연구원들은 AI의 학습률(learning rate)를 조정하기 위해 일단 뭐라도 시도해보고, 결과가 신통찮으면 값을 바꿔보는 식의 방법을 사용한다. 이 때 왜 어떤 값이 다른 값보다 좋은지에 대한 이해는 없다. 한편으로는 AI 연구원들은 그들의 알고리즘을 어둠 속에서 더듬거리며 학습시키기도 한다. 실패를 최소화하기 위해 알고리즘의 파라미터에 소위 "확률적 경사하강법(stochastic gradient descent)"이라는 것을 적용하는 식이다. 해당 주제에 대한 수천건의 학술 논문과 그 방법들을 적용하기 위한 셀 수 없는 방법들이 있음에도 불구하고, 여전히 시행착오에 의존하고 있는 것이다.

Rahimi의 논문은 발생할 수 있는 노력의 낭비와 최적화 실패에 집중하고 있다. 예를 들어, 첨단(state-of-the-art)의 번역 알고리즘에서 대부분의 복잡성을 벗겨내면, 결론은 영어를 독일어로 또는 프랑스어로 더 잘, 그리고 효율적으로 번역한다는 것 뿐이고 논문의 저자들은 부가적인 부분들이 어디에 좋은지 완전히 파악하지는 못하고 있다. 역으로 말하자면, 논문에 소위 있어 보이려고 덧붙인 부분들이 그 논문에서 유일하게 좋은 부분이라고 Ferenc Huszár (런던의 트위터 머신러닝 연구원)은 말하고 있다. 어떤 경우에 알고리즘의 코어 부분은 기술적으로 결함이 있는데 "순전히 여기 들러붙은 잔기술들 덕택에" 좋은 결론이 나온다는 것이다.

Rahimi는 언제 어떤 알고리즘이 가장 잘 작동하는지에 대한 몇 가지의 제안을 하고 있다. 초심자들에게는 앞서 언급한 번역 알고리즘의 경우와 같이 "어블레이션 연구(ablation studies)"를 적용해야 한다고 한다. 각 부분의 기능을 확인하기 위해 알고리즘을 한 부분 한 부분 제거하면서 실행하는 방식을 말한다. 한편 알고리즘의 성능을 상세하게 분석해서 어떤 부분에서의 개선이 다른 곳에서는 비용으로 작용하는지 들여다보는 "분할 분석(sliced analysis)"을 요구한다. 또한 연구자들이 자신의 알고리즘을 많은 경우의 조건과 세팅에서 시험하고 그 성능을 모두 보고해야 한다고 주장하기도 한다.

University of California, Berkeley의 컴퓨터 과학자이자 Rahimi의 연금술 기조 강연의 공저자인 Ben Recht는, AI는 문제를 작은 'toy problem'으로 축소해서 고민하는 기법을 물리학자들에게서 빌려올 필요가 있다고 한다. "물리학자들이 현상에 대한 설명을 이끌어내기 위한 간단한 시험을 창안하는 것을 보면 놀랍습니다". 어떤 AI 연구자들은 이미 이런 방법에 대해 논의를 시작하고, 영상 인식 알고리즘의 내부 작동원리를 더 잘 이해하기 위해 손으로 쓴 작은 흑백 글자를 대용량 컬러 사진에 앞서 넣어보기도 한다.

런던의 DeepMind 컴퓨터 과학자인 Csaba Szepesvári는 테스트 경쟁을 좀 완화할 필요가 있다고 말한다. 그는 현재 새 알고리즘이 다른 벤치마크를 능가했을 때가 소프트웨어의 내부 알고리즘을 강조했을 때보다 더 쉽게 출판되고 있다고 꼬집는다. "과학의 목적은 지식의 생성입니다. 여러분은 다른 이들이 가져다가 반석으로 삼고 싶은 뭔가를 만들고 싶을 겁니다."

Rahimi와 Recht의 비판에 모두가 동의하는 것은 아니다. 뉴욕의 Facebook 최고위 AI 과학자인 Yann LeCun은 너무 많은 관심이 최첨단의 기술에서 핵심(core)으로 옮겨가는 것은 혁신을 늦추고 AI의 실제 적용을 위축시킬 수 있다고 지적한다. "연금술이 아닙니다. 엔지니어링이죠. 엔지니어링은 원래 지저분한 겁니다."

Recht는 체계적인 연구와 모험적인 연구가 공존하는 곳을 추구한다. "우리에겐 모두가 필요합니다." "우리가 튼튼한 시스템을 만들려면 어디에서 실패가 일어나는지 이해해야 하고, 더 인상적인 시스템을 만들려면 기술의 최전선을 더 앞으로 밀고 가야 합니다."


Posted by uniqueone
,

1. https://m.blog.naver.com/wideeyed/221329619056

GPU기반 Keras로 코드를 작성하다보면 아래와 같은 오류 메시지에 직면할 때가 있다.

InternalError: Blas GEMM launch failed
CUDA_ERROR_OUT_OF_MEMORY
InternalError: GPU sync failed

GPU에 할당된 메모리를 다른 세션이 점유하고 있어서 발생할 가능성이 높다.
1) 점유하고 있는 세션을 중단하고 메모리를 회수한다.
2) Keras가 사용하는 Backend엔진(ex.Tensorflow)의 메모리 추가 사용을 허락한다.

이 문제를 해결한 후 오류가 발생한 세션을 다시 시작해야한다. 
그렇지 않으면 "InternalError: GPU sync failed"가 발생할 수 있다.


[Tensorflow Backand 엔진 설정 방법]

from keras.backend import tensorflow_backend as K config = tf.ConfigProto() config.gpu_options.allow_growth = True K.set_session(tf.Session(config=config))



전체 소스코드는 아래 포스트를 참고하세요.

[Keras] IRIS데이터 이용한 DNN

IRIS데이터를 이용한 간단한 DNN 학습 및 추론을 해보자. 데이터를 Train/Test로 구분한 후 학습...

blog.naver.com

끝.

--------------------------------------------------------------------------------------

2. https://zereight.tistory.com/228

GPU 동기화 오류이다.

다음 코드를 돌려서 해결하자

import tensorflow as tf

config = tf.ConfigProto()

config.gpu_options.per_process_gpu_memory_fraction = 0.4

session = tf.Session(config=config)

session.close()

--------------------------------------------------------------------------------------

3. https://emmadeveloper.tistory.com/27

GPU sync failed 에러가 떴다.

 

 

 

러닝 시작한 것 확인하고 잤는데 에러 떠 있어서

확인해보니 전용 GPU메모리의 50% 정도를 이미 다른 곳에서 점유하고 있었다.

 

나머지 것들을 shutdown시켰다.

다시 실행해보려는데 안 됨.

그냥 jupyter notebook을 재실행했더니 다시 잘 된다.

 

이제 돌리기 전에 전용 GPU 메모리 사용량을 미리 확인하고, 깔끔하게 낮춘 후, 돌려야겠다.

--------------------------------------------------------------------------------------
4. https://stackoverflow.com/questions/51112126/gpu-sync-failed-while-using-tensorflow

TLDR: If you find that tensorflow is throwing a GPU sync failed Error, it may be because the model's inputs are too large (as was my case when first running into this problem) or you don't have cuDNN installed properly. Verify that cuDNN is installed correctly and reset your nvidia caches (ie. sudo -rf $HOME/.nv/) (if you have no yet done so after initially installing CUDA and cuDNN) and restart your machine.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by uniqueone
,
Posted by uniqueone
,

Object Detection 관련 서베이논문 소개드립니다.

 

Recent Advances in Deep Learning for Object Detection

 

2014 ~ 현재까지 등장한 거의 모든(?) Object Detection 모델, 패러다임, Metric, 성능, 데이터셋등을 조사한 논문입니다. 좋은 참고자료가 될 것으로 생각됩니다!

 

논문: https://arxiv.org/abs/1908.03673v1

Posted by uniqueone
,
Highly recommend Google ML introduction

Coursera, Udacity, Stanford, Berkeley, and Google offer excellent intros to Machine Learning. Here are a full set of notes, and primers to get started.

— Courses:
https://developers.google.com/machine-learning/crash-course/ml-intro
https://onlinehub.stanford.edu/

— Review:
https://www.ubuntupit.com/best-machine-learning-courses-for-free/#20-best-machine-learning-course

Grant Sanderson, Stanford, ML Introductions, are an excellent place to start, before taking online classes. Also take a look at the AI 101 CheatSheet, below:
https://m.youtube.com/watch?feature=youtu.be&v=IHZwWFHWa-w

— Primers, Notes, Groups:
AI 101 CheatSheet: http://www.montreal.ai/ai4all.pdf
Facebook Group: https://www.facebook.com/groups/MontrealAI/
Curated Notes: http://www.academy.montreal.ai/
Jonathan Hui. Hui has excellent primers on Deep Learning that I’ve enjoyed: https://medium.com/@jonathan_hui

— Mathematics:
‘The Matrix Calculus You Need For Deep Learning’ — explained.ai
Terence Parr and Jeremy Howard
https://explained.ai/matrix-calculus/index.html ; http://www.matrixcalculus.org :: https://en.m.wikipedia.org/wiki/Matrix_calculus
— https://machinelearningmastery.com/introduction-to-eigendecomposition-eigenvalues-and-eigenvectors/

Ref — Deep Learning (Adaptive Computation and Machine Learning series)
Ian Goodfellow, Yoshua Bengio, Aaron Courville, pg. 42, https://www.amazon.com/Deep-Learning-Adaptive-Computation-Machine/dp/0262035618/

—•

Primer on Deep Learning, Grant Sanderson (B.S. Mathematics, Stanford '15).

Grant Sanderson became one of the most popular tutors at Khan Academy, before launching 3blue1brown. Grant animates his tutorials with a self-made Python library; here, he introduces neural networks: https://www.3blue1brown.com/neural-networks

detail: https://m.youtube.com/watch?v=tIeHLnjs5U8&t=0m40s

Backgrounders:
https://en.m.wikipedia.org/wiki/3Blue1Brown
https://stanfordirl.com/grant-sanderson-bs15
https://www.numberphile.com/podcast/3blue1brown
[Q&A with Grant Sanderson (3blue1brown): https://m.youtube.com/watch?v=Qe6o9j4IjTo] cc : Pavel Grinfeld]

#machinelearning  #tensorflow  #pytorch  #artificialintelligence  #datascience
Posted by uniqueone
,

https://www.facebook.com/groups/TensorFlowKR/permalink/964597137214678/?sfnsn=mo

안녕하세요?

구글 이미지를 통해서, 데이터셋 구축을 시도하시는 분들이 많을 것으로 생각 됩니다. 여러가지 방법이 있긴 하지만, fastai 학생 중 한명이 작성한 매우 단순하면서도, 꽤 괜찮은 방법이 있어서 소개해 드립니다.

매우 짧은 글로, 사용법을 익히시는데는 약 5분 미만의 시간이 소요됩니다. 그러면, 첨부그림1과 같이 구글 이미지 검색 결과에 대하여, 이미지들에 대한 URL을 몽땅 긁어올 수가 있습니다. 긁어와진 URL은 화면 우측하단에 표시됩니다. (추가적으로, 이미지를 선택/해제도 가능합니다)

이렇게 긁어와진 URL 들은 단순히 복사/붙여넣기 과정을 통해서 CSV 파일형태로 만들 수 있고, fastai 에서는 해당 CSV 파일을 참조하여 데이터셋을 생성하는 기능이 있습니다.

링크: https://github.com/fast-ai-kr/ko-translation/blob/master/tools/gi2ds.md

PS; 덧붙여, 현재 fastai 관련 글을 번역하여 저장하는 저장소를 개설하여 운영중에 있습니다. 번역 대상을 리스트업 하고, 차근차근 번역을 수행할 예정입니다.
누구든 참여가 가능하므로, 참여의사를 밝히신 후, 번역을 진행하시고 PR을 보내주시면 많은분들에게 큰 도움이 될 것 같습니다.

번역 저장소: https://github.com/fast-ai-kr/ko-translation
Posted by uniqueone
,

https://www.facebook.com/groups/TensorFlowKR/permalink/963838507290541/?sfnsn=mo

안녕하세요 캐글코리아!

DGIST 3학년에 재학중인 이해찬입니다.

저는 이번 2019 3rd ML month with KaKR에서 1st score을 기록했습니다. 혹시 공부하시는데 도움이 되실까봐 solution을 공유해 드리겠습니다.

(같은 내용으로 competition discussion에도 올려 두었습니다.)

***글이 길수도 있습니다.***

Baseline model : Efficientnet-B5

Preprocessing

Using Bounding Box :

저는 처음에 bounding Box로 crop된 image를 사용했지만 아래의 두 github글에서는 crop하지 않은 image를 input으로 주는 것이 성능이 더 좋다고 하였습니다.

https://github.com/jianshen92/stanford-car-grab-challenge

https://github.com/morganmcg1/Projects/tree/master/stanford-cars

하지만, Public score 0.93정도 이상에서는 그렇게 큰 효과가 없었습니다. 또한, cutout을 적용하면 crop된 image가 성능이 더 높은 모습을 보여주었습니다. 그래서 저는 Bounding box로 crop된 이미지를 input으로 사용했습니다.

Image를 resize하는 방식을 사용했는데 위의 github에서는 squeeze하는 방식을 사용하면 더 좋은 성능을 보여준다고 합니다. 하지만, 저는 이것을 구현하지 못해서 적용하지 못했습니다.

Augmentation :

(saewon님의 kernel을 참고하였습니다.)

Random Resized Crop, Random Horizontal Flip, Random Rotation, AutoAgumentation(CIFAR-10), Normalize, Random Erasing(cutout)을 적용하였습니다. 여기에 mixup을 적용시켰습니다.

Cutmix를 mixup대신 적용시켜 보았지만, 저는 mixup을 사용했을 때 성능이 더 좋게 나타났습니다.

mixup의 alpha값은 0.2, 0.4, 1.0을 사용해보았는데 1.0에서 성능이 가장 좋게 나왔습니다.

rotation은 30도를 주었고 resized crop은 (0.8, 1.0) 다른 것들은 default 값으로 적용시켰습니다.

Sampler :

Class의 이미지 수들의 불균형이 존재했습니다. 균형을 맞추기 위해서 oversampling 방식을 통하여 한 epoch을 당 주어지는 class의 image 수를 같게 맞추었습니다.

Loss :

FocalLoss를 gamma를 0.5, 2, 3을 시도해 보았습니다. gamma가 0.5일 때 성능이 가장 좋았습니다. 하지만, 이것보다 그냥 cross entropy loss가 더 좋은 성능을 보여주었습니다. (제가 구현을 잘못한 것인가요…ㅠㅠ Focal loss가 더 좋을 것으로 예상을 했었는데…) 그렇기에 저는 loss로 cross entropy를 사용했습니다.

Label smoothing을 적용해서 실험해 보았지만 그럴듯한 성능 향상을 보여주지 않았습니다.

(Triplet loss구현을 시도해 보았지만, 시간 부족을 구현을 완료하지 못했습니다. 혹시 해보신 분 있으면 결과를 남겨주시면 좋겠습니다.)

Model :

저는 Efficientnet-B7, B6, B5, PNASNet, NASNet을 사용했습니다. 각 model head에 dropout(0.4~0.5)을 추가해서 사용했습니다. (IIdoo kim님이 discussion에 올렸던 model은 너무 train하기에 무거워서 결국 사용하지 못했습니다.)

WS-DAN(Weakly Supervised Data Augmentation Network)이라는 아주 흥미로운 구조를 실험해 보았습니다. 이것을 Efficientnet-B7 model에 적용시켰습니다. Training 시간은 3배로 걸리지만 성능은 크게 개선되지 않아서 이 구조를 버리게 되었습니다.’

Scheduler :

초반에는 CosineannealingLR, MultistepLR, StepLR을 사용해 보았습니다. 이중에서 적절한 값을 찾아본 결과 MultistepLR이 가장 좋은 성능을 보여주어서 이것을 사용했습니다. 후반기에 최종 model을 train할 때는 SuperConvergence라는 scheduler를 사용하여 train을 하였습니다.

Optimizer :

다양한 optimizer를 baseline에 실험해 보았는데 AdamW가 가장 성능이 좋았습니다. Efficientnet모델에는 AdamW를 사용하게 되었습니다. PNAS, NAS에서는 SGD + momentum이 성능이 좋은 모습을 보여주어 이것을 사용하였습니다.

Train Process:

Efficientnet-B7, B6, B5는 lr=0.00028로 50 epoch train후 max_lr=0.00028로 SuperConvergence + AdamW로 60 epoch train했습니다.

PNAS, NAS는 lr=0.0042, max_lr=0.0042로 위와 같은 방식으로 optimizer만 바꿔준 후 train했습니다. weight저장은 valid set에서 F1-score가 가장 좋은 weight를 저장했습니다.

Test-Time-Augmentation :

tta를 5번 적용하였습니다. 적용한 augmentation은 Random Resized Crop, Random Horizontal Flip, Random Rotation입니다. Rotation은 5를 주었고 나머지는 train때와 같게 주었습니다.

Ensemble :

6 fold cross validation을 사용하였습니다. 또한 앞에서 언급한 Efficientnet-B7, B6, B5, PNAS, NAS model을 soft-voting을 하였습니다.

성능으로는 B7>B6>B5>PNAS>NAS 순이었습니다. (Public score 기준)

(결론적으로 총 30개의 weight를 사용했네요… 6.5G정도 되네요)

최종 score “ Public : 0.96604,  Private : 0.96058 ”
Posted by uniqueone
,

1개만 변환 시,

>> jupyter nbconvert --to script [YOUR_NOTEBOOK].ipynb

여러개 변환 시,

>> jupyter nbconvert --to script *.ipynb

출처: 

https://stackoverflow.com/questions/17077494/how-do-i-convert-a-ipython-notebook-into-a-python-file-via-commandline

 

 

 

Posted by uniqueone
,