DataScience
[Rust] mod와 파일 시스템
Rust 2023. 7. 15. 14:37

https://data-science.tistory.com/341 의 추가 내용입니다. 러스트로 프로그램을 작성하기 시작했을때 코드는 오로지 main함수 안에만 있을지도 모릅니다. 코드가 커짐에 따라서, 재사용 및 더 나은 조직화를 위하여 결국 어떤 기능을 다른 함수로 이동시킬 것입니다. 코드를 더 작은 덩어리로 쪼갬으로서, 각각의 덩어리들은 개별적으로 이해하기 더 수월해집니다. 러스트는 조직화된 방식으로 코드의 재사용을 할 수 있게 해주는 모듈(module) 시스템을 갖추고 있습니다. cargo를 이용해서 새로운 프로젝트를 만드는 것으로 모듈 예제를 시작하려고 하는데, 바이너리 크레이트( crate)를 만드는 대신에 라이브러리 크레이트를 만들 것입니다.(라이브러리 크레이트란 다른 사람들이 자신들의 프로..

article thumbnail
[Rust] 주석
Rust 2023. 7. 13. 13:26

유용한 문서화 주석 슬래시 세개(///)를 이용하여 텍스트 서식을 위한 마크 다운 표기법을 지원합니다. 문서화 주석은 문서화할 대상 바로 이전에 배치하면 됩니다. Filename: src/lib.rs /// Adds one to the number given. /// /// # Examples /// /// ``` /// let five = 5; /// /// assert_eq!(6, my_crate::add_one(5)); /// ``` pub fn add_one(x: i32) -> i32 { x + 1 } cargo doc --open 을 실행시키면 현재 크레이트의 문서에 대해 (심지어 크레이트가 가진 모든 디펜던시의 문서까지) HTML 을 생성하고 웹 브라우저에 띄워줍니다. 자주 사용되는 구절 - ..

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 변환후 사각형 그리는방법..