Deep Learning 25

Yolov5 Tflite 버전을 local desktop에서 돌리면 느려지는 이유

Quantization을 하면서 여러가지 테스트를 하던 중, tflite 파일을 돌리니 그냥 .pt 파일을 돌릴 때보다 확연하게 느려지는 것을 발견하였습니다. 물론, 이 현상을 처음 발견한 것은 아닙니다. 하지만 예전에 발견했을 때에는, Nvidia gpu가 TFlite 를 지원하지 않는다는 포스팅을 보았기에, (참고자료 : https://forums.developer.nvidia.com/t/gpu-support-for-tflite/156477) 당연히 GPU를 사용하지 못하기 때문에 느리구나 생각했었는데, 이번에 테스팅을 해 보니깐, 같은 CPU를 사용할 때에도, 훨씬 느린것을 발견하였습니다. 같은 모델 사용 시에 .pt 파일 사용시 - 20~30 ms 소요, tflite 변환 모델의 경우 3000ms..

Deep Learning 2023.02.13

Pytorch를 이용한 Quantization

Quantization이란 무엇일까요? 딥러닝이라고 하면 보통 여러개의 node들과 이들로 이루어진 layer, 그리고 layer들을 서로 연결하는 activation들로 이루어져 있다고 할 수 있겠습니다. 각각의 Node들은 각자 Weight과 Bias들을 가지고 있으며, activation들은 RELU, softmax, Sigmoid, Tanh, Leaky Relu 등 여러가지가 있다고 볼 수 있을 것입니다. 레퍼런스에 따르면, pytorch 1.3, 그리고 1.4에서 torchvision 0.5에서 지원된다고 합니다. 그럼 Quantization은 왜 하는 걸까요? 위에서 말한 Weight 와 Bias들은 보통 float32로 표현되는데, float32에서 32의 표현은 32비트를 사용한다는 의미입..

Deep Learning 2023.01.25

Pytorch에서 Batch Size 1로 했을 때 accuracy가 떨어지는 문제 해결 (model.eval())

딥러닝을 하던 중, training set을 Batch size 32로 학습하고, Test set을 Batch size 32로 inference 했을 때 좋은 accuracy가 나오는데, Test set을 Batch 1으로 하면 accuracy가 많이 떨어지는 현상이 발생하였습니다. 게다가 prediction을 찍어 보니깐, 전혀 prediction을 못하는 것으로 나왔습니다. batch normalization 문제라고 생각했었는데, 알고 보니깐 model.eval()을 넣지 않아서 생기는 문제였습니다. model.eval()을 해주고 나서 inference를 하니깐 평가가 잘 되는 것을 발견하였습니다. 이 포스트에서 자세하게 나와있습니다. model.eval()로 해결! 또한 pytorch포럼에 따르..

Deep Learning 2022.09.23

오디오 딥러닝을 해봅시다! (Sound Classification) - 2. 모델을 이용해서 학습하기

전 포스팅 데이터 전처리 에서 데이터 전처리 과정에 대해서 다뤄봤습니다. 이번 포스팅에서는 데이터 전처리에서 처리한 SoundDS 클래스를 어떻게 사용하는지 살펴봅시다. Data Loader 를 사용한 데이터 Batch 사용하기 custom Dataset을 사용하여 Feature와 Label을 모은 데이터를 8:2로 나눕니다. 다음 이미지를 참조하여 주세요! from torch.utils.data import random_split myds = SoundDS(df, data_path) # Random split of 80:20 between training and validation num_items = len(myds) num_train = round(num_items * 0.8) num_val = n..

Deep Learning 2022.09.08

오디오 딥러닝을 해봅시다! (Sound Classification) - 1. 데이터 전처리

오디오 딥러닝을 해 봅시다! (사운드 분류) 전체 개념 오디오 딥러닝을 하기 위해서는, 오디오 파일을 Spectrogram이라는 이미지 파일로 만들고, 그걸 이용해서 CNN을 이용한 딥러닝이 가능합니다. 참조에서는 4초 정도의 오디오 파일들을 모은다고 합니다. 데이터 전처리 및 라벨링 라벨링은 여러가지 방법이 있겠지만, 여기서는 CSV 파일을 활용합니다. Pandas를 이용해서 label 정보를 모아줍니다. Pandas는 conda를 이용한다면 conda install, 또는 pip로 설치가 가능합니다. # ---------------------------- # Prepare training data from Metadata file # ---------------------------- import p..

Deep Learning 2022.09.06

torchviz로 모델 시각화 하기

from torchviz import make_dot from torch.autograd import Variable x = Variable(torch.randn(6, 2, 64, 344)) x = x.to("cuda") make_dot(myModel(x), params=dict(list(myModel.named_parameters()))).render("myModel", format="png") 간단해 보이는 script지만 상당히 많은 부분에서 오류가 났습니다. 1. Anaconda environment의 경우에는 pip install torchviz가 아니라 conda install torchviz를 해 줍니다. 2. ubuntu의 경우에는 sudo apt도 해줘야 합니다. sudo apt-get ..

Deep Learning 2022.07.27

Yolov5를 이용해서 Transfer Learning에서 Early Overfitting을 방지하는 방법

Yolov5를 사용할 때, 보통 Pretrained model을 사용합니다. (small, medium, large, Xlarge.. 이번에 nano도 추가) Pretrained Model의 경우 80개의 Coco dataset을 detect합니다. 이 80개의 모델에 내가 원하는 class가 없는 경우, transfer learning(전이 학습)을 통해서 내가 원하는 class를 학습해야 합니다. Pretrained model이 아닌 scratch model에서 학습을 하는 경우 너무 학습이 오래 걸린다는 단점이 있고, (체감상 pretrained model보다 적어도 두배, 많으면 세네배 이상 시간이 걸립니다. 정확한 레퍼런스는 없네요) freeze layer를 하고 학습을 하는 경우 더 빠르게 할..

Yolov5의 model을 Tx2 engine을 만들어봅시다 (Onnx, netron)

안녕하세요 Yolov5는 pytorch 기반의, 객체 검출을 쉽게 해 줄수 있는 프레임워크입니다. 하지만 yolov5에서 만든 모델을 다른곳에서 사용하려면, 그에 맞게 모델을 변환시켜 주어야 합니다. 그럴때 사용할 수 있는 기술이 Onnx 입니다. onnx소개 : https://github.com/onnx/onnx, https://www.megazone.com/techblog_180816_aws-deep-learning-amis/#:~:text=ONNX%20%EB%9E%80%20%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%3F,%EC%97%B0%EC%82%B0%EC%9E%90%20%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EC%A0%95%EC%9D%98%ED%95%A9%..

labelImg 맥에다 설치하기

https://github.com/tzutalin/labelImg GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images - GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding b... github.com pipenv 로 설치하는 방법도 있지만, 파이썬 3.6..