전체 글 8

두 카메라 스테레오 캘리브레이션 (ChArUco 기반)

왜 캘리브레이션이 필요한가카메라는 3D 세계를 2D 이미지로 투영하는 장치입니다. 이 과정에서 두 가지 문제가 생깁니다.렌즈 왜곡: 실제 직선이 이미지에서 휘어 보임 (배럴/핀쿠션 왜곡)투영 관계의 불확실성: 픽셀 좌표와 실제 3D 좌표 사이의 수치 관계를 모름캘리브레이션은 이 두 가지를 수치로 정확히 구하는 과정입니다.두 카메라를 함께 쓸 때는 추가로 **두 카메라 사이의 상대 위치·자세(외부 파라미터)**도 구해야 합니다. 이것이 있어야 두 이미지를 픽셀 단위로 정렬할 수 있습니다.캘리브레이션으로 얻는 결과물결과물의미cameraMatrix (K)초점거리(fx, fy), 주점(cx, cy) — 내부 파라미터distCoeffs렌즈 왜곡 계수 (k1, k2, p1, p2, ...)R, T카메라1 → 카메라..

CV 2026.04.02

GPT CLI (Codex) 설치

🚀 도커 컨테이너 안에서 GPT CLI (Codex) 설치 및 사용법1. 설치# 전역 설치npm install -g @openai/codex설치가 완료되면 codex 명령어를 사용할 수 있다.2. 첫 실행 (자동 인증)codex처음 실행하면 자동으로 로그인/인증 프롬프트가 뜬다.브라우저 인증 또는 토큰 입력 방식으로 진행된다.3. 기본 사용codexCLI 환경에서 바로 GPT 기반 코드 생성/수정 가능자연어로 명령 입력하면 코드 생성 및 수정 수행예시:> create a python script that reads wav files and prints duration4. 재인증 (로그인 문제 발생 시)가끔 인증이 꼬일 수 있는데, 이럴 때는 아래처럼 초기화하면 된다.# 인증 정보 삭제rm ~/.code..

코딩에이전트 2026.03.31

PTQ와 QDQ

# TFLite INT8 양자화: 우리가 사용한 PTQ와 QDQ의 차이 PyTorch 모델을 Edge TPU용 INT8 TFLite로 변환하면서, 양자화 방식에 대해 정리한다. 우리가 사용한 방식은 **TFLite Native PTQ**이며, 흔히 말하는 **QDQ 방식과는 다르다**. --- ## 우리가 한 것 ``` FP32 ONNX (양자화 노드 없음) │ ▼ onnx2tf FP32 SavedModel │ ▼ TFLiteConverter + calibration 데이터 Full INT8 TFLite ``` 핵심은, **ONNX 그래프에는 양자화 관련 노드가 전혀 없다**는 것이다. ONNX는 순수 FP32 그래프로서 모델 구조를 전달하는 역할만 하고, 양자화는 마지막..

경량화 2026.03.03

Claude code 설치 방법

🚀 도커 컨테이너 안에서 nvm + Node.js 설치 순서1. nvm 설치# 컨테이너 안에서 실행apt-get update && apt-get install -y curl# nvm 설치curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash# nvm 로드 (bash 환경)export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"# 설치 확인nvm --version2. Node.js 설치# Node.js LTS 설치 (예: 1..

코딩에이전트 2025.09.23

복소 스펙트럼, 스펙트럼 그래프, 스펙트로그램 완벽 정리

오디오 신호 처리에서 자주 헷갈리는 용어들을 한 번에 정리했습니다.1. 복소 스펙트럼(Complex Spectrum)정의FFT(STFT)를 돌리면 각 주파수 빈 k마다 나오는 복소수 값X[k] = Re{X[k]} + j·Im{X[k]}실수부(Real): Re{X[k]}허수부(Imag): Im{X[k]}복소 스펙트럼이 담고 있는 정보크기(Magnitude): |X[k]| = √(Re{X[k]}² + Im{X[k]}²)위상(Phase): ∠X[k] = arctan(Im{X[k]}/Re{X[k]})💡 STFT 결과 전체를 '복소 스펙트럼'이라고 부르며, 크기와 위상 정보를 모두 담고 있습니다.2. (진폭) 스펙트럼 그래프(Magnitude Spectrum Plot)정의복소 스펙트럼에서 크기(|X[k]|)만 ..

오디오 2025.08.07

주파수 해상도와 빈(bin)

주파수 해상도와 빈(bin) 개념을 좀 더 쉬운 말로 풀어서 설명해 볼게요.1. 빈(bin)이란 무엇인가?STFT를 하면 시간 축마다 연속적인 소리 신호를 잘라서 FFT(푸리에 변환)를 적용해 주파수 성분의 세기를 계산합니다.이때 FFT가 반환하는 값 하나하나를 우리는 “빈(bin)”이라고 부릅니다.각 빈은 “이 구간 주파수 대역(Hz) 안에 얼마나 에너지가 모여 있는가”를 나타내는 막대(bar) 하나라고 생각하면 됩니다.예: bin[0] → 0–31.25Hz bin[1] → 31.25–62.5Hz … bin[512] → 15968.75–16000Hz2. 빈 개수 (bins) 계산우리가 n_fft = 1024로 설정했다면,복소수 FFT 결과로는 1024개의 값이 나오지만,실수(real) ..

오디오 2025.07.18

오디오 데이터 증강 : SpecAugment

본 글에서는 SpecAugment 데이터 증강 기법의 세 가지 주요 단계인 Time Warping, Frequency Masking, Time Masking을 소개했습니다.Time Warping은 TensorFlow의 sparse_image_warp 함수를 활용하여 log-mel-spectrogram을 왜곡하는 방법입니다. 가로축을 시간축(τ), 세로축을 주파수축(ν)으로 간주하고, 중앙 수평선 상의 임의 지점 x∈[W, τ−W]를 선택하여 좌우로 w만큼 이동시켰습니다. 여기서 w는 [0, W] 균등분포에서 샘플링하였고, 이미지 경계의 네 모서리와 양쪽 세로 중간점 총 6개의 앵커 포인트를 고정하여 안정적인 왜곡을 수행했습니다.Frequency Masking은 mel 주파수 채널 ν 중 연속된 f개의 채..

오디오 2025.07.17