[TensorRT] Builder 에서의 UFF vs ONNX
환경 Ubuntu 16.04 Python 3.5 TensorRT 7.1.3.4 TensorFlow 1.13.1 및 1.15.1 TensorFlow 프레임워크를 이용하여 .pb 를 만든 뒤 convert-to-uff 유틸리티를 통해 .uff 파일로 변환하고나서 .uff 파일을 tensorrt engine 으로 변환하는데 input order 와 input value 그리고 input dimension 을 올바르게 설정했는데도 불구하고 자꾸 아래와 같은 에러가 떠서 [TensorRT] ERROR: UffParser: Parser error: tower_0/resnet_v1_50/conv1/BatchNorm/FusedBatchNorm: The input to the Scale Layer is required ..
2020.09.15
no image
[Dataset] 이미지 인식에 유용한 데이터셋 정리 (2020.09.14)
[Object Detection] [Object Classfication] [Image Segmentation] - ADE20K ADE20K dataset Database --> Full Dataset Full-sized images and segmentations Scene Parsing Benchmark Scene parsing data and part segmentation data derived from ADE20K dataset could be download from MIT Scene Parsing Benchmark. Training set All images are fully annotated groups.csail.mit.edu [Scene Recognition] - IndoorCVPR09..
2020.09.14
no image
[Dataset] MCL DATASETFOR VIDEO SALIENCY DETECTION
Background Subtraction 시도할 때 사용할 좋은 데이터세트 같고, 데이터도 바로 다운로드 받을 수 있어서 접근성 좋다. This dataset is used in S.-H. Lee, J.-H. Kim, K. P. Choi, J.-Y. Sim, and C.-S. Kim, "Video saliency detection based on spatiotemporal feature learning," submitted to Proc. IEEE ICIP 2014. Video sequences have the resolution of 480 x 270 and consist of around 800 frames. The binary ground-truth maps are manually obtained ..
2020.09.11
no image
[Tool] 파일명 일괄 변경하기 Darknamer
대학원생 때 부터 정말 유용하게 사용하고 있는 Darknamer Tool 이다. 윈도우 용 이다. 출처 : blog.naver.com/darkwalk77 Darkwalker가 IT 공부하는 블로그 : 네이버 블로그 IT에 대해 공부하는 블로그 Darknamer 개발자입니다 새 버전을 업데이트 하였습니다. (2018.8.30) 소스코드는 자유롭게 개작하셔도 무방합니다 blog.naver.com
2020.09.11
no image
[Python] 이미 존재하는 모듈 이름을 폴더 이름으로 사용하지 말 것
새 프로젝트를 만들고 있는 도중 tensorrt 를 import 하여 사용하는데 자꾸 아래와 같은 에러가 났다. File "../tensorrt/trt_lib.py", line 23, in load_cuda_engine_from_onnx TRT_LOGGER = trt.Logger(trt.Logger.WARNING) AttributeError: module 'tensorrt' has no attribute 'Logger' tensorrt 는 분명히 설치되어있고, 지금까지 잘 사용해 왔는데 갑자기 tensorrt 에는 Logger 가 없다니 ... 알고보니 이미 존재하는 모듈(설치한 모듈) 이름인 tensorrt 가 이미 존재하는데도 불구하고 새로 만든 폴더 이름을 tensorrt 로 지정했기 때문에 새로 ..
2020.09.10
no image
[TensorRT] ONNX 에서 TensorRT 변환 시 Upsample scale_factor 문제
Pytorch 모델을 이용하여 ONNX 모델로 변환 후, ONNX 모델을 TensorRT 모델로 변환할 시 아래와 같은 에러가 발생 할 때가 있다. [TensorRT] ERROR: Network must have at least one output [TensorRT] ERROR: Network validation failed. 위와 같은 에러는 ONNX parser 를 통해 Network 를 읽고 나서, TensorRT Engine 으로 변환하는 과정에서 지원하지 않는 노드가 있을 때, Network 를 더 이상 읽지 못하고 결과를 반환하여 최소한의 output 이 있어야 한다고 에러를 내뱉는 것이다. TensorRT 로그를 통해 어디서 끊긴지 찾아보면 되는데, ONNX 모델의 노드들과 TensorRT ..
2020.09.03
[ONNX] Pytorch 모델을 ONNX 모델로 변환하기
ONNX 모델은 여러 다양한 플랫폼과 하드웨어에서 효율적인 추론을 가능하게 한다. 여기서 하드웨어는 리눅스, 윈도우, 맥 뿐만 아니라 여러 CPU, GPU 등의 하드웨어를 뜻한다. ONNX 모델 변환을 위해 필요한 import 문은 다음과 같다. # 필요한 import문 import io import numpy as np from torch import nn import torch.utils.model_zoo as model_zoo import torch.onnx 예제 모델은 아래에서 소개된 모델을 기반으로 한다. “Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Networ..
2020.08.23
no image
[Book Review] 핸즈온 비지도 학습
이 책은 번역본인데, 번역본이라는 느낌이 들지 않게끔 설명이 상세하고, 매끄러워 초보자들도 쉽게 이해 할 수 있도록 하였다. 또한 TensorFlow 및 Keras 프레임워크를 주로 사용하고자 하는 사람들에게 많은 도움이 되는 책이다. 다만, TensorFlow 1.x 버전 기준으로 설명을 하고 있다는 것이 약간 아쉽긴 하다. 그래도 기본 개념을 잘 담고 있어서 감안하고 보면 될 듯 하다. 일단 비지도 학습이란 일반적으로 우리가 알고있는 지도학습과는 달리 레이블(label)을 사용할 수 없는 것이다. 그렇기 때문에 지도 학습 문제보다 문제가 명확하지 않게 정의된다는 특징을 가진다. 하지만 이러한 특징이 지도학습 보다 우수한 성능을 낼 수 있다. 일반적으로 지도 학습에서는 수 많은 데이터들을 라벨링 해야된..
2020.08.23
no image
[Pose Estimation] OCHuman(Occluded Human) Dataset API
Github : https://github.com/liruilong940607/OCHumanApi liruilong940607/OCHumanApi API for the dataset proposed in "Pose2Seg: Detection Free Human Instance Segmentation" @ CVPR2019. - liruilong940607/OCHumanApi github.com Project Page : http://www.liruilong.cn/projects/pose2seg/index.html Pose2Seg Pose2Seg: Detection Free Human Instance Segmentation Song-Hai Zhang 1, 2 Ruilong Li (first student a..
2020.08.11
[TensorRT] TRT_LOGGER 이용해서 로그 확인하기
TensorRT에서 Engine 을 실행하거나, serialize, deserialize 등을 수행 할 때 Log 를 확인할 수 있는 Logger 가 있다. class tensorrt.Logger(self: tensorrt.tensorrt.Logger, min_severity: tensorrt.tensorrt.Logger.Severity = Severity.WARNING) Logger 는 Builder / ICudaEngine / Runtime 에서 사용 할 수 있으며, 파라미터는 다음과 같다. min_severity : The initial minimum severity of this Logger 어느 정도의 로그까지 띄울 것인지에 대한 파라미터이다. 아래와 같은 식으로 사용할 수 있으며 if args..
2020.08.03
[TensorRT] Onnx 모델을 위한 Custom Plugin 구현 (작성중)
(2020/08/03) 계속 업데이트 중, 구현해보고 정리해서 올릴 예정, 지금은 관련된 내용 수집중 * 주의 할 점은 한달 전에 릴리즈된 TensorRT 7.1 버전으로 해야할 듯 TRT_SOURCE/parsers/onnx/ 에는 Split.hpp, ResizeNearest.hpp 등과 같은 많은 onnx plugin 이 존재하며, REGISTER_TENSORRT_PLUGIN 을 통해 시스템에 자동으로 등록되어 런타임 중에 직접 Onnx 모델을 구문 분석 할 수 있다고 한다. 먼저 가장 쉬운 방법은 builtin_op_importers.cpp 를 이용해서 필요한 함수에 대해 플러그인을 구현하고, onnx parser 를 다시 빌드 하는 것이다. onnx-tensorrt github 에 가서 builti..
2020.08.03
[Pytorch] 파이토치 시간 측정, How to measure time in PyTorch
Pytorch 에서 CUDA 호출이 비동기식이기 때문에 타이머를 시작 또는 중지 하기 전에 torch.cuda.synchronize() 를 통해 코드를 동기화 시켜주어야 한다. start = torch.cuda.Event(enable_timing=True) end = torch.cuda.Event(enable_timing=True) start.record() z = x + y end.record() # Waits for everything to finish running torch.cuda.synchronize() print(start.elapsed_time(end)) 참고자료 1 : https://discuss.pytorch.org/t/best-way-to-measure-timing/39496 Best..
2020.07.27