매우 유명한 논문이라서 크게 부연설명이 필요없을 것 같은데요, Object Detection algorithm들 중에 YOLO는 굉장히 특색있는 one-stage algorithm입니다. 이 논문에서는 YOLO v2(YOLO9000) 이후에 성능 향상을 위하여 어떤 것들을 적용하였는지 하나씩 설명해주고 있습니다. 또한 MS COCO의 metric인 average mAP에 대해서 비판하면서 mAP를 평가하는 방법에 대해서도 얘기를 하고 있는데요, 자세한 내용은 영상을 참고해주세요~
안녕하세요, 수아랩(코그넥스)의 이호성이라고 합니다. 이번에 PR12 모임에 합류하게 되면서 첫 발표를 하게 되었습니다! 저는 208번째 논문 리뷰를 진행하게 되었고, 발표 주제는 "Unsupervised visual representation learning overview: Toward Self-Supervision" 입니다.
딥러닝의 성능을 높이기 위해선 양질의 데이터가 필요한 것은 다들 잘 알고 계실 거라 생각합니다. Supervised Learning 방식은 많은 수의 데이터가 있으면, 데이터에 대한 Label도 필요로 하게 되고 이 과정에서 많은 비용이 필요하게 됩니다. 이러한 점에 주목한 여러 연구들 중 Unsupervised Learning 연구 분야의 하위 주제인 "Self-Supervised Learning" 에 대해 리뷰를 하였습니다. 주요 논문들을 간략하게 소개드리며 연구 흐름을 소개드리고 어떠한 방법들이 제안이 되었는지, 어떠한 방식으로 성능을 평가하는지 등을 다루고 있습니다. 자세한 내용은 영상을 참고하시면 좋을 것 같습니다. 감사합니다!
Transforming realistic photos into cartoon style images!😅 https://www.profillic.com/paper/arxiv:1911.06102
(Cartoonization is achieved by conducting some transformation manipulation in the feature space with their proposed Soft-AdaIN) https://www.facebook.com/groups/DeepNetGroup/permalink/1004183859974496/?sfnsn=mo
그룹에 Mathematics for Machine Learning(MML) 책을 보고 공부하시는 분들이 많을 것 같습니다. 동명의 Coursera 강의를 듣는 분들도 계실테고요.
강의를 진행하는 4명의 강사 중 한 명인 Sam Cooper는 Coursera의 MML 강좌를 등록한 학생 수가 15만명이 넘은 것을 자축하며, 해당 강좌를 유튜브에 무료로 풀기로 결정했다는 소식을 알렸습니다. 확인해보니 Chapter.3인 PCA 재생목록은 아직 올라와있지 않긴 하지만 '선형대수'와 '다변수미적분학'은 빠짐없이 올라와있네요.
+) 검색해보니 MML 강좌가 이미 Youtube 내 다른 재생목록으로 올라와있긴 한데 해당 강좌는 Unofficial 업로드이고, 빠진 영상도 더러 있는 것 같습니다. ICL 측에서 Official하게 올려준 강좌의 도움을 받아 수학 공부를 합시다..! (영어 자막도 제공해줍니다 크) https://www.facebook.com/groups/TensorFlowKR/permalink/1038633053144419/?sfnsn=mo
Hi DataScience enthusiast . Are you fresher or professional looking out to make your path as "Data Scientist" and here something for you for upcoming 30days(prepare yourself and get hired ) . DataScience interview questions #day13 . If you missed #day1 #day2 #day3 #day4 #day5 #day6 #day7 #day8 #day9 #day10 #day11 and #day12 do have a look
내년 1월부터 ORB-SLAM 스터디 하려고 합니다 :) 이론과 코드 전부 마스터 할거입니다 후후!! 다만 쉬운 스터디는 아닐거라서, 준비과정인 1부와 SLAM 집중과정인 2부로 나눠집니다!
1부는 SLAM을 해본적이 없으신 분들을 위한 온라인 / 카카오톡 사전 스터디입니다. 11월 18일부터 12월달 말 까지 - Modern C++ for Computer Vision (Cyrill Stachniss)https://www.youtube.com/playlist?list=PLgnQpQtFTOGR50iIOtO36nK6aNPtVq98C - SLAM KR 의 SLAM study season 1 https://www.youtube.com/playlist?list=PLubUquiqNQdOTNocmWCSWk9ZaWhV7ubCD 를 같이 듣습니다! 페이스는 각자 원하는대로! 대신 서로 동기부여 해주기 ㅎㅎ 오픈 카톡방에서 토론하면서 할거입니다! https://open.kakao.com/o/g8T5kxLb
2부는 1월부터 시작하는 ORB-SLAM 스터디입니다! 저와 함께하시는 SLAM 공부하시는 분들 몇분을 초청해서, 세미나 식으로 매주 주말마다 열려고 합니다! 이건 그때 되면 다시 업데이트 드릴게요 😆 https://www.facebook.com/groups/DataScienceGroup/permalink/2765440956851110/?sfnsn=mo
Code for automatically putting a mask on a face in photographs. The code matches features between the mask and the face in the photo and warps the mask and merges it onto the face. Additionally, the code adds ears or a hat onto the photo.
face-masker
Code (Matlab) for automatically putting a mask on a face in photographs. The code matches features between the mask and the face in the photo and warps the mask and merges it onto the face. Additionally, the code adds ears or a hat onto the photo.
In order to detect matching feature points in the faces and masks, a separate algorithm should be used (this repository does not include it). I have tested two feature detectors that worked well:
Masks should be stored as the basis image, feature points and blending mask (binary or gray scale weights). The masks can also contain ears/hat/wig. The feature points are detected by the same algorithm that you plan on using for photos, and can be shifted manually. The blending masks are best when done manually with simple programs such as paint.
Read the report and look at the poster to learn more about this project.
To illustrate the simplest use case let us assume that we start with a photo with a single face in it.
pychubbyimplements a classLandmarkFacewhich stores all relevant data that enable face warping. Namely it is the image itself and 68 landmark points. To instantiate aLandmarkFaceone needs to use a utility class methodestimate.
Note that it might be necessary to upsample the image before the estimation. For convenience theestimatemethod has an optional parametern_upsamples.
Once the landmark points are estimated we can move on with performing actions on the face. Let’s try to make the person smile:
frompychubby.actionsimportSmilea=Smile(scale=0.2)new_lf,df=a.perform(lf)# lf defined abovenew_lf.plot(show_landmarks=False)
There are 2 important things to note. Firstly thenew_lfnow contains both the warped version of the original image as well as the transformed landmark points. Secondly, theperformmethod also returns adfwhich is an instance ofpychubby.base.DisplacementFieldand represents the pixel by pixel transformation between the old and the new (smiling) image.
To see all currently available actions go toGallery.
To create an animation of the action we can use thevisualizationmodule.
frompychubby.visualizationimportcreate_animationani=create_animation(df,img)# the displacement field and the original image
If you get an errorFileNotFoundError: [Errno 2] No such file or directory: 'cmake': 'cmake', you need to make surecmakeis installed. If you're on OSX you can install this via Homebrew with:
pychubbyalso comes with a CLI that exposes some of its functionality. You can list the commands withpc --help:
Usage: pc [OPTIONS] COMMAND [ARGS]... Automated face warping tool. Options: --help Show this message and exit. Commands: list List available actions. perform Take an action.
To perform an action (Smile in the example below) and plot the result on the screen
We all know the story. You ask a random person on a street to take a photo of you and your friends. After a few moments you happily thank them and go on with your life. After some time you finally sit down for a cup of coffee and check your photos. “My god, why is none of us smiling?!”.
First of all, do not panic. It is your lucky day. If you know how to pip install things there might be hope.
Pychubby is an automated face warping tool. Its main goal is to serve as a specialized augmentation interface for deep learning face related tasks. But it might as well be used as a silly face warping tool (see the introduction).
You might wonder why even bother when one can do similar things with Photoshop and other software. The answer is simple -automation. You do not have to locate any landmarks, move them around and then repeat the procedure on each face in every photo.
Popular image augmentation packages likeimgaugare general purpose (any kind of image) and do not provide many options when it comes to geometric transformations.pychubbyis specialized on human faces and allows for creation of geometric transformations that are:
Local (on the face)
Smooth (no artifacts)
Realistic (to an extent)
In other words one does not augment the whole image but just the faces. The augmentations are realistic and have no artifacts.
Building blocks
The logic ofpychubbycan be summarized in three blocks
Landmark Detection
Given a photo, a pretrained landmark detection model predicts 68 landmarks on each face.
Reference Space Mapping
The landmarks are mapped into a so called reference space. This mapping corrects for possible rotations, translations and scaling in the input image.
Manual Action Definition
Majority ofpychubbyactions are defined in the reference space and therefore should yield consistent warpings across different faces. Go toGalleryto see the predefined ones or feel free to define new ones.
Want to know more?
If you are interested in givingpychubbya try or just want to learn more see below a few useful links:
From ICDAR 2019: Face Detection in camera-captured images of identity documents under challenging conditions
https://www.profillic.com/paper/arxiv:1911.03567
(They survey three state-of-the-art face detection methods based on general images, i.e. Cascade-CNN, MTCNN and PCN, for face detection in camera captured images of identity documents, given different image quality assessments) https://m.facebook.com/groups/1738168866424224?view=permalink&id=2451285281779242&sfnsn=mo
ImageNet 데이터셋 기준 Top-1 Accuracy는 87.4%, Top-5 Accuracy는 무려 98.2%!! 를 달성하였는데요, 이제는 어디서든 쉽게 구할 수 있는 외부의 unlabeled 데이터셋을 잘 활용하기 위한 Self-training 기법을 이용하는 것이 핵심 아이디어입니다.
제가 전에 리뷰했던 논문인 EfficientNet (리뷰 글:https://hoya012.github.io/blog/EfficientNet-review/) 을 기반으로 연구를 하였고, 정말 간단한 방법이면서 성능도 좋아서 주목할만한 것 같습니다. 학습 디테일을 제외하면 첨부한 알고리즘 그림 하나만 이해하면 끝이 납니다.
또한 결과 분석에서 단순히 정확도만 보는게 아니라, 올해 공개된 Robustness 관련 논문들에서 제안한 데이터셋인 ImageNet-A, ImageNet-C, ImageNet-P 등 알고리즘의 Robustness를 측정하는데 사용되는 test set에 대해서도 SOTA를 달성한 것이 인상깊네요.
- ImageNet-A 관련 논문: Natural Adversarial Examples, 2019 arXiv (https://arxiv.org/abs/1907.07174)
- ImageNet-C, ImageNet-P 관련 논문: Benchmarking Neural Network Robustness to Common Corruptions and Perturbations, 2019 ICLR (https://arxiv.org/abs/1903.12261)
Classificatin 연구의 동향이 변화하는 과정도 재미가 있기도 하면서, 이제는 뭘 더 할수 있을지 궁금하기도 하네요 ㅎㅎ
- 2012~2016: AlexNet, VGG, googLeNet, ResNet, DenseNet, SENet 등 사람이 이런저런 시도를 하면서 그럴싸한 네트워크를 디자인하는 흐름
- 2016~2018: AutoML을 이용한 Neural Architecture Search(NAS)를 이용해서 최적의 구조를 찾고, 탐색에 필요한 시간을 획기적으로 줄이고 줄인 만큼 큰 구조를 만들어내는데 집중
- 2019 초중반: AutoML에서 찾은 구조를 기반으로 사람이 튜닝을 하며 성능 향상
- 2019 중후반: 수십억장의 web-scale extra labeled images를 이용해서 무수히 많은 데이터를 잘 활용하여 ResNeXt로도 SOTA를 달성
- 2019 말(지금): 수십억장의 이미지 대신 unlabeled images 3억장을 써서 Self-Training을 활용하여 SOTA 달성
저도 처음 SLAM이나 localization을 공부할 때 코드 구현에 익숙치 않았는데요,
김기섭 (Paul Giseop Kim) 을 본받아 저는 실제 2D LiDAR 데이터로 Monte Carlo Localization을 구현했던 c++ 기반 ROS 코드 공유합니다. :)
https://github.com/LimHyungTae/mcl_2d_lidar_ros
Indoor환경(그렇게 로봇이 빠르게 움직이지 않는 환경)에서 sensor sync 맞추는 것부터
수식으로 보던 odometry 모델 기반 prediction, weightening, resampling하는 것을 실제 rosbag을 돌려보면서 경험해볼 수 있어
아직 전체 프레임워크에 익숙치 않은 분들이 살펴보시면 좋을 것 같습니다.
SLAM의 optimization의 익숙치 않음을 피하기위해 Map을 만들 때에도 모션캡쳐를 이용해서 만들었습니다.
★코드의 전체적인 틀은 저희 연구실의 초-에이스인 송승원 박사과정 학생이 슬린이들도 쉽게 이해할 수 있도록 구현했습니다. https://www.facebook.com/groups/DataScienceGroup/permalink/2765440956851110/?sfnsn=mo
torchtext, spacy 등을 이용하지않고 최대한 python과 pytorch만을 사용하고, 특히 한국어 corpus를 활용하여, 논문을 구현한 구현체 모음을 공개합니다 (pretrained word vector가 필요한 경우 gluonnlp에서 word vector를 활용합니다.) 특히 자연어처리 논문을 구현할 때, 필요한 glue code들이 무엇인 지 궁금하신 분들은 Vocab, Tokenizer 등의 코드들을 보시면 좋을 것 같습니다.
아래의 repo에는 주로 sentence classification, pairwise-text classfication의 논문들이 구현되어있으며, 현재 추가적으로 named entity recognition, machine reading comprehension, neural machine translation 등을 구현 중입니다. 한국어 데이터에 대해서 현재 개발중이신 모델이 어느 정도로 구현이 잘 된 것인지 확인하실 때, 참고해주시면 좋을 것 같습니다.
[sentence classification] bert pretrained 활용한 경우 etri와 skt pretrained를 사용한 두 가지 버전이 있습니다. 사용한 데이터셋은 이전에 박은정님이 공개하신 "naver movie review corpus"입니다. link : https://github.com/e9t/nsmc
1. Convolutional Neural Networks for Sentence Classification (https://arxiv.org/abs/1408.5882) 2. Character-level Convolutional Networks for Text Classification (https://arxiv.org/abs/1509.01626) 3. Efficient Character-level Document Classification by Combining Convolution and Recurrent Layers (https://arxiv.org/abs/1602.00367) 4. Very Deep Convolutional Networks for Text Classification (https://arxiv.org/abs/1606.01781) 5. A Structured Self-attentive Sentence Embedding (https://arxiv.org/abs/1703.03130) 6. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (https://arxiv.org/abs/1810.04805)
[pairwise-text classification] bert pretrained 활용한 경우 etri와 skt pretrained를 사용한 두 가지 버전이 있습니다. 사용한 데이터셋은 송영숙님이 공개하신 "Question pair" 데이터입니다. link : https://github.com/songys/Question_pair
1. Siamese recurrent architectures for learning sentence similarity (https://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/viewPaper/12195) 2. A Structured Self-attentive Sentence Embedding (https://arxiv.org/abs/1703.03130) 3. Stochastic Answer Networks for Natural Language Inference (https://arxiv.org/abs/1804.07888) 4. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (https://arxiv.org/abs/1810.04805) https://www.facebook.com/groups/PyTorchKR/permalink/1527443790728630/?sfnsn=mo
오늘은 SOS LAB 이용이 박사님이 자율주행에서의 개체 인식을 목적으로 연구되고 있는 딥러닝 기반 3D object detection 논문들의 최근 동향에 대해서 이야기해주셨습니다.
뒷부분은 너무 재밌어 몰입하느라 적지 못했지만 간단히 정리해보면, 라이다의 3세대
1 세대 : Velodyne Lidar - 스피닝 방식. 회전을 하며 360도를 촬영함 . 단점은 내구성이 낮음
2 세대 : Mechanical Scanning -IBEO - 내구성이 좋아짐 - 단점 : 물체가 있다. 없다. 정도만 인식 가능
3세대 : Hybrid Scanning (SOS LAB이 쓰는 것) - 굉장히 빠른 스캐닝 - 3cm 의 오차정확도 - 360도는 촬영을 못함 - 150도의 3D 모델링 가능
라이다 시스템 : Transmitter - 사람의 눈에 905nm 이상은 사람의 각막에 안좋음 - 하지만 1550nm 이상은 사람 각막을 뚫지 못함 -최근 연구에 사람 각막은 뚫지 못하지만 카메라에 데이지 입힘
라이다 응용분야 : - 항공 - 군사 - 토목,건축 - 지리 정보 시스템 - 자율주행 자동차
자율주행자동차 : -자율주행 레벨 5 : 사람이 상상하는 진짜 자율주행을 레벨 5라고 한다.(진짜 자율주행 : 사람이 전혀 운전하지 않아도 주행)
현재 테슬라의 자율주행은 레벨3 정도 레벨 4 : 객체를 인식해서 자동으로 피하는 정도.(우버, 바이두 ,웨이모) 레벨 5 : 레벨 5와 레벨4의 다른점은 레벨4가 성숙되어 조향장치가 없는 자동차
자율주행을 위한 자동차는 센서가 굉장히 많이 필요하다. (현재의 기술로는)
자율주행 자동차를 위한 데이터 수집
- 각 회사, 나라에서 데이터셋을 구축하는데 노력을 많이 하고 있다. - 이유는 인도에서 잘 되는 자율주행자동차가 한국에서 잘 되진 않는다. (인도에서는 거리에서 소가 지나가님)
자율주행의 핵심 요소:
1. 개체 인식 2. 위치 추정(SLAM) 3. 센서/감지 4. 경로 계획/제어
딥러닝이 자율주행에 가장 실용적으로 적용되는 분야는 Recognition 이다.
- 딥러닝이 아무리 잘되도 input이 garbage면 예측이 어렵다. (자율주행에서는 터널에서 나왔을때 갑자기 밝은 빛이 들어오는 경우)
-이미지 기반의 딥러닝이 아무리 잘된다고 하더라도(99%이상이더라도) 1%의 미스가 큰 사고로 이어짐 - 그래서 이미지와 라이다 등 다른 정보들을 사용해서 모델의 성능을 높이는 연구가 많이 되고 있음
자율주행에서의 객체인지란? - 내가 주행하고 있을때 주위의 위치, 방향(X,Y,Z) - 2D와는 다르게 3차원이어야함
라이다 point cloud를 이용한 object detection?
-라이다에서 얻어지는 포인터 클라우드는 데이터의 연관성이 전혀 없다. -포인트 클라우드는 규칙적이지 않다.(포인트의 갯수가 항상 일정하지 않다.) -라인다 포인트 클라우드는 덴시티가 전부 다르다. (멀리서 찍으면 포인터가 sparse하다)
궁금점 : 같은 오브젝트를 같은 각도, 같은 distance에서 두번 찍엇을때 포인터 클르우드의 포인터 갯수가 달라지나? - > 답변 : 거의 비슷하지만 다른 객체가 배경에 있다면 Index가 달라짐
oxelization : Voxelization + 3D CNN - Voxel 만드는 과정에서 cost가 굉장히 많이 든다. - 정확도에서는 장점이 있음 - Voxelization 에 딥러닝을 적용하여 가장 잘 된 논문 - Voxel NET 포인터 클라우드를 일렬로 넣고 피쳐 임베딩을 계속 시킴
내가 한 질문 : 이거 겁나 느릴것 같은데? 6~10 FPS 정도 나온다. 그러면 자율주행에서 안전하다고 기준되는 바운더리의 값은 몇이냐? 레이더에서는 10FPS 정도이다( 라이다는 200미터 앞을 측정할 수 있기에 기준이 낮다.) 카메라에서는 60 FPS 정도로 본다.
2D Projection + 2D CNN 일단 형태를 2D로 만들고 딥러닝에 넣자.
MV3D 라이다 3D 데이터를 카메라랑 똑같은 RGB, bird eye view , Front view 세가지를 CNN에 넣고 feature를 뽑은 다음 concat 함
Frustum PointNets
1. 카메라에서 먼저 2D object detection을 함 2. detection 한 부분에서만 포인트 클라우드 적용
정말 좋은 세미나 였습니다. 이용이 박사님, SOS LAB함께 모두연 AI COLLEGE 달려보겠습니다! https://www.facebook.com/groups/modulabs/permalink/2561195253945642/?sfnsn=mo
Machine Learning Tutorial 6 - Decision Tree Classifier and Decision Tree Regression in Python https://www.facebook.com/groups/DataScienceGroup/permalink/2755799524481920/?sfnsn=mo