-
Bbox 라벨링에 대해서
요근래, 모델 학습 때문에 꽤나 혼잡시러웠다. Detection rate가 너무 낮았다. 겹쳐져있는 물체들은 전혀 detect가 되지 않았다. 무엇이 문제일까? 라고 생각을 하고 찾아보다 결국 선임님께 질문을 드렸다. 나는 Bbox 라벨링을 잘못 하고 있었다. 겹쳐있는 물체는 라벨링하지 않음 화면 밖으로 반즘 잘려나간 물체에 대해서는 라벨링하지않음 알게 된 사실 겹쳐있는 물체여도 겹치는 경우가 많은 경우에는 Bbox를 겹치게 쳐야했다. 밖으로 나간 물체여도 10% 이상이 보인다면 Bbox를 치는 것이 좋다. 그 결과 아래와 같이 겹쳐진 경우에는 전혀 탐지되지 않은 객체들이 잘 검출된다. ... Read More
-
WSL2이란?
2020년 5월 윈도우의 업데이트로 윈도우에서 리눅스를 사용할 수 있게 해주는 WSL2 버전이 정식으로 릴리즈되었다. WSL(Windows Subsystem for Linux 2) 는 윈도우의 가상화 기능을 활용해서 윈도우 시스템과 통합되어 윈도우 내에서 리눅스 사용이 가능하다. Docker Desktop을 사용할 수 있는 것도 이때문이라고 한다. 설치 방법은 간단하다. 관리자 모드로 Powersell 실행 DISM 명령어를 이용하여 Microsoft-Windows-Subsystem-Linux 기능 활성화 dism.exe /online /enable-feature /featurename:M... Read More
-
JavaScript 기본만 빠르게 살펴보기
토이 프로젝트를 위해서 JS를 새로 공부하기로 했다. 니꼴라스 쌤의 강의 를 듣고 나에게 필요한 것들만 메모하여 다시 열어보기 위한 글이다. 니꼴라스쌤이 생각하는 element를 가져오는 가장 멋진 방법 css 방식으로 element 찾는 것이 가능하다. // class name이 hello이고 element가 h1일 때 document.querySelector(".hello h1") document.querySelectorAll(".hello h1") // id의 경우 document.querySelectorAll("#hello") 이벤트 처리 방법 아래 코드처럼 element를 가... Read More
-
FastAPI
FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다. [공식 문서 발췌] FastAPI는 공식 문서 가 잘되어있기때문에 이를 참조하면 좋다. 요근래 일이 좀 많아서 오늘은 간단하게 Fast API 설치하고 웹띄우는 부분만 해보려한다. 설치 uvicorn 은 서버 역할을 한다. $ pip insatll fastapi[all] $ pip install uvicorn 가장 기본적인 코드를 작성한다. from fastapi import FastAPI app = FastAPI() @app.get("/") asy... Read More
-
Data Augmentation
Data Augmentation ‘augment’: 증강시키다. 즉, 하나의 데이터셋을 여러가지 방법으로 증강시켜 데이터셋의 규모를 키우는 방식이다. 종류는 Mirroring, Random Cropping, Rotation, Shearing 등이 있다. 딥러닝의 고질적인 문제 중 하나인 오버피팅을 해결하기 위해서 학습 면적을 너무 과하지않게 변화시키기 위해 사용한다. 출처 이미지에 인위적으로 노이즈를 주어 학습 폭을 넓히는 것인데, 과하게 주면 좋지않다고 한다. 이 글 에서 다양한 augmentaion의 종류를 예제와 함께 볼 수있다. Augmentation의 기법은 개가 있다. Pixel-Level... Read More
-
Data 처리에 관련된 모든 용어
BI(Business Intelligence) 데이터 통합/분석해 기업 활동에 연관된 의사결정을 돕는 프로세스 DL(Data Lake) 다양한 원천을 그대로 가져와 저장하여 다양성을 보존함 Data Mesh DL, DW에서 중앙 집중형 데이터 관리의 문제점으로 인해 생긴 분석 시스템 아키텍쳐로 Monolithic 구조를 가지고 있다. Monolithic 구조는 분석 플랫폼이 모든 도메인에 대해 단일 시스템과 단일 분석팀을 사용한다. 즉, 업무별로 시스템과 팀을 분리하는 구조이다. Data as-a-product 개념을 도입하였다. Data book 데이터 정의서라고 하며 코딩 작업을 할 때의 안내서같은 역할을... Read More
-
TDD(Test Driven Development) (3)
내용이 많아서 분할해서 진행해야겠다 ;( https://testdriven.io/blog/modern-tdd/ 를 참고하여 공부했다. TDD(Test Driven Development) (1) TDD(Test Driven Development) (2) Code coverage 코드 커버리지는 테스트 케이스가 얼마나 충족되었는지를 나타내는 지표중 하나이다. 출처 필요한 패키지를 설치해주고 실행한다. $ pip install pytest-cov $ python -m pytest tests --cove=blog 본문에서 다음을 강조하고있다. High coverage percentage is grea... Read More
-
RetinaNet
RetinaNet이란? 모델이 예측하기 어려운 hard example에 집중하도록 하는 focal Loss를 제안하였으며 Faster R-CNN 속도를 능가함 ResNet-FPN을 back으로 하여 sub-network를 2개 사용한다. (obejct classfication, bounding box regression) class imbalance Yolo같은 모델은 속도는 빠르나 정확도가 낮은데 그 이유를 객체와 배경 클래스의 불균형에서 찾았다.(foreground, background class imbalance) two-stage model은 휴리스틱 샘플링이나 OHEM 기법으로 이러한 class im... Read More
-
TDD(Test Driven Development) (2)
내용이 많아서 분할해서 진행해야겠다 ;( https://testdriven.io/blog/modern-tdd/ 를 참고하여 공부했다. 이전 글 격리는 해제되었으나, 아직도 코로나의 여파로 기침과 두통이 으… 얼른 나았으면 좋겠다 😥 테스트 코드를 따로 안 만들어도 된다고 주장하는 개발자는 대단히 자기 중심적이고 이기적인 사람이다 - 소프트웨어 장인 @pytest.fixture annotate를 사용하면 test 후에 데이터베이스를 지우고 각 테스트 전에 새 데이터베이스를 생성하는 것이 가능하다. 아래 코드를 보면 중간에 yield가 있다. 본문에 의하면 이 yield 일 때 테스트가 진행된다.... Read More
-
TDD(Test Driven Development) (1)
내용이 많아서 분할해서 진행해야겠다 ;( https://testdriven.io/blog/modern-tdd/ 를 참고하여 공부했다. 어떻게 테스트를 해야하는가? 테스트는 기본적으로 아래 3가지에 대한 결과를 제공할 수 있어야한다. GIVEN WHEN THEN 단일 테스트로 모든 테스트는 독립적이여야 하며 각 파이프 라인 별로 1회만 진행한다. 기본 사용 가장 기본적으로는 아래처럼 테스트가 가능하다. 이를 test 파일로 분할시켜보자. def sum1(a, b): return a + b def sum0(): assert s... Read More
-
airflow 기반의 데이터 파이프라인
출시하자마자 책을 샀는데 이제서야 들여다본다. 상반기내로 이 책을 끝내길 바란다. 근데 개인적으로 책 홍보이미지 너무 ㅋㅋ 무슨 분양글인줄 알았다. ** 모든 예제 코드는 https://github.com/K9Ns/data-pipelines-with-apache-airflow 에 있다. 미리 clone 해두자.. 물론 직접 타이핑하는 것도 좋고~ Airflow, 왜써야해? 확장성 python 기반 다양한 스케쥴링 기법 백필 기능 나이스한 web UI Airflow, 이럴땐 쓰지말아야돼! Streaming processing 추가 및 삭제가 빈번한 동적 파이프라인 p... Read More
-
데이터 디스커버리? 데이터 거버넌스?
매일 아침 it 관련 글을 읽어본다. 오늘 본 글 중에는 데이터 디스커버리 플랫폼 도입기 - 1편. 데이터 디스커버리란?(feat. Datahub VS Amundsen 비교 분석 데이터 드리븐의 기초 : 데이터 거버넌스 이 2가지 글이 있었다. 데이터 디스커버리 데이터 디스커버리는 기업들이 다양한 자료원으로부터 자료를 수집해 사업적 가치를 창출하는 데 이를 적용하는 절차를 말한다. Data Discovery Platform은 분석 환경에 있는 모든 데이터를 편하고 쉽게 검색하고, 빠르게 이해할 수 있는 플랫폼입니다. 찾을 수 없는 것은 보호할 수도 없다. 포괄적인 데이터 디스커버리 ... Read More
-
파이썬 사용 시 메모리 최적화
전에 TB급 데이터를 다루면서 메모리 관리가 얼마나 중요한지 알게되었다. 툭하면 파이프라인이 메모리로 터지곤했다…ㅠㅠ 그러다가 좋은 글을 하나 발견했다. 바로 Optimizing Memory Usage in Python Applications 이 글이다. 첫 문장에 바로 나같은 사람을 지칭하고있었다. arely is anyone concerned with memory consumption, well, until they run out of RAM. 왜 메모리를 절약해야할까? 굉장히 직관적인 이유를 말하고 있었다. 돈. 돈은 매우 중요하다 인력을 쓰든, cloud를 쓰든 뭐든 돈이니… One sim... Read More
-
ELK + beats 시작하기 2
이전 글: ELK + beats 시작하기 어떻게 구성할 것인가? 가이드 글에 나타난 것처럼 beath와 elk의 동작은(가장 기본적인) filebeat의 내용을 elk로 보내면 된다. 난 여기서 filebeat이랑 logstash 서버를 달리하고싶은건데… 이 포스터 가 정말 다양한 구성을 보여주고 있어서 좋다. 아래 그림은 그 중 가장 기본적인 구조이다. 처음에 위 그림에서 master / data nodes (3)이 이해가 안갔다. master 1에 data 3개라는 뜻인가…? master, data 모두 3개라는 뜻인가? 이 곳 에서 해답을 찾을 수있었다. Master eligibl... Read More
-
zero-shot
zero-shot이 뭘까? 위키에서는 다음과 같이 정의되어있다.(https://en.wikipedia.org/wiki/Zero-shot_learning) Zero-shot learning (ZSL) is a problem setup in machine learning, where at test time, a learner observes samples from classes, which were not observed during training, and needs in order to predict the class they belong to 보통 training example 수가 적을 때 사용하는 방... Read More
-
Object tracking
Object tracking을 위해선 각 프레임마다 나타나는 object간 유사성 비교가 반드시필요하다. 이를 위해서는 이미 연구가 많이 되어있는 상태 Deep Sort, roboflow의 CLIP, 국내에서도 Deep Learing을 기반으로 한 Feature Extraction 알고리즘의 분석 이 있다. 지난번에 YOLO 모델을 돌리기위해 일일히 라벨링을 해야했다. 물론 좋은 데이터의 품질을 위해선 이런 라벨링이 필수적이라고 생각하지만 조금 더 수월하게 진행할 방법이 없을까? 라는 생각이 들었다. 너무 어렵게 접근하려는 것 같다는 생각이 문득 들었다. YOLO 모델까지도 가지않고 정확히 feature e... Read More
-
ELK + beats 시작하기
ELK stack과 beats를 이용해 시스템 모니터링을 할 수있도록 해보자. 우선 docker 기반으로 진행할 것이다. ELK: ELK는 3가지 오픈소스 소프트웨어 Elastic Search, LogStatsh, Kibana의 조합. 각 제품이 연동되어 데이터 수집 및 분석 툴로서 동작 Beats: Beats는 단일 목적의 데이터 수집기 무료 오픈 소스 플랫폼입니다. 수백 수천 개의 장비와 시스템으로부터 Logstash나 Elasticsearch에 데이터를 전송 https://shanepark.tistory.com/241 를 기반으로 ELK stack on docker를 설치한다. 이 블로그를... Read More
-
YOLO(You Only Look Once) v5 Custom 데이터로 동작시키기
AI허브에 공개된 물고기 동영상 데이터를 이용했다. https://aihub.or.kr/aidata/30735 YOLOv5 깃허브 에 나와있는 것과같이 roboflow 를 이용해서 어노테이션을 진행했다. 물론,, 데이터 양이 많으면 당연히 좋겠지만 일단 소량으로 진행해봤다.. 너무 적나 하하.. 오 그래도 탐지가 되긴한다. Read More
-
YOLO(You Only Look Once) v5 사용해보기
구축 환경: ubuntu on windows https://github.com/ultralytics/yolov5/wiki 에 가이드가 잘되어있기 때문에 따라하면 될 듯하다 :) 설치 및 환경 설정하기 1. 콘다 설치 Installing on Linux 페이지를 참고하여 설치 2. 가상환경 생성 $ conda create -n yolov5_env python=3.8 $ conda activate yolov5_env 3. yolov5 깃헙 클론 및 requirement 설치 $ git clone https://github.com/ultralytics/yolov5.git $ pip install -r requ... Read More
-
YOLO(You Only Look Once) v5
YOLO(You Only Look Once) YOLO는 지도학습(모델의 클래스와 위치를 기반으로 학습한다.) 모델이며, one-stage-detection 방법을 처음으로 고안한 모델이다. 관련하여 흥미로운 사실이 있는데, YOLO를 처음 고안한 조셉 레드몬이 20년 2월 21일 트윗을 기점으로 더 이상 비전 연구를 하지않았다는 것이다. 그 이유는 아래 트윗에 나와있듯이 이 연구가 좋은 방향으로 도움이 되는 것이 아니라고 판단했기때문이라고한다. YOLO의 특징 단 한 번만 본다. 단 하나의 인공 신경망에서 모든 거이 처리된다. 실시간 객체 탐지가 가능하다. (기존 Faster R-CNN 대비 6배 ... Read More
-
Object Detection Stage
2-stage Detector: Regional Proposal/ Classification을 순차적으로 진행함. ex: R-CNN, Fast R-CNN 등 1-Stage Detecotr: Regional Proposal/ Classification을 동시에 진행함. ex: YOLO, SSD 등 속도와 정확도에 장단점을 갖음. 정확도가 높기 위해선 2-Stage가 속도를 높이기 위해선 1-Stage가 좋은 것. Regional Proposal: 기존 sliding window방식을 효율적으로 구성하기 위해 물체가 존재할 법한 영역을 빠르게 찾아내는 알고리즘 조금 더 자세하게 들어가자면,, ... Read More
-
luigi
서론 혼자 짜투리 시간에 뚝딱뚝딱 뭔가를 만들어보고있는 중인데, Daily로 돌아가야 하는 코드가 있었다. 그래서 이걸 pipeline에 실어서 돌리고자 한다. 가장 유명한 airflow/kubeflow(그냥 내가 자주들어본) airflow는 내 간단한 코드를 돌리기엔 너무 무겁다. kubeflow는 kube도 어려운데.. kubeflow를…? 그래도 airflow, kube 써보고싶다 ㅠㅠ 언제쯤 리얼서비스에서 써볼 수 있을까? 얼른 분발해야겠다! 아무튼 “무겁다” 라고 생각하던 와중에, 이 블로그 를 읽게 되었다. 해당 블로그에서는 많은 pipeline 도구들을 비교분석해주었다. 위에 글을 읽고나니 luig... Read More
-
kubernetes의 기초
쿠버네티스가 뭐야? 쿠버네티스 는 container 오케이스트레이션 플랫폼으로 현재는 사실상 표준처럼 사용된다. 여러대의 서버가 존재하는 클러스터에서 container 관리를 위해 사용된다. 공식 홈페이지 에 따르면 “쿠버네티스는 container화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다” 라고 설명하고 있다. 쿠버네티스가 왜 필요했을까? 출처 https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/ 초기에는 하나의 물리적 서버에 모든 application을 실행했다. 상식적으로,, applicat... Read More