본문 바로가기

AI

(144)
[PyTorch] DataLoader num_workers PyTorch num_workers에 관하여 PyTorch에서의 데이터의 흐름과 적절한 num_workers값을 지정하는 방법 velog.io num_workers = 4 * num_GPU (or 8, 16, 2 * num_GPU) entry * batch_size * num_worker = num_GPU * GPU_throughtput num_workers = batch_size / num_GPU num_workers = batch_size / num_CPU GPU에서 모델을 학습하는 속도와 CPU에서 DataLoader가 데이터를 준비해주는 속도는 다르다. 보통 CPU에서 수행되는 속도가 더 느리기 때문에 DataLoader는 멀티프로세싱을 통해 더 빠르게 GPU에 데이터를 조달한다. 이 때 사용할 ..
[OD] coco2017 dataset 다운로드 [Dataset] COCO(Common Objects in Context) Dataset COCO Dataset : cocodataset.org/#home COCO - Common Objects in Context cocodataset.org COCO API : github.com/cocodataset/cocoapi cocodataset/cocoapi COCO API - Dataset @ http://cocodataset.org/ . Contribute to cocodataset/cocoapi development by creating an eehoeskrap.tistory.com mkdir coco cd coco mkdir images cd images wget http://images.cocodata..
[PyTorch] torch.load error (feat. ModuleNotFoundError: No module named 'models') [error] torch.load error (feat. ModuleNotFoundError: No module named 'models') 상황 직접 만든 모델을 학습 후 torch.save(model, path) 로 저장한 후 torch.load(weight) 을 하는 도중 다음과 같은 에러가 발생하였다. ModuleNotFoundError: No module named 'models' 원인 라이브러리를 통해 model을 학 biology-statistics-programming.tistory.com 상황 직접 만든 모델을 학습 후 torch.save(model, path) 로 저장한 후 torch.loa..
[pip] import cv2 동영상 세팅/읽기/저장 1. 세팅 I also had the same problem with opencv-python-4.6.0.66 I solved this error by just downgrading opencv. you can follow this command. pip install opencv-python==4.5.5.64 AttributeError: partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' (most likely due to a circu This happened out of the blue, I was able to import cv2 but now I get 'AttributeError: partial..
[ML] Precision-Recall Curves PR Curve of a Bad Model Complete Guide to Understanding Precision and Recall Curves Precision is defined as the fraction of the relevant positives out of the retrieved ones. Recall is defined as the fraction of retrieved positives out of the relevant ones. analyticsindiamag.com Precision-Recall Curves 설명 및 그리기(구현)-Python Precision-Recall Curves 설명 및 그리기(구현)-Python Goal 이 페이지에서는 Precision-Recall ..
[ML] Winograd convolution layer https://arxiv.org/pdf/1810.01973.pdf
[ML] Focal Loss hard negative 는 실제로는 negative 인데 positive 라고 잘못 예측하기 쉬운 데이터 easy negative 는 실제로 negative 이고 예측도 negative 라고 잘 나오는 예측이 쉬운 데이터 hard negative sample 을 직석하자만 hard : 어렵다, negative sample: 네거티브 샘플라고, 즉 네거티브 샘플라고 말하기 어려운 샘플이라는 뜻이다. hard negative 는 원래 negative 인데 positive 라고 잘못 예측한 데이터를 말한다. 그림의 빨간 선이 모두 배경을 얼굴이라고 잘못 예측한 hard negative 이다. hard negative는 마치 positive처럼 생겨서 예측하기 어렵다. 모델입장에서 보면 해당 샘플에 대해 ne..
[Pytorch] 텐서 쌓기 함수 torch.cat(), torch.stack() 비교 [Pytorch] 텐서 쌓기 함수 torch.cat(), torch.stack() 비교 torch cat vs stack 함수 차이 이번 글에서는 파이토치에서 텐서를 쌓는 경우 사용하게 되는 cat과 stack 함수의 차이와 사용 방법에 대해서 살펴보도록 하겠습니다. 먼저, 다음과 같이 간단한 (2, 3) shape jimmy-ai.tistory.com 이번 글에서는 파이토치에서 텐서를 쌓는 경우 사용하게 되는 cat과 stack 함수의 차이와 사용 방법에 대해서 살펴보도록 하겠습니다. 먼저, 다음과 같이 간단한 (2, 3) shape의 2차원 텐서 2개를 선언하겠습니다. import torch # (2, 3) 사이즈 2차원 텐서 2개 생성 a = torch.tensor([[1, 2, 3], [4, 5,..
[PyTorch] torch.nn.CrossEntropyLoss() cls_loss = nn.CrossEntropyLoss() test_pred_y = torch.Tensor([[2,0.1,0.3],[0,1,0.3]]) # 실제 사용에선 softmax에 의해 각 행의 합이 1이 될 것이다. test_true_y1 = torch.Tensor([1,0]).long() # 1은 true값이 1번째(클래스)라는 것을 의미 test_true_y2 = torch.Tensor([0,1]).long() print(test_pred_y.shape) print(test_pred_y) print(test_true_y1) print(test_true_y2) print(cls_loss(test_pred_y, test_true_y1)) print(cls_loss(test_pred_y, test_..
[PyTorch] torchvision.dataset.CoCoDetection dataLoader를 만들어서 train함수에 넣어주어야 하는데 이 때 dataLoader를 만들려면 class로 데이터셋에 대한 정의가 있어야 한다. !git clone https://github.com/pdollar/coco/ %cd coco/PythonAPI/ !make !python setup.py install %cd ../.. !rm -r coco !sudo apt-get update !sudo apt-get install aria2 !aria2c -x 10 -j 10 http://images.cocodataset.org/zips/train2017.zip !aria2c -x 10 -j 10 http://images.cocodataset.org/zips/val2017.zip !aria2c -x ..
[PyTorch] model의 parameter 접근하기 nn.Linear()등으로 정의한 파라미터 접근은 parameter(), named_parameters()으로 가능하다. 정확히는 layer가 모두 nn.Module()을 상속받으므로 Module에 정의되어 있는 parameter 접근 방법을 사용하면 된다. 1. torch.nn.Module.parameters() parameter()는 layer 이름을 제외한 parameter값에 대한 iterator를 준다. layer = torch.nn.Linear(10,3) layer >> Linear(in_features=10, out_features=3, bias=True) for p in layer.parameters(): print(p) >> Parameter containing: tensor([[-0.2..
[ML] DCN, Deformable Convolution Networks 일반적으로 object detection 또는 segmentation은 pre-trained model을 사용합니다. 따라서 모든 layer에 deformable convolution을 사용하는 것이 아니라, 마지막 1~3 layer만 deformable convolution으로 변경하여 전이 학습을 진행합니다. [논문 읽기] DCN(2017) 리뷰, Deformable Convolution Networks 안녕하세요! 이번에 읽어볼 논문은 DCN, Deformable Convolution Networks 입니다! DCN은 (1) deformable convolution, (2) deformable RoI pooling 두 가지 방법을 제시합니다. 기존 CNN 구조 모델은 고정된.. deep-learni..
[ML] AutoEncoder 또한, 오토인코더는 reduction 측면과, reconstructing 측면이 함께 학습되며, 압축된 data coding을 통해서 실제 입력과 최대한 가까운 결과를 생성하기 때문에 Generative Model의 역할도 수행할 수 있습니다. 위 내용을 토대로 위키피디아에서 오토인코더의 키워드는 다음과 같습니다. Keword - Unsupervised learning - Representation learning (= Efficient coding learning) - Dimensionality reduction - Generative model learning 주로 오토인코더는 Dimensionality reduction, 차원 축소를 위해서 많이 사용됩니다. 오토인코더의 차원축소는 정확히 말하면 N..
[ML] 분류 성능 평가 지표 1. Precision, Recall and Accuracy Precision, Recall, Accuracy는 논문에서도 사용하는 지표들이며 가장 눈에 익는 지표들입니다. 하지만 서로 헷갈리는 경우가 많으니, 제대로 정리할 필요가 있겠습니다. 우리는 모델이 예측한 다양한 경우를 생각해보며, 위의 2x2 matrix에 해당하는 것을 어떻게 지표화 할 것인지 고민해보겠습니다. 지표를 고민함과 동시에 실제 사례를 들어서 해당 지표를 왜 써야하는지도 함께 생각해보고자 합니다. 여기서는 한달 동안의 날씨를 예측하는 상황을 생각해보겠습니다. 날씨는 비가 오거나 맑거나 두 가지만 존재한다고 가정합니다. 1.1 Precision(정밀도) 정밀도란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율입니다...
[ML] CNN의 역전파(backpropagation) cnn을 대충대충 알고서는 안다고 생각하고 있었는데 하나 하나 뜯어보니 제대로 아는게 하나도 없었다... 개념설명할 때도 항상 feed forward만 설명하지 backpropagation은 없었다. CNN의 역전파(backpropagation) · ratsgo's blog 이번 포스팅에서는 Convolutional Neural Networks(CNN)의 역전파(backpropagation)를 살펴보도록 하겠습니다. 많이 쓰는 아키텍처이지만 그 내부 작동에 대해서는 제대로 알지 못한다는 생각에 저 스스로도 ratsgo.github.io
[ML] Backpropagation Back Propagation이란 'Back Propagation' 는 Output Layer 직전의 Layer부터 최적화합니다. 미리 말하고 싶은 것은 'Back Propagation'도 Gradient Descent를 이용합니다. 즉 앞서 배웠던 Forward Propagation처럼 Cost를 구하여 W를 여러번 갱신하여 최적화합니다. 다만 그 차이는 'Forward Propagation'은 한번의 갱신을 위한 Cost를 구하는데 비효율적으로 많은 연산을 필요로 합니다. 그러나 'Back Propagation'에서는 최적화의 순서를 달리하여 몇번의 연산만으로 Cost를 구할 수 있습니다. 수식↓ A Step-by-Step Implementation of Gradient Descent and Back..
[ML] Transfer learning 2 Transfer learning은 classifier를 변경한다. Fine tuning은 이렇게 변경된 모델 전체를 다시 training한다. [DL] Transfer Learning vs Fine-tuning, 그리고 Pre-training 딥러닝에서 신경망을 공부하다보면 transfer learning과 fine tuning이라는 단어를 심심치않게 접할 수 있다. 둘 사이에는 무슨 차이가 있을까? 사실 필자도 생각없이 혼용하다(ㅋㅋ) 의문점을 해소할 heeya-stupidbutstudying.tistory.com [ 딥러닝 알아가기 ] Transfer Learning과 Fine Tuning Transfer Learning (전이학습) 성능이 좋은 딥러닝 모델을 만드는 최고의 방법은 바로 많은 수의 데..
[MMDetection] Config File Structure Config Name Style We follow the below style to name config files. Contributors are advised to follow the same style. {model}_[model setting]_{backbone}_{neck}_[norm setting]_[misc]_[gpu x batch_per_gpu]_{schedule}_{dataset} cascade_mask_rcnn_r101_fpn_1x_coco.py {xxx} is required field and [yyy] is optional. {model}: model type like faster_rcnn, mask_rcnn, etc. [model setting]: specific setting f..
[ML] Fully Convolutional Layer, Fully Connected Layer, AutoEncoder Fully Connected Layer1 만으로 구성된 인공 신경망의 입력 데이터는 1차원(배열) 형태로 한정됩니다. 한 장의 컬러 사진은 3차원 데이터입니다. 배치 모드에 사용되는 여러장의 사진은 4차원 데이터입니다. 사진 데이터로 전연결(FC, Fully Connected) 신경망을 학습시켜야 할 경우에, 3차원 사진 데이터를 1차원으로 평면화시켜야 합니다. 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없습니다. 결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있습니다. 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN(Convolutional Neural Network)입니다. ..
[OD] DBNet GitHub - WenmuZhou/DBNet.pytorch: A pytorch re-implementation of Real-time Scene Text Detection with Differentiable Binarization A pytorch re-implementation of Real-time Scene Text Detection with Differentiable Binarization - GitHub - WenmuZhou/DBNet.pytorch: A pytorch re-implementation of Real-time Scene Text Detection with... github.com Our model is based on Cascade R-CNN[2] for Object Detecti..
[PyTorch] 버전 변경하기 v1.7.1 Conda OSX # conda conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 -c pytorch Linux and Windows # CUDA 9.2 conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=9.2 -c pytorch # CUDA 10.1 conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch # CUDA 10.2 conda install pytorch==1.7.1 torchvision==0.8.2 torchaud..
[Detectron2] 설치 pytorch와 cuda 버전이 맞아야 한다. 아래와 같은 버전이 아니라면 설치해도 오류가 난다. 원래 pytorch버전 1.10을 1.7로 낮추어서 시간 엄청 들여서 설치한 cuda10.1에 맞췄다. cuda버전을 다시 높여서 재설치하긴 싫었다. Releases · facebookresearch/detectron2 Detectron2 is FAIR's next-generation platform for object detection, segmentation and other visual recognition tasks. - facebookresearch/detectron2 github.com Requirements Linux or macOS with Python ≥ 3.6 PyTorch ≥ 1.8 an..
[Detectron2] Densepose COCO 데이터셋 Point-based annotations: dp_x and dp_y: image coordinates of the annotated points along the horizontal and vertical axes respectively. The coordinates are defined with respect to the top-left corner of the annotated bounding box and are normalized assuming the bounding box size to be 256x256; dp_I: for each point specifies the index of the fine segmentation chart it belongs to; dp_U and dp_V: po..
[ML] K-Fold Cross Validation(교차검증) 정의 - K개의 fold를 만들어서 진행하는 교차검증 사용 이유 - 총 데이터 갯수가 적은 데이터 셋에 대하여 정확도를 향상시킬수 있음 - 이는 기존에 Training / Validation / Test 세 개의 집단으로 분류하는 것보다, Training과 Test로만 분류할 때 학습 데이터 셋이 더 많기 때문 - 데이터 수가 적은데 검증과 테스트에 데이터를 더 뺐기면 underfitting 등 성능이 미달되는 모델이 학습됨 과정 - 기존 과정과 같이 Training Set과 Test Set을 나눈다 - Training을 K개의 fold로 나눈다 - 위는 5개의 Fold로 나눴을때 모습이다 - 한 개의 Fold에 있는 데이터를 다시 K개로 쪼갠다음, K-1개는 Training Data, 마지막 한개는 V..
[ML] Ensemble - DL에 적용 딥러닝 성능을 향상하기 위한 기법으로 사용할 수 있다. 각각 다른 신경망으로 학습데이터에 대해 각각 따로 학습을 시킨 후, n개의 예측값을 출력시키고 그것을 n으로 나눈 평균값을 최종 출력으로 하는 것이다. (Stacking사용) 오버피팅의 해결과 약간의 정확도 상승 효과가 실험을 통해 입증되었다. 또한 평균이 아닌 투표방식, weight별 가중치를 다르게 주는 방법들도 존재한다. ex) pretrained 된 모델들을 앙상블모델로 만들어 분류의 성능을 높이자 DataLoader 생성 모델1, 모델2, 모델3 생성 (ResNet, Inception, DensNet 예시) 각 모델에서 컨볼루션 feature 추출 그 feature들로 학습, 검증 데이터셋 생성 및 DataLodaer 생성 앙상블 모델 생성..
[ML] Curse of Dimension(차원의저주) 데이터의 차원이 증가하면 이것을 표현하기 위한 데이터양이 기하급수적으로 올라간다 우리에게 4개의 데이터가 있다고 가정해볼게요. 그리고 모든 축의 길이가 2인 2차원공간과 3차원공간에 4개의 데이터를 집어넣을거에요. 왼쪽그림에서는 면적당 데이터가 차지하는 밀도는 1이겠네요. 우측그림에서는 면적당 데이터가 차지하는 밀도가 1/2일거에요. 그렇다면 공간의 차원이 높아질 수록 같은 데이터량이라고 할지라도 (데이터가 공간을) 차지하는 비율이 낮아진다고 할 수 있겠죠? 우리가 30개의 데이터를 갖고 있는다고 했을때보다 1000개의 데이터를 갖고 있을때 overfitting이 일어날 확률이 더 적을거에요 (이에 대한이유는 앞선글의 가위 예시를 통해 이해해주시면 좋을것 같아요). 결국엔 같은 공간차원이라고 해도 데이터..
[ML] Activation2 - 존재하는 이유 Perceptron은 많은 문제를 해결해 줄 것으로 기대했어요. 예를들어 두 개의 입력값 x1, x2 ∈ {0,1} 중 하나만 1이라는 입력이 들어오면 1이라는 결과를 도출하는 OR 문제같은 경우나, 두 개의 입력값이 모두 1이어야만 1이라는 결과를 도출하는 AND 문제와 같은 경우는 쉽게 해결이 가능했어요. x1을 X로, x2를 Y라고 하고 Y를 C라는 임의의 상수라고 표현하면 activation function을 거치기 직전인 w1X+w2Y=C 라는 식이 만들어 지겠네요. 그런데 왼쪽 식을 Y=(-w1X+C)w2 라고 바꿔주면 직선의 방정식 (linear) 이 되는 것을 볼 수 있죠? 충분히 두 개의 입력으로 구성된 perceptron으로 문제 해결이 가능해졌어요. 그런데 우리가 정의한 문제공간(Or..
[PyTorch] 모델 앙상블(ensemble) 하기 GitHub - taewanme/DL_With_PyTorch Contribute to taewanme/DL_With_PyTorch development by creating an account on GitHub. github.com ↑emsemble 코드 모델 앙상블(ensemble) 하기 학습이 잘된 몇가지 모델이 있고, 각각의 모델의 성능을 결합하여 최선의 결과를 얻고 싶을 때 모델 앙상블을 이용한다. 예시) 잘 학습된 가중치를 포함한 모델 1~3이 있다고 하자. 모델을 통해 dhpark1212.tistory.com
[Kaggle] 딥러닝 정확도 높이기 딥러닝 정확도 높이기딥러닝 연구를 하면서 누구나 하게되는 질문이 있습니다. "어떻게 해야 정확도를 올릴 수 있을까??&qu...blog.naver.com
[ML] 뉴럴네트워크모델 (구조, 비용함수, 경사하강법, Backpropagation 알고리즘) Backpropagation 알고리즘 이건 10번은 봐야될 강의다!