분류 전체보기 16

[Vitis-AI] Custom operator 등록하기

사용된 함수 중에는 XIR로 변환할 수 없는 함수들도 있습니다. 이 함수들은 자동으로 변환할 수 없기 때문에 custom op로 등록해줘야만 변환하여 CPU에서 동작시킬 수 있습니다. 이 과정을 정리합니다. 이 글은 다음 글을 참고하였습니다. https://support.xilinx.com/s/article/Custom-OP-complete-example-design-for-Pytorch?language=en_US Vitis AI Custom OP example design with Pytorch Vitis AI Custom OP complete example design with Pytorch This tutorial was designed to help with quick and gradual lea..

Xilinx 2022.12.02

[Vitis-AI] Deploying and Running the Model Compiler

DPU에 deploy하기 전 VART tool을 이용해 DPU inference 결과를 확인하기위해서는 다음 순서를 따르면 됩니다. 이는 VART로 DPU를 디버깅하는 과정입니다. 1. Quantization 된 inference 모델을 생성합니다. python resnet18_quant.py --quant_mode calib --subset_len 200 2. export_xmodel API의 deploy_check를 True로 설정합니다. quantizer.export_xmodel(deploy_check=True) 3. reference data를 이용해 reference 결과를 확인합니다. python resnet18_quant.py --quant_mode test 4. DPU xmodel를 생성합..

Xilinx 2022.11.28

[Python] optimizer와 scheduler 변경

학습에 optimzier와 scheduler를 사용하다 특정 학습 시점부터 재시작할 때 learning rate나 gamma를 곱해주는 시점을 바꾸고 싶을 때가 있습니다. 이럴 때는 각각 변수명이 optimizer, scheduler라고 하면 아래와 같이 변경해주면 됩니다. learning rete 변경 optimizer.param_groups[0]['lr'] = 0.01 gamma를 곱해주는 시점(milestones) 변경 scheduler의 milestones이 Counter 타입이기 때문에 Counter를 import 해주시고 아래와 같이 원하는 값으로 바꿔주시면 됩니다. from collections import Counter scheduler.milestones = Counter([10, 20,..

Python 2022.11.26

[Vitis-AI] 설치 및 환경 설정

이 글은 Xilinx의 Vitis AI User Guide(UG1414)를 따라 작성하였습니다. Host에서 Docker 설정 1. github Vitis AI repository를 복사합니다. git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI cd Vitis-AI 2. Docker가 설치되어있지 않다면 먼저 설치합니다. Linux 사용자가 group docker에 있는지 확인합니다. 3. docker image를 빌드합니다. cd docker ./docker_build_cpu.sh or ./docker_build_gpu.sh 4. 빌드 완료 후 Vitis-AI 폴더로 되돌아옵니다. 이제 docker를 실행하여 conda 가상환경을 실행..

Xilinx 2022.11.01

[Vitis-AI] Compiling the Model

Vitis AI 컴파일러(VAI_C)는 네트워크 모델을 최적화된 DPU instruction sequence에 매핑합니다. 간략하게는 아래와 같습니다. Optimize 되고 quantize 된 입력 model의 topology를 parsing 한 뒤 VAI_C는 internal computation graph를 intermediate representation(IR)으로 구성합니다. 즉 control flow와 data flow representation에 대응됩니다. 그리고 batch norm과 convolution 결합과 같은 computation node fusion, 병렬 처리를 이용한 효율적인 instruction 스케줄링과 같은 다양한 optimization을 수행합니다. XIR-based 툴..

Xilinx 2022.11.01

[Vitis-AI] Quantizing the Model

이 글은 Xilinx의 Vitis AI User Guide(UG1414)를 따라 작성하였습니다. 먼저 pytorch를 사용하기 위해서 vai_q_pytorch를 설치해야 합니다. 작성일 기준 pytorch 1.2~1.10.2를 지원하지만 data parallelism은 지원하지 않습니다. VAI quantizer는 floating-point model를 input으로 받아 전처리(batchnorm folding 및 inference에 필요하지 않은 node를 삭제)를 수행합니다. Docker container를 이용한 vai_q_pytorch 설치 추가적인 설치 없이 이전에 설치한 docker 환경에서 CPU/GPU 컨테이너를 실행하고 Conda 환경을 활성화합니다. conda activate vitis..

Xilinx 2022.11.01

[논문 리뷰] VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

기존의 LiDAR data 기반 3D object detection 방법들은 대부분 hand-crafted 방법을 이용해 feature를 생성하고 RPN에 넣는 방법을 사용했습니다. 본 논문과 같이 Voxel을 사용했던 방법도 있었지만 각각의 voxel을 hand-crafted방법을 통해 feature를 encoding 하였습니다. VoxelNet은 hand-crafted feature 대신 feature extraction과 bounding box prediction을 single stage로 통합하여 end-to-end 방식으로 학습할 수 있는 네트워크를 제안하였습니다. VoxelNet 이전 PointNet과 PointNet++이라는 유명한 논문들은 point cloud를 다른 변형 없이 point들..

Paper/3D 2022.10.28

[Python] pack, unpack 함수

C, C++ 에는 int, float와 같이 자료형을 명시하지만 python에서는 이런 게 없어 C/C++과 같이 사용할 때 헷갈리는 부분이 있습니다. 이 중에서 C/C++의 구조를 python에서 사용할 수 있도록 하는 함수에 대해 알아봅니다. 파이썬의 struct 모듈에는 pack과 unpack이라는 함수가 있습니다. C언어에서 %d, %f와 같은 방식으로 변수형 및 그 크기를 알려준 것과 같이 python에서도 위 함수를 사용하면 C와 같이 사용 가능한 형태로 pack, unpack할 수 있습니다. 그 포맷은 다음과 같습니다. 코드를 통해 그 예를 한번 보겠습니다. >>> from struct import * >>> pack('hhl', 1, 2, 3) b'\x00\x01\x00\x02\x00\x0..

Python 2022.10.20

[논문 리뷰] KPConv: Flexible and Deformable Convolution for Point Clouds

Point cloud 기반의 learning에는 VoxelNet과 같은 grid 기반의 방법, PointNet과 같은 mlp 기반의 방법 등 다양한 방법이 있습니다. 그중에서도 2D domain에서 큰 성능을 보인 CNN을 point cloud에 직접 적용하기 위해 PointwiseCNN, SpiderCNN, PCNN 등 다양한 방법들이 발전해왔습니다. KPConv는 이처럼 point cloud를 변환 없이 그대로 conovlution을 적용할 수 있도록 하는 방법으로 ICCV 2019에서 발표된 논문입니다. 1. Kernel point convolution KPConv는 그림과 같이 기존 이미지 convolution과 유사하게 적용됩니다. 기존 2D image와 같이 각 point(이미지에서는 pixe..

Paper/3D 2022.09.16

[논문 리뷰] R-CNN, Fast R-CNN, Faster R-CNN

R-CNN Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014. R-CNN은 object detection의 시작이라고 할 수 있는 논문으로 이 이후 더 발전된 다양한 R-CNN 계열 network들이 제안되었습니다. R-CNN의 방법과 순서는 다음과 같은 3개의 module으로 구성됩니다. Category에 독립적인 region proposal : detector에 사용될 영역 후보를 제안합니다. Large convo..

Paper/2D 2022.06.12