프로그래밍(16)
-
Vision Model Tester(YOLOv9, RF-DETR ONNX Model Test)
이것저것 시도하다보니 너무 멀리 와버렸네요. 지난 게시물(Rust에서 RF-DETR ONNX 모델을 사용한 이미지 객체 식별)에서 모델만 YOLOv9로 변경해서 테스트 해보려는 목적으로 시작했는데 주섬주섬 이 기능 저 기능들을 넣다보니 RF-DETR 모델을 넣는데까지 왔습니다. 바이브 코딩으로 여기까지 올 수 있다는게 놀랍기도 하지만 그 중간 과정에서 실패도 많았습니다. 특히 단계별로 만들어갈 때 어느 순간 잘 동작하는 코드를 날려버린다던지 자꾸 의도하지 않은 방향으로 틀어버리거나 몇 차례 시도 후 안되면 싹 갈아 엎어버리는 행동을 보여서 다시 시도해보기를 반복했네요. 그 덕에 토큰이 녹아내려서 Auto로 바꿔서 작업을 했더니 점점 쓸모 없는 코드만 찍어내더라구요. 여기까지의 테스트는 지금 준비하고 있는..
2025.08.12 -
Rust에서 RF-DETR ONNX 모델을 사용한 이미지 객체 식별
이전 프로젝트에서 YOLOX를 사용해볼 수 있는 기회가 있었습니다. 당시에 Rust로 프로젝트를 제작하고 있었기 때문에 PyTorch로 학습된 모델을 Rust에서 돌려보기위해 여러 방법들을 시도해보았습니다. 이 때 ONNX을 알게 되어 onnx로 모델을 변환하고 실행하는 시도도 해보았습니다. 최종적으로는 속도 차이로 tch-rs(파이토치 러스트 바인딩)을 사용하여 실행하는 것으로 결론을 내렸습니다. 당시에 아쉬웠던 부분은 YOLOX의 동작 속도였는데요. 우연찮게 LinkedIn에서 Roboflow의 RF-DETR 에 대한 게시물을 발견하게 되었고 나중에 기회가 되면 써봐야지 했습니다. 그리고 드디어 여유 시간이 생겨 실제로 만들어 볼 수 있게 되었습니다. 프로젝트에서 ONNX 모델을 사용할 예정이기 때..
2025.07.31 -
Rust + Slint UI + Kameo Actor Model
새로운 일을 시작하면서 Slint를 처음으로 사용해보았습니다. Rust에서 본격적으로 개발을 하다 보면 Tokio와 Task를 피해갈 수가 없습니다. 상당히 많은 라이브러리들이 비동기를 기본으로 지원하다 보니 거기에 맞추어 개발을 할 수 밖에 없는데요. 개별적으로 동작하는 Task 사이에 데이터를 공유하자면 Arc>를 사용하여 변수를 공유하거나 채널을 사용하여 데이터를 전달하게 됩니다. Arc>를 사용하기 시작하면 deadlock 발생 확률이 생깁니다. Rust가 좋은 언어이지만 deadlock 발생 가능성까지는 컴파일러에서 알아채지 못합니다. 조금만 주의를 잃어도 lock이 걸린 상태에서 다시 lock을 시도하는 등의 잘못된 코드를 작성하게 되고, 컴파일러는 오류 메세지 없이 빌드해내지만 실행해보면 어..
2025.07.30 -
Rust + Bevy Engine + egui 시작하기
길고도 짧았던 프로젝트 하나가 일단락되어 게시물을 작성할 여유가 생겼습니다. Rust를 본격적으로 업무에 사용하기 시작한 것이 2019년도였습니다. 지금도 그렇지만 당시에도 Rust 진영에서 GUI 프로그램 개발을 하기에는 선택지가 많지 않은 상황이었습니다. 그나마 그때에는 간단한 펌웨어 업데이트 프로그램을 만들던 때라 Sciter( https://sciter.com/ )를 사용했었습니다. 지금이라면 Tauri를 선택했겠지만 Tauri가 1.0이 된 게 2022년도 여름에나 되어서였네요.시간이 지나 다시 GUI 프로그램을 만들어야 하는 상황이 왔고, 그때에는 Tauri를 사용했습니다. 그때가 딱 Tauri가 1.0이 된 직후였네요. 차트가 필요해서 Chart.js를 사용해서 실시간으로 업데이트되는 데이터..
2025.07.30 -
[macOS] PyO3를 사용하여 rust에서 python 코드를 실행하기
1. 새로운 프로젝트 생성cargo new test_pyo3 2. Cargo.toml 파일에 아래의 내용 추가[dependencies.pyo3]version = "0.23.4"features = ["auto-initialize"] 3. main.rs 수정use pyo3::ffi::c_str;use pyo3::prelude::*;use pyo3::types::IntoPyDict;fn main() -> PyResult { Python::with_gil(|py| { let sys = py.import("sys")?; let version: String = sys.getattr("version")?.extract()?; let locals = [("os", py.i..
2025.02.25 -
opencv 비디오 파일의 영상 표시(rust/macos)
rust와 opencv를 사용하여 MacOS에서 영상 프레임을 추출하여 화면에 표시하는 예제입니다. MacOS에서 opencv 개발 환경을 구성하는 방법부터 차례로 설명하겠습니다.이 게시물에서 부족한 내용은 아래의 문서를 참고하시기 바랍니다. opencv-rust/INSTALL.md at master · twistedfall/opencv-rust (github.com) opencv-rust/INSTALL.md at master · twistedfall/opencv-rustRust bindings for OpenCV 3 & 4. Contribute to twistedfall/opencv-rust development by creating an account on GitHub.github.com 1. 개발..
2024.08.28