[Day44] Training & Inference
·
AI/부스트 캠프 AI tech
[Day44] Training & Inference 오늘 한 일 지금까지는 기본적으로 모든 데이터를 학습해서 제출을 진행하였다. 이제는 모든 데이터를 사용해서 학습을 진행하는 것이 아니라 검증 데이터를 따로 나눠서 진행을 해보자. 현재 대회는 이미지 분류이므로 랜덤으로 검증 데이터를 나누는 방법이 아니라 각 class마다 같은 비율로 검증데이터를 나눠야 조금 더 적절한 검증을 진행 할 수 있다. sklearn패키지를 이용하여 train과 test set을 나누어 보겠다. from sklearn.model_selection import train_test_split X_train,X_val,y_train,y_val=train_test_split(train_data['image_path'],t..
[Day43] Model
·
AI/부스트 캠프 AI tech
[Day43] Model 새로운 모델을 짜서 학습을 시켜보자. 이때 학습에 시간을 줄이기 위한 방법을 생각하자. 오늘 한 일 파이토치 성능향상을 위한 7가지 모델 학습시 전처리 방법 Dataset을 직접 만들어서 각 iter마다 데이터를 불러오는데 시간을 줄이기 DataLoader num_workers에 대한 고찰 DataLoader에 대한 실험 아래 값은 고정으로 두고 실험을 진행 epochs = 5 batch_size=32 # Dataset은 고정 class imgDataset(Dataset): def __init__(self, img_paths, transform): self.img_paths = img_paths['image_path'] self.labels=img_paths[&#3..
[Day42] Data Feeding
·
AI/부스트 캠프 AI tech
[Day42] Data Feeding 오늘 한 일 먼저 기본 baseline에 있는 모델을 통해서 정확도를 확인해 보았다. epochs=10, lr=0.0001의 결과 정확도는 11.62% 나왔다. 다음으로 epochs=100을 놓고 다시 학습한 결과 정확도는 13.25%가 나왔다. 위 그림에서 결과를 볼 수 있듯이 데이터의 class가 4,3,0,1 순으로 많이 몰려 있는 것을 볼 수 있다. 이렇게 학습한 결과 오른쪽과 같이 결과에도 4,3이 많이 예측한 것을 볼 수 있다. 이 문제를 해결하기 위해서 다른 class의 학습 데이터들이 더 필요하다는 것을 확인할 수 있다. ✅ 어떻게 더 많은 데이터를 확보할 것인가? 가장 먼저 많이 없는 class에 대해서 data augmentation을 진행한다. 우..
[Day41] EDA
·
AI/부스트 캠프 AI tech
[Day41] EDA 기본적인 EDA와 몰랐던 함수의 기능들을 정리한다. 오늘 한 일 opencv 문제 가장 먼저 jupyter notebook에서 !pip install -r requirements.txt를 실행하여 관련 패키지를 다운 받았다. 여기서 import cv2에서 다음과 같은 에러가 발생하였다. # ImportError: libGL.so.1: cannot open shared object file: No such file or directory 이 문제를 해결하기 위해서 먼저 jupyter notebook에서 Terminal로 들어가서 apt install libgl1-mesa-glx를 실행하여 해결하였다. 전체적인 과정 가장 먼저 데이터의 전처리를 진행 하였다. train.csv파일에 있는..
[Day40] 행렬 분해
·
AI/부스트 캠프 AI tech
[Day40] 행렬 분해 중요 Kernel method 우리는 2차원 데이터를 위와 같이 분류 하고 싶다. 2차원에서 분류를 하게 되면 Decision surface를 결정하기 쉽지 않다. 하지만 고차원(그림에서 3차원)으로 보내 분류 작업을 진행하면 오른쪽 그래프와 같이 Decision surface를 정의할 수 있다. 그런데 이렇게 모든 점을 3차원으로 보내는 변환 작업을 진행하여 내적을 통한 유사도를 구하게 되면 많은 계산 비용이 든다. 그래서 우리는 kernel을 이용한다. kernel은 모든 점을 3차원으로 옮기는 변환을 진행하는 것이 아니라 3차원에서의 내적 계산 함수를 가지고있어서 원래 2차원의 두 점을 대입하면 바로 내적의 값을 얻을 수 있는 함수이다. 이렇게 되면 같은 결과를 내면서 더 ..
[Day39] 양자화 & 지식 증류
·
AI/부스트 캠프 AI tech
[Day39] 양자화 & 지식 증류 중요 Fixed-point & Floating-point Floating-point 방법을 더 많이 사용한다. 하지만 FPUs를 사용하는데 이것이 조금 무겁고 계산이 오래 걸린다. Quantization 빠른 inference를 위해서 왜 딥러닝에서 양자화가 필요한지에 대한 내용은여기를 확인해 보면 좋을 것 같다. 양자화 mapping은 링크에서 확인 하자. 양자화까지 좋은데 이때 backwoard를 할 때 문제가 된다. 미분 불가능한 점들이 존재하기 때문에 smoothing을 통해서 해결 가능하다. 📌 Quantization 종류 Dynamic quantization(DQ): weight는 미리 양자화 되지만 activation은 inference동안 동적으로 양자화..
[Day38] 가속화 & pruning
·
AI/부스트 캠프 AI tech
[Day38] 가속화 & pruning 중요 LLVM 컴파일러는 프론트엔드-미들엔드-백엔드의 단계로 구성되어 있다. 보통 이 세 단계는 하나의 프로그램으로 일괄 처리되는데, 이럴 경우 '언어의 종류 x 아키텍처의 종류'만큼 복수의 컴파일러가 필요하게 된다. 다양한 언어와 다양한 아키텍처에 대응할 수 있는 이식성이 중요한 요즘 이러한 컴파일러 구조는 재사용성을 떨어뜨린다는 문제가 있다. 바로 이것을 해결할 수 있는 컴파일러 구조가 LLVM이다. LLVM은 아키텍처별로 분리된 모듈식 미들엔드-백엔드를 중점으로 하고 있다. 프론트엔드가 여러가지 프로그래밍 언어들을 중간 표현 코드로 번역하고, LLVM은 그 중간 표현 코드를 각각의 아키텍처에 맞게 최적화하여 실행이 가능한 형태로 바꾸는 방식이다...
[Day37] 시간복잡도 & entropy
·
AI/부스트 캠프 AI tech
[Day37] 시간복잡도 & Compression 중요 NAS(Neural Architecture Search) 모델링을 자동으로 하는 신경망 아키텍쳐 탐색 기술이다. NAS는 검색 공간(search space), 검색 전략(search strategy), 성능 추정 전략(performance estimation strategy)의 세가지 측면으로 분류된다. 📌 검색 공간 검색 공간은 원칙적으로 표현할 수 있는 아키텍처를 정의한다. 적합한 아키텍처의 일반적인 속성에 대한 사전 지식을 사용하면 검색 공간의 크기를 줄이고 검색을 단순화 할 수 있다. 예를 들어 이미지 분류를 할 때에는 residual connection을 이용하여 residual block을 만들어 활용하면 좋을 것이라고 알려져 있다. 이 ..
[Day35] Muti-modal & 3D understanding
·
AI/부스트 캠프 AI tech
[Day35] Muti-modal & 3D understanding Multi modal tasks I (Visual data & Text) https://n-brogrammer.tistory.com/130 Multi modal tasks II (Visual data & Audio) https://n-brogrammer.tistory.com/131 Image captioning 정리 중... 3D understanding 정리 중... 중요 추후 추가 예정... 피어세션 이번주 과제 3 CNN visualization에 대해서 같이 코드 보고 토론을 진행하였다. 팀원들이 모르는 부분을 설명하고 같이 공유할 내용에 대해서 봤다. 이번 과제에서 어려웠던 부분을 각자 이야기 해봄
Multi-modal tasks II (Visual data & Audio)
·
AI/이론
Multi-modal tasks II (Visual data & Audio)¶ ✅ Sound representation¶ Spectrogram or MFCC로 음향의 특징을 추출한다. 1️⃣ Fourier transform(푸리에 변환)¶ 📌 Short-time Fourier transform(STFT)¶ 시간축(t)에 대해서 Waveform 전체를 푸리에 변환을 하게 되면 주파수(f) 축으로 옮겨지게 된다. 대신에 이렇게 전부다 주파수 축으로 옮기게 되면 시간에 따른 변화를 우리가 파악할 수 없게 된다. 그래서 제안 된것이 STFT이다. 짧은 window 구간 내에서만 푸리에 변환을 적용하는 방법이다. 여기서 그냥 변환하는 것이 아니라 Hamming Window랑 곱해서 결과를 도출한다. 이렇게 함으로..
Multi-modal tasks I (Visual data & Text)
·
AI/이론
Multi-modal tasks I (Visual data & Text)¶ ✅ Multi-modal learning Overview¶ 큰 의미에서 Mult-modal learning이라는 것은 다양한 데이터 타입, 데이터 형태, 다양한 특성을 갖는 데이터를 사용하는 학습법을 의미한다. 서로 다른 데이터를 이용해서 학습을 하는 것이다. 1️⃣ Multi-modal learning의 어려움¶ 📌 데이터 표현 방법이 매우 다양하다.¶ 📌 feature spaces간 Unbalance하다.¶ 우리가 Text로 아보카도 모양의 의자를 찾아 달라고 할 때 이런 shape를 가지는 의자의 형태는 Image데이터에 대해서 많이 존재 한다. 1:N 매칭이다. 그 반대도 마찬가지이다. 📌 특정 modality에 편향된 M..
[Day34] Instance/Panoptic segmentation & Conditional generative model
·
AI/부스트 캠프 AI tech
[Day34] Instance/Panoptic segmentation & Conditional generative model Instance segmentation https://n-brogrammer.tistory.com/127 Panoptic segmentation https://n-brogrammer.tistory.com/128 Conditional generative model https://n-brogrammer.tistory.com/126 중요 Landmark location to Gaussian heatmap 피어세션 백준 2467번: 용액 문제를 풀고 토론을 진행 하였다. 많이들 투 포인터 방법으로 풀었지만 이분 탐색을 이용해서 문제를 풀어 보았다. import sys from bisect..
Panoptic segmentation
·
AI/이론
Panoptic segmentation¶ ✅ Panoptic segmentation¶ 1️⃣ What is panoptic segmentation?¶ Instance segmentation은 배경에는 관심이 없고 움직이는 작은 물체들에 대해서 나눴다. 하지만 배경에 대한 분할은 Semantic segmentation이 효과적이지만 Instance에 대해서는 구별을 하지 못하는 한계를 가지고 있다. 따라서 이 두가지가 가능한 Panoptic segmentation이 제시 되었다. 2️⃣ UPSNet¶ $$\text{Semantic & Instance head → Panoptic head → Panoptic logits}$$ backbone Network는 기존의 FPN 구조를 사용한다. Head branc..
Instance segmentation
·
AI/이론
Instance segmentation¶ ✅ Instance segmentation¶ 1️⃣ What is instance segmentation?¶ Instance segmentation은 class가 같더라도 개체가 다르면 다르게 분류한다. Instance segmentation = Semantic segmentation + distinguishing instances 2️⃣ Instance segmenters¶ Mask R-CNN¶ RoIAlign을 통한 RoI추출 한다. RoI pooling의 개선 된 버전이다. 기존의 RoI pooling은 정수 좌표만을 지원했다. 정수 좌표에서 feature들을 뽑아 왔다. RoIAlign에서는 interpolation을 통한 정교한 subpixel 소수점 p..
Conditional generative model
·
AI/이론
Conditional generative model¶ ✅ Conditional Generative Model¶ 1️⃣ (Basic) GAN vs Conditional GAN¶ D: Discriminator G: Generator 다른 부분은 다 똑같지만 Conditional GAN은 입력에 Conditinal 정보를 넣어주기 위해서 c라는 부분이 존재한다. 2️⃣ 예시: Super resolution¶ Input: 저해상도 이미지 Output: Input image에 고해상도 이미지 Conditional GAN의 대표적인 예시 입력은 저해상도 영상이 들어가고 출력은 고해상도 가짜 영상이 나오게 된다. Real 데이터로는 고해상도 이미지를 주어서 판별기가 현재 주어진 생성 영상이 실제 고해상도 영상과 비슷..