본문 바로가기

분류 전체보기70

[Onnx] onnx-simplifier dynamic batch 모델 사용 방법 onnx-simplifier란 onnx-simplifier은 onnx model의 구조를 간소화해주는 작업을 진행한다. onnx-simplifier는 밑의 링크에 가면 간단한 사용법을 알 수 있다. https://shuka.tistory.com/7?category=1224641 [Onnx] onnx-simplifier를 이용한 onnx 모델 간소화 onnx-simplifier를 이용한 onnx모델 간소화 1. onnx-simplifier란? onnx-simplifier은 복잡한 구조의 onnx 모델을 간소화하는 작업을 진행해 준다. 모델에 따라 복잡한 모델의 구조라고 하더라도 간소화되는 부분 shuka.tistory.com dynamic batch에 대한 onnx-simplifier 오류 그런데 만약 p.. 2022. 2. 4.
[Triton Inference Server] Triton Inference Server model ensemble Triton Inference Server란 Nvidia에서 만든 Triton Inference Server는 여러 프레임워크에 대한 모델들을 사용할 수 있고, cpu와 gpu의 처리량과 활용도를 극대화 해준다. Triton Inference Server에서 모델을 ensemble을 하게 되면 "preprocess -> inference -> postprocess"를 캡슐화 하여 intermediate tensors를 전송하는 overhead를 피할 수 있고, triton으로 보내야 하는 request 횟수를 줄일 수 있다. 만약, ensemble을 하기 전에 기본적인 예제를 실행해보고 싶으면 밑의 링크를 보면 된다. https://shuka.tistory.com/33 [Triton Inference S.. 2022. 2. 4.
[OpenCV] opencv webcam 기본 예제 python code import cv2 # open webcam cam = cv2.VideoCapture(0) # get fps fps = cam.get(cv2.CAP_PROP_FPS) if cam.isOpened() is False: print('error') while True: #get frame ret, frame = cam.read() if ret is not True: break if frame is None: break cv2.imshow('a', frame) if (cv2.waitKey(1) & 0xFF) == 27: break c++ code #include void main() { cv::VideoCapture cap(0); if (!cap.isOpened()) { std::cout 2022. 2. 4.
[Triton Inference Server] Docker를 사용한 triton server 예제 실행 Triton Inference Server란 Triton server는 DL의 model을 Inference하는데 GPU의 자원을 최적으로 할당하여 활용도를 극대화 하여 Inference server를 구축하기 편하게 해준다. 그리고 tensorflow, TensorRT, Caffe2, pytorch 등과 같은 주요 framework를 지원하면서 docker container 기반의 Open-source inference serving software이다. 아래 링크는 triton inference server에 대해 자세히 설명되어 있는 nvidia 홈페이지와 Git 주소이다. https://developer.nvidia.com/nvidia-triton-inference-server NVIDIA Tri.. 2022. 1. 26.
[OpenCV] libgthread-2.0.so.0: cannot open shared object file 해결 libgthread-2.0.so.0: cannot open shared object file 문제 발생 docker환경에서 pip install opencv-python을 했을 때 libGL.so 오류가 발생하여 밑의 링크의 글에서 해결하였다. https://shuka.tistory.com/27 [OpenCV] libGL.so.1: cannot open shared object file 해결 opencv를 pip install opencv-python으로 설치하면 다음 사진과 같이 오류가 뜰 때가 있다. "libGL.so.1: cannot open shared object file." 위의 오류를 해결하려면 libgl1-mesa-glx를 설치해주면 된다. (sudo).. shuka.tistory.com .. 2022. 1. 14.
[Flask] image에 대해 주고 받기 server.py from flask import Flask, jsonify, request from PIL import Image import json from io import BytesIO import base64 app = Flask(__name__) @app.route("/", methods=["GET", "POST"]) def index(): json_data = request.get_json() dict_data = json.loads(json_data) img = dict_data['img'] img = base64.b64decode(img) img = BytesIO(img) img = Image.open(img) # img.save('test.jpg') img_shape = img.sha.. 2021. 12. 13.
[Keras] keras h5모델 Load와 Inference keras h5 모델에 대한 Load 및 Inference pytorch, onnx, tensorrt만 사용하다가 기존 모델에 대한 tensorflow keras의 .h5 모델이 잠깐 필요해서 onnx모델에서 keras모델로의 변환, load, inference 방법을 찾아봤다. 변환하고 load하는건 금방 찾아서 쉽게 했는데 load 된 model을 inference 해서 변환에 문제가 없는지 test 하려는 데에 좀 어려웠다. keras h5 model에 대해 load하는 코드 import tensorflow as tf model = tf.keras.models.load_model() model.summary() kersa h5 model에 대해 inference하는 코드 model.predict(i.. 2021. 11. 23.
[OpenCV] OpenCV circle, rectangle, text 그리기와 PIL 한글 text 1. circle, rectangle, text 영상처리를 하다 보면 image에 여러 그림을 그리거나 point를 표시하거나 할 경우가 많다. 타원이나 line 등 많은 그리기 방법이 있지만 주로 rectangle을 그리거나 circle을 그리거나 text를 쓸 때가 많았다. 기본적으로 opencv를 이용한 각 그리기 함수의 parameter들은 밑에와 같다. circle cv2.circle(image, center, raddian, color, thickness) rectangle cv2.rectangle(image, start_point, end_point,color, thickness) text cv2.putText(image, text, location_point, font, font_scale.. 2021. 11. 17.
[OpenCV] libGL.so.1: cannot open shared object file 해결 python opencv 설치 시 libGL.so.1 에러 발생 opencv를 pip install opencv-python으로 설치하면 다음 사진과 같이 오류가 뜰 때가 있다. "libGL.so.1: cannot open shared object file." libGL.so.1에 대한 오류 해결 방법 위의 오류를 해결하려면 libgl1-mesa-glx를 설치해주면 된다. (sudo) apt-get install libgl1-mesa-glx 그런데 만약 위의 명령어로 설치를 했는데 다음과 같은 오류가 발생하면 "(sudo) apt-get update" 한 번 해주고 진행하니까 내 경우에느 해결 됐다. libgthread-2.0.so.0에 대한 오류가 추가로 발생할 경우 위의 libGL.so.1에 대한 오.. 2021. 10. 25.
[Pytorch] pytorch모델을 onnx모델로 변환 방법 pytorch모델을 onnx 모델로의 변환 pytorch 모델을 tensorrt로 변환하기 위해서는 pytorch 모델을 onnx로 변환을 해야 하는 단계를 거쳐야 하는데, 변환을 할 때 batch를 원하는 size로 고정을 할 수도 있고 dynamic batch로 설정해 줄 수도 있다. onnx모델로의 변환 순서 onnx 모델로 변환하기 위해서는 기본적으로 1. 변환하고 싶은 pytorch model load 2. input tensor 설정 3. input, output name 설정 4. dynamic_axes 설정 (dynamic batch로 할 경우) 5. export 의 순서로 설정해서 변환해 주면 된다. 그리고 export할 때 여러가지 option을 할 수 있는데 아래의 링크 중간에 참고하.. 2021. 10. 25.
[OpenCV] 이미지 hstack으로 붙이기 hstack을 사용하여 이미지 붙이기 딥러닝에서 여러 모델을 학습 하고 각 모델의 성능을 보기 위해서는 수치만 출력해서 결과를 확인할 수도 있지만 보통은 눈에 잘 보이는 형태로 만들어서 결과를 확인하기 위해 이미지에 직접 그려보면서 확인하는 경우도 많다. 하지만 여러 모델에 대해 이미지를 보면서 비교하기 위해 하나하나 넘기기엔 귀찮아서 numpy의 stack함수를 이용해서 붙여버렸다. 각각의 모델 결과를 뽑은 이미지들이 저장되어 있는 폴더를 folder_name_list에 넣어 주고 결과를 확인하기 위한 이미지들의 이름은 같으니까 하나의 폴더에 대해 들어있는 이미지의 이름들을 image_list에 넣어준다. import cv2 import os import numpy as np folder_name_li.. 2021. 10. 21.
[OpenCV] OpenCV Library build 방법 opencv의 library 파일을 생성하기 위한 방법으로는 opencv와 opencv_contrb를 다운 받아서 build해주는 방법이 있다. 원하는 OpenCV Library Version 다운로드 opencv 라이브러리를 build하기 위해서는 원하는 버전의 opencv.zip과 opencv_contrib.zip을 다운 받아서 압축을 풀어준다. wget -O .zip https://github.com/opencv/opencv/archive/.zip unzip opencv.zip wget -O .zip https://github.com/opencv/opencv_contrib/archive/.zip unzip opencv_contrib.zip 다운로드 받은 OpenCV 파일 압축 해제 은 파일을 wge.. 2021. 10. 20.
728x90