분류 전체보기 176

Cloud(GCP)를 이용한 ML-Pipeline 만들기 - 1. Vertex AI AutoML

이번에 클라우드를 이용한 ML endpoint를 만들어보기로 하였습니다. 참고한 자료는 이거 ~ https://www.youtube.com/watch?v=fw6NMQrYc6w (how to deploy machine learning model to google cloud) github : https://github.com/mrdbourke/cs329s-ml-deployment-tutorial StreamLit을 이용하였고, GCP의 AI Platform을 사용하였습니다. 프로젝트의 목적은, GCP를 이용해서 Food Classification AI 모델을 만드는 것이었습니다. 처음에 이 프로젝트를 재현해보려고 했었는데, 몇 가지 문제점이 있었습니다. 일단 GCP의 AI Platform 자체를 GCP에서 ..

Machine Learning 2023.05.03

Mobilenet 리뷰 (v1)

모바일넷 구글에서 만들어진 모델로서, V1, V2, V3가 있습니다. 각각 2017년 4월(v1), 2018년 1월(v2), 2019년 5월(v3) 입니다. 컴퓨터 비전에서 중요한 모델이고, mobilenet은 CNN의 한 종류로서, CNN을 제대로 알고 이 리뷰를 보는걸 권합니다. Mobilenet V1의 핵심 개념 Mobilenet V1 의 핵심개념은 Depthwise Seperable Convolution, Pointwise Convolution 입니다. 그리고 두개의 새로운 hyperparameter - width multiplier 와 resolution multiplier를 도입합니다. 결론적으로, accuracy를 조금만 희생을 하더라도, speed를 올릴 수 있으면 좋겠다고 생각을 합니다...

Deep Learning 2023.03.03

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

Flutter (Stateless Widget vs Stateful Widgets)

Dart와 Flutter에 대해서 공부하던 도중, Stateless widget과 Stateful widget에 대해서 공부하게 되었습니다. Stateless Widget : 데이터를 가지고 있지 않은 widget Stateful Widget : 데이터 소스를 가지고 있는 widget 실례를 들어보겠습니다. // app.dart import 'package:flutter/material.dart'; class App extends StatelessWidget { int counter = 0; } 다음과 같이 Widget 안에서 counter variable을 만들어서 그 variable을 끊임없이 변화하고 저장한다고 한다고 하면, StatelessWidget으로 만드는 건 안좋은 생각인 것입니다. 다른 ..

모바일/flutter 2023.01.20

Flutter를 사용해서 Yolov5를 안드로이드에서 돌려보자!

안녕하세요 이번에는 Flutter를 사용해서 Yolov5를 안드로이드에서 돌려보는 작업을 포스팅 해보도록 하겠습니다. 우선 yolov5에 대한 소개입니다. https://github.com/ultralytics/yolov5 그리고 flutter같은 경우에는 android, ios 둘다 적용이 가능하기 때문에 범용적으로 많이 쓰이는 플랫폼입니다. 안드로이드에서 머신러닝을 돌리는 경우 tflite를 활용하는데, flutter의 경우 tflite library가 있지만, 지원을 하지 않는 것으로 확인되고, v2 embedding에 지원이 안된다고 합니다. 그래서 flutter로 하는것을 포기하려던 차에, 새로운 깃헙을 찾게 되었고, 저희 팀원의 도움으로, 구현에 성공하였습니다. https://github.co..

Docker start and attach

도커를 사용하다 보면, 컴퓨터를 끄고 도커 컨테이너를 종료하는 때가 있습니다. 컨테이너들을 보려면, $ docker ps -a # get container ID 를 사용해서 continer ID들을 알아낼 수 있고, 종료된 container를 다시 실행시키고, terminal 로 output을 보려면, 다음 커맨드를 사용합니다. $ docker start a1233 --attach 물론 끄면 도커도 자연스럽게 꺼지겠지만, 도커를 끄려면, $ docker stop a1233 이렇게 끄면 됩니다. (리소스를 줄이기 위해)

Cloud/Docker 2023.01.04

label studio ml backend 구축 (1. label studio 소개, import, export 및 labeling 머지!)

안녕하세요 오늘은 label studio ml backend 구축에 대해서 해 보기 전, label-studio에 대해서 알아보는 포스팅을 하도록 하겠습니다. https://labelstud.io/ 상당히 복잡한 프로세스를 거쳤기에, 쉽지않은 프로세스가 될 것으로 보입니다. 일단 선행조건으로, label-studio 를 설치하고 실행하는 것이 될 것입니다. label studio 란, labeling을 할 수 있게 해주는 labeling 툴 중 하나입니다. 기존의 labelImg라는 툴을 사용했었는데, labelImg를 다운받으려고 검색하던 와중 label studio로 병합되었다는 소식을 들었습니다. label studio는 오픈소스 타입의 labeling tool 입니다. 하지만 label studi..

Machine Learning 2022.12.12

SSIM 흑백 이미지 동영상 저장하기

제 블로그의 인기 포스트 OpenCV를 이용해서 두개의 이미지 비교하기 의 심화편 입니다. 예를 들어, 다음과 같은 영상 이 있을 때, 비디오의 ssim을 비디오로 계속 보고 싶다고 생각하면, 처음 이미지를 기준으로 잡고, 그 이미지를 바탕으로 계속 그 차이를 표시할 수 있습니다. 원봉 영상 diff import cv2 from skimage.metrics import structural_similarity as ssim import numpy as np cap = cv2.VideoCapture('thisvideo.mp4') w, h = round(cap.get(3)), round(cap.get(4)) orig_img, grayA = None, None fps = 0 # 코덱값 fourcc = cv2.V..

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