728x90

분류 전체보기 138

[flask] flask-restx로 간편하게 Swagger 지원하기

1. pip install flask_restx 로 설치 2. from flask_restx import Namespace, Api, Resource 로 불러오기 3. 함수 내용을 Resource를 상속받은 객체로 변경 4. ns = Namespace('{endpoint}', description='') 로 선언 (blueprint 와 같은 기능) 4. @app -> @ns 로 변경 5. app 감싸기 app = Flask(__name__) api = Api(app) api.add_namespace(ns) app.run(host='0.0.0.0', debug=True) 6. swagger 결과 확인 기존 코드 예시 from flask import Flask app = Flask(__name__) @app..

Framework/Flask 2022.02.07

[MetaFlow] ModuleNotFoundError: No module named 'fcntl'

Windows10 환경에서 MetaFlow 실행 시 fcntl 이라는 모듈이 없다는 문제가 생긴다. 찾아보면 fcntl 라이브러리는 리눅스에서만 지원된다고 한다. ModuleNotFoundError: No module named 'fcntl' 추가로 MetaFlow 홈페이지에서 검색해본 결과, 윈도우는 지원할 계획이 아예 없다고 한다. (할말을 잃었다) 참고 https://github.com/Netflix/metaflow/issues/10

[FileBeat] Exiting: error unpacking config data: more than one namespace configured accessing 'output' 에러

원인 filebeat에서는 여러 개의 아웃풋을 가지면 안 된다. 나의 경우는 filebeat 에서 logstash와 elasticsearch를 동시에 출력으로 잡고있어서 에러가 발생했다. 해결방법 원하는 output이 어떤 곳인지 확인해보고, 하나만 출력하도록 하자. 참고 https://discuss.elastic.co/t/exiting-error-unpacking-config-data-more-than-one-namespace-configured-accessing-output-source-filebeat-yml/240640

Framework/ELK Stack 2021.12.20

[Python] TFLite to ONNX 변환

1. pip install tf2onnx 2. python -m tf2onnx.convert --opset 13 --tflite {tflite_file} --output {onnx_file} 3. pip install onnxruntime ( gpu 사용 시, onnxruntime-gpu) 4. onnx 모델 실행 결과 예시 Onnx 모델 실행 코드 (Python) import onnxruntime import numpy as np import cv2 def load_onnx_model(path, use_gpu): ort_session = onnxruntime.InferenceSession(path) if use_gpu: ort_session.set_providers(['CUDAExecutionProvi..

[Windows] Onnxruntime Visual Studio C++ Build

1. Visual Studio Nuget 다운로드 2. VS include, lib path 설정 includePath $(ProjectDir)/packages/Microsoft.ML.OnnxRuntime.Gpu.1.8.1/build/native/include LibPath $(ProjectDir)/packages/Microsoft.ML.OnnxRuntime.Gpu.1.8.1/runtimes/win-x64/native dll → 프로젝트 경로에 import 3. GPU 이용 시, 다음의 코드 변경 core/framework/provider_options.h → provider_options.h 4. 테스트 코드 작성 후 테스트

[OpenCV] C++ Mat 채널 변경 (permute, transpose)

딥러닝은 보통 파이썬에서 TensorFlow나 PyTorch 라이브러리를 이용해 진행된다. 파이썬에서는 [B, C, H, W] 같은 형태로 결과물이 나오게 되지만, OpenCV C++에서는 [H, W, C] 의 형태를 지닌다. 그림에서 위는 OpenCV에서 픽셀을 인식하는 방법, 아래는 딥러닝에서의 결과로 어떻게 다른지 볼 수 있다. C++에서 딥러닝 기반의 영상처리를 진행하다 보면 [B, C, H, W] 형태의 결과를 C++ OpenCV 형식 [H, W, C]에 맞게 변경이 필요할 때도 있다. 배치 사이즈는 1이라는 가정 하에서, 채널을 변경하는 방법은 아래와 같다. model_result 라는 포인터가 모델 아웃풋을 가리키고 있다는 가정 하에 채널 덩어리를 한채널씩으로 합치면 된다. float* mo..

Framework/OpenCV 2021.12.08

[Onnx] C++ GPU Inference

OS : Windows 10 GPU : RTX 2080 Tools : Visual Studio 2019 16 CUDA : 11.0 CUDNN : 8.0.6 Onnxruntime version : 1.8.1 CUDA는 매우 호환이 까다로운 녀석이다. 많은 고생을 덜기 위해선 아래의 사양을 꼭 참고해서 진행해야 한다. https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html 나의 경우에는 CUDA 11.0으로 설치되어 있기 때문에 Onnx version을 1.8.1로 진행하였다. 아래는 CPU 모델을 GPU로 변경할 때 추가로 들어가는 코드이다. OrtCUDAProviderOptions options; options.device_..

728x90