DataScience
article thumbnail
[C++] Visual Studio Code에서 C++환경 만들기 (Linux)
C++ 2023. 7. 10. 10:09

석사 초반에 C++잠깐 건드려 보고 처음 해보는 C++입니다. 그때 당시에도 되게 불편했었는데 오늘 또 한번 느끼네요. 최근에 파이썬과 러스트만 다뤘는데 파이썬이 얼마나 편한 언어인지, 초보자도 쉽게 배울수 있는 언어라는걸 다시한번 깨닫게 되네요. C++컴파일러 설치 build-essential 패키지를 설치하면 gcc, g++ 등 컴파일에 필요한 패키지들이 설치됩니다. $ sudo apt-get install build-essential Visual Studio Code 설치 curl을 설치해줍니다. 이미 설치되어 있다고 메시지가 보일 수도 있습니다. $ sudo apt-get install curl 마이크로소프트 GPG 키를 다운로드하여 /etc/apt/trusted.gpg.d/ 경로에 복사해줍니다...

article thumbnail
[numba] Python을 C++보다 빠르게
파이썬 2023. 7. 8. 12:06

Python은 매우 다재다능한 프로그래밍 언어입니다. 파이썬은 라이브러리와 고수준 언어 덕분에 머신러닝 문제 해결에 가장 많이 사용되지만, 다른 언어에 비해 속도가 느린 것으로 알려져 있습니다. 이러한 평판 때문에 많은 사람들이 이 언어를 포기하고 프로그램 해결을 위해 C++와 같은 다른 옵션을 선택하기도 합니다. 기본 속도 테스트 파이썬과 C++의 일반적인 속도 차이를 테스트하기 위해 소수 생성 알고리즘의 실행 시간을 테스트해 보겠습니다. 두 언어 모두에서 명확한 짧은 단계가 있는 간단한 알고리즘입니다. 소수 생성 순서도 Python 실행 import math from time import per_counter def is_prime(num): if num == 2: return True; if num

article thumbnail
[Rust] model inference with CUDA (ONNXRUNTIME,ort)
Rust 2023. 7. 7. 14:56

https://crates.io/crates/ort에 따르면 cuda를 사용할수 있습니다.(cuda는 이미 설치되어있다고 가정합니다.) cargo.toml에 ort를 추가할때 feature로 load-dynamic이나 cuda가 있으면 cuda를 사용 할 수 있는것 같습니다. #[cfg(any(feature = "load-dynamic", feature = "cuda"))] cargo.toml에 아래 코드를 추가합니다. ort = {version="1.14.6", features = ["cuda"]} 그리고 main.rs에 use ort::ExecutionProvider 추가하고 main()함수 에서 ExecutionProvider::cuda().is_available() 로 확인할수 있습니다. buil..

article thumbnail
[Rust] Object Tracking in RUST with YOLOv8n ONNX model
Rust 2023. 7. 6. 14:48

각 프레임마다 onnx모델 Run을 하여 bbox 좌표를 얻습니다. onnx모델의 입력값은 정규화,표준화된 픽셀값이며 크기는 [1,3,640,640] 형식은 텐서입니다. https://github.com/pykeio/ort/blob/a92e4d1e6d99674dc1d04ed22743c3dd1bc59186/tests/onnx.rs#L16 https://dev.to/andreygermanov/how-to-create-yolov8-based-object-detection-web-service-using-python-julia-nodejs-javascript-go-and-rust-4o8e#rust use std::{sync::Arc, path::PathBuf, any::type_name, time::System..

[OpenCV] DNN failing to load an ONNX file: computeShapeByReshapeMask
Rust 2023. 7. 5. 16:32

[ERROR:0@0.058] global onnx_importer.cpp:1054 cv::dnn::dnn4_v20221220::ONNXImporter::handleNode DNN/ONNX: ERROR during processing node with 2 inputs and 1 outputs: [Reshape]:(onnx_node!/model.22/dfl/Reshape) from domain='ai.onnx' Traceback (most recent call last): [ERROR:0@0.058] global onnx_importer.cpp:1054 cv::dnn::dnn4_v20221220::ONNXImporter::handleNode DNN/ONNX: ERROR during processing nod..

[RUST]OpenCV : 'limits' file not found
Rust 2023. 7. 5. 14:28

=== /usr/local/include/opencv4/opencv2/core/cvdef.h:185:10: fatal error: 'limits' file not found thread 'main' panicked at '=== Errors during header parsing', /home/yimstar9/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-binding-generator-0.66.0/src/generator.rs:501:17 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace === WARNING: 1 diagnostic messages === /us..

[Rust] 동영상에 Box 그리기
Rust 2023. 7. 5. 13:28

decode : video-rs imageprocess : imageproc video-rs를 이용하여 영상을 decode후 decode_iter()로 frame별 픽셀 값을 추출합니다. 추출한 frame에 imageproc::drawing::draw_hollow_rect 함수를 이용하여 사각형을 그립니다. pub fn draw_hollow_rect( image: &I, rect: Rect, color: I::Pixel ) -> Image where I: GenericImage, 함수에서 입력받는 이미지 형식이 GenericImage입니다. 형 변환 방법 imagebuffer에 for문으로 픽셀값 넣어주는 방법 ndarray to image trait으로 generic image 변환후 사각형 그리는방법..