전체 글
스타트업 6년차 Computer Vision 엔지니어. 논문 리뷰 및 코딩 삽질 등을 공유하고 있습니다. Pose Estimation을 주로 하고 있어요. LinkedIn : https://www.linkedin.com/in/wooil-jang-7b2853193/
-
두 개의 사진의 차이점을 비교하는 Change Detection 분야의 논문인데 Transformer 기반으로 만들어졌습니다. Siamese 네트워크 구조를 참고해서 계층적 transformer encoder와 여러 스케일의 feature 차이를 계산하는 4개의 feature 차이 모듈 및 경량 MLP Decoder를 사용해서 multi-level feature 차이를 융합하고 CD(Change Detection) mask를 예측한다. 1. Hierarchical Transformer Encoder 그림1에서 볼 수 있듯이 input bi-temportal image(찍은 시점이 다르고 카메라가 같은 두 이미지)가 주어졌을 때, 고해상도의 coarse feature와 저해상도의 fine-grained f..
A TRANSFORMER-BASED SIAMESE NETWORK FOR CHANGE DETECTION 논문리뷰두 개의 사진의 차이점을 비교하는 Change Detection 분야의 논문인데 Transformer 기반으로 만들어졌습니다. Siamese 네트워크 구조를 참고해서 계층적 transformer encoder와 여러 스케일의 feature 차이를 계산하는 4개의 feature 차이 모듈 및 경량 MLP Decoder를 사용해서 multi-level feature 차이를 융합하고 CD(Change Detection) mask를 예측한다. 1. Hierarchical Transformer Encoder 그림1에서 볼 수 있듯이 input bi-temportal image(찍은 시점이 다르고 카메라가 같은 두 이미지)가 주어졌을 때, 고해상도의 coarse feature와 저해상도의 fine-grained f..
2022.01.07 -
기존 Transformer에서는 Token Mixer 영역을 Attention으로 해서 처리했고, 많은 논문들에서는 Attention을 개선시키는 시도를 했다. 최근에는 attetnion을 MLP로 바꾼 모델도 성능이 좋았고, 이 논문에서는 단순하게 공간 Pooling을 통해 이를 개선시켰다. 그래서 이 논문에서는 Transformer의 기존 Attention 영역을 Token Mixer라고 추상화하는 형태인 Metaformer 아키텍처를 제안한다. Pooling을 기반으로 한 PoolFormer는 향후 MetaFormer 아키텍처 설계를 위한 좋은 baseline으로 사용할 수 있다고 제안하고 있다. - Transformer 기반 모델의 성공은 Attention 때문이 아니라 MetaFormer 아키텍..
MetaFormer is Actually What You Need for Vision 논문리뷰기존 Transformer에서는 Token Mixer 영역을 Attention으로 해서 처리했고, 많은 논문들에서는 Attention을 개선시키는 시도를 했다. 최근에는 attetnion을 MLP로 바꾼 모델도 성능이 좋았고, 이 논문에서는 단순하게 공간 Pooling을 통해 이를 개선시켰다. 그래서 이 논문에서는 Transformer의 기존 Attention 영역을 Token Mixer라고 추상화하는 형태인 Metaformer 아키텍처를 제안한다. Pooling을 기반으로 한 PoolFormer는 향후 MetaFormer 아키텍처 설계를 위한 좋은 baseline으로 사용할 수 있다고 제안하고 있다. - Transformer 기반 모델의 성공은 Attention 때문이 아니라 MetaFormer 아키텍..
2022.01.07 -
2021년 12월, 최근 발표된 Vision Transformer 관련 논문으로 대량의 데이터가 필요한 기존의 ViT 문제를 해결한 논문입니다. 소규모 데이터셋에서도 scratch에서(처음부터) 학습할 수 있는 SPT(Shifted Patch Tokenization) 및 LSA(Locality Self-Attention) 모듈을 제안하여, ViT에 모두 적용하여 실험한 결과 대표적인 소형 데이터셋인 TinyImageNet(클래스별 500개 데이터, 총 200개 클래스)에서 평균 2.96%의 성능 향상, Swin Transformer는 4.08% 성능 향상 1. Introduction 기존 ViT의 문제점 1) 열악한 토큰화 : non-overlapping patches를 사용함으로 인해 visual to..
Vision Transformer for Small-Size Datasets 논문리뷰2021년 12월, 최근 발표된 Vision Transformer 관련 논문으로 대량의 데이터가 필요한 기존의 ViT 문제를 해결한 논문입니다. 소규모 데이터셋에서도 scratch에서(처음부터) 학습할 수 있는 SPT(Shifted Patch Tokenization) 및 LSA(Locality Self-Attention) 모듈을 제안하여, ViT에 모두 적용하여 실험한 결과 대표적인 소형 데이터셋인 TinyImageNet(클래스별 500개 데이터, 총 200개 클래스)에서 평균 2.96%의 성능 향상, Swin Transformer는 4.08% 성능 향상 1. Introduction 기존 ViT의 문제점 1) 열악한 토큰화 : non-overlapping patches를 사용함으로 인해 visual to..
2022.01.06 -
Traceback (most recent call last): File "", line 1, in File "/tmp/pip-install-d_9jpl7q/opendr_43e938b8a7494027aedf0a8b359f80e9/setup.py", line 40 print "Downloading %s" % osmesa_fname ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Downloading %s" % osmesa_fname) pip로 opendr 설치 중 오류가 발생했을 때의 대처 방법입니다. 가상환경(venv)를 사용하는 게 아니라 anaconda 환경에서 관련 모듈 설치 후 진행해야 정상적으로 설치가 됩니다. ..
pip opendr 설치Traceback (most recent call last): File "", line 1, in File "/tmp/pip-install-d_9jpl7q/opendr_43e938b8a7494027aedf0a8b359f80e9/setup.py", line 40 print "Downloading %s" % osmesa_fname ^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Downloading %s" % osmesa_fname) pip로 opendr 설치 중 오류가 발생했을 때의 대처 방법입니다. 가상환경(venv)를 사용하는 게 아니라 anaconda 환경에서 관련 모듈 설치 후 진행해야 정상적으로 설치가 됩니다. ..
2021.12.23 -
pkl 파일 로드 중 발생한 문제였습니다. 당연히 pickle.dump로 처리된 파일로 생각해서 pickle.load, gzip.load 다써봤으나 오류가 발생했고, 파일을 쓴 원 소스를 뜯어보니 joblib으로 작성된 거였습니다. 해결 방법 import joblib with open('__.pkl', 'rb') as f: data = joblib.load(f) print(data) 모든 경우에 위의 라이브러리(joblib)가 들어맞는 게 아닐 수 있으며, joblib, pickle, gzip으로 다 해봐도 안될 경우는 pkl 파일을 작성하는 부분의 소스를 다시 살펴보시는 게 좋을 것 같습니다.
_pickle.UnpicklingError: invalid load key, '\xc8' 오류해결pkl 파일 로드 중 발생한 문제였습니다. 당연히 pickle.dump로 처리된 파일로 생각해서 pickle.load, gzip.load 다써봤으나 오류가 발생했고, 파일을 쓴 원 소스를 뜯어보니 joblib으로 작성된 거였습니다. 해결 방법 import joblib with open('__.pkl', 'rb') as f: data = joblib.load(f) print(data) 모든 경우에 위의 라이브러리(joblib)가 들어맞는 게 아닐 수 있으며, joblib, pickle, gzip으로 다 해봐도 안될 경우는 pkl 파일을 작성하는 부분의 소스를 다시 살펴보시는 게 좋을 것 같습니다.
2021.12.20 -
npy로 dictionary data가 저장된 경우 불러올 때의 코드입니다. import numpy as np params = {'beta': np.array(betas), 'pose': pose} np_path = 'params.npy') np.save(np_path, params) 저장하기 import numpy as np params = np.load('params.npy', allow_pickle=True) print(params.item().get('beta').shape) print(params.item().get('pose').shape) 불러오기 : 불러올 때는 item().get('키') 형식으로 불러와서 사용하면 됩니다. 참조 : https://stackoverflow.com/quest..
dictionary data npy로 저장/불러오기npy로 dictionary data가 저장된 경우 불러올 때의 코드입니다. import numpy as np params = {'beta': np.array(betas), 'pose': pose} np_path = 'params.npy') np.save(np_path, params) 저장하기 import numpy as np params = np.load('params.npy', allow_pickle=True) print(params.item().get('beta').shape) print(params.item().get('pose').shape) 불러오기 : 불러올 때는 item().get('키') 형식으로 불러와서 사용하면 됩니다. 참조 : https://stackoverflow.com/quest..
2021.12.20