연락처
LinkedIn: https://www.linkedin.com/in/rocknroll17
Github: https://github.com/rocknroll17
논문
Beyond Family Labels: A Taxonomic Ornstein-Uhlenbeck Prior for Avian 3D Shape Recovery
NeurIPS 2026 · Oral · 공동 1저자 · 중앙대 공간지능연구실
Project Page: Working on…

소개
단 한 장의 사진에서 새의 3D 자세와 체형을 복원하는 딥러닝 모델을 연구했습니다. 약 1만 종에 달하는 조류에 비해 3D 학습 데이터가 제한적이라는 Long-tail 문제에 주목하고, 학습에 포함되지 않은 종(OOD)에 대한 일반화 성능을 개선하고자 했습니다.
- 문제: 기존 SOTA 모델 AniMer+는 과(Family) 단위의 이진 대조학습으로 종 간 유사도를 학습해, 같은 과 내부의 세부적인 차이와 서로 다른 과 사이의 계통적 유사성을 충분히 반영하지 못했습니다.
- 방법: 생물분류학의 분류학적 위계 거리(종-속-과-목-강) 거리를 Ornstein–Uhlenbeck 공분산 공식을 통해 지수 감쇠 커널로 모델링하고, 이를 3D 체형 잠재 공간(Latent Space)의 Gaussian Negative Log-Likelihood Regularization Loss로 설계했습니다. 기존 대조학습 손실을 대체해 종 간 유사도를 연속적으로 반영하도록 설계했습니다.
- 결과: 미학습 종 벤치마크 CowBird에서 PCK@0.1을 16.40%에서 18.86%로 2.46%p 개선했습니다. 분류학적 구조를 무작위로 섞은 순열 대조군과 비교해 실제 계통 정보의 기여를 확인했습니다. 또한 rank granularity 실험을 통해서 과(Family) 단위의 구분을 넘어 더 세밀한 계통 정보를 반영하는 것이 OOD 성능 개선에 중요함을 확인했습니다.
프로젝트
QR-Bloom
프로젝트 링크: https://qr-bloom.rocknroll17.com
소개
위에서 내려다보면 스캔 가능한 QR 코드, 옆에서 보면 나무인 3D voxel 형상을 생성하는 디퓨전 모델 프로젝트입니다.
기술 스택:
PyTorch 3D U-Net DiT Diffusion Classifier-Free Guidance (CFG) FastAPI Docker
QR-Bloom 디퓨전 모델
- 조건부 3D Diffusion 모델
- 규칙 기반 생성의 한계(QR당 1개 형태 고착화)를 극복하기 위해, 카테고리·키·풍성도를 제어할 수 있는 3D 디퓨전 모델 적용.
- DDIM 샘플링으로 잎의 색이 평균화되는 문제를 ancestral sampling을 통해 다채로운 잎의 색이 나오도록 유도했습니다.
- 아키텍처 진화(3D-UNet DiT)
- QR 버전별(v2~v5) receptive field 차이로 인한 소형 QR 붕괴 문제를 해결하기 위해 초기엔 버전별 독립 3D-UNet으로 분리.
- 이후 백본을 DiT(Diffusion Transformer)로 전환하여 다중 버전의 파라미터를 단일 모델로 통합.
Github Pages 배포
- 브라우저 런타임 선정
onnxruntime-web의 WebGPU 3D Conv 미지원 및 CPU Fallback 병목을 해결하기 위해, 3D 연산을 WebGPU로 처리 가능한tf.js런타임으로 선정했습니다.
- Conv3D → Conv2D 분해를 통한 최적화
- tf.js는 conv2d만 im2col 행렬곱으로 최적화돼 있고, conv3d는 im2col 행렬곱 최적화가 아닌 기본 구현이라 느리다는 문제가 있었습니다.
- 3D Convolution을 Z축 기준 다중 Conv2D 연산으로 분해·재조립하여 커널 최적화 우회했습니다.
- 20-step 벤치마크에서 추론 시간을 84초 → 9.6초(약 9배) 단축되었습니다.
향후 목표
- 나무 뿐만 아닌 다양한 테마 추가 및 분포 다양화
- FunctionGemma를 활용한 자연어 프롬프트로 객체를 생성·steering하는 기능 추가 예정
다빈치 코드 강화학습 AI (2025.12 ~ 2026.06)
Github:
소개
보드 게임 다빈치 코드를 PPO 기반 강화 학습을 통해 학습하고 AI 상대, PVP 게임을 진행할 수 있는 프로젝트입니다.
기술 스택:
Python FastAPI PPO Transformer Docker - 다단계 연쇄 추론을 위한 트랜스포머 인코더 설계
- 게임 상태를 42개 토큰으로 표현하고 4층 Transformer 인코더를 설계했습니다.
- 내 패, 상대 패, 추측 실패 기록에 동일한 위치 임베딩을 공유해 카드 슬롯 간 대응 관계를 학습하도록 구성했습니다.
- belief 보조 헤드
- Belief 보조 손실의 gradient가 공유 표현을 직접 교란하지 않도록 상대 슬롯 표현에만 전달하고, 공유 표현 경로는 detach로 차단했습니다.
- Belief 예측을 residual로 결합하고 projection을 zero-init하여 학습 초기의 영향을 제한했습니다.
- GUESS 행동 공간의 계층적 분해
- 카드 위치와 값을 동시에 예측하는 169개 행동 공간을 위치 선택과 값 예측의 2단계 구조로 분해했습니다.
- 선택한 위치를 Card-Value Head의 조건으로 사용해 행동 공간을 26개로 축소하고, 강화학습의 탐색 부담을 줄이도록 설계했습니다.
- 추론 분석 및 검증
- 다빈치 코드는 불완전 정보 게임이므로, 모델이 정답을 맞히더라도 실제 단서 기반 추론을 수행한 것인지 검증이 필요했습니다.
- Attention 가중치와 슬롯별 Belief 분포를 시각화하는 분석 페이지를 구축하여, 모델의 정책이 판단에 필요한 카드에 실제로 주의를 기울이는지 정성적으로 확인했습니다.
- Attention 가중치만으로 예측에 대한 인과적 영향을 판단하기 어렵다는 점에 착안해, 제약 행렬로 특정 Attention 연결을 마스킹하고 정상 추론 대비 행동 logits의 변화를 비교했습니다.
- 서비스 배포 및 추론 최적화
- PyTorch 체크포인트를 ONNX로 변환하고
onnxruntime-web에 연동해 AI 추론과 게임 로직을 브라우저에서 직접 실행하도록 구현했습니다. 별도의 추론 서버 없이 AI 대전을 지원하도록 구성했습니다.
- 학습 성능
- Mastering Da Vinci Code: A Comparative Study of Transformer, LLM, and PPO-based Agents 논문의 공개 PPO 구현을 기반으로 모델을 개선하고, 10,000게임 평가에서 승률 53.6%를 기록했습니다.
오픈소스
MariaDB MCP
Github: https://github.com/MariaDB/mcp
소개
사내 데이터베이스 작업 효율을 높이기 위해 MariaDB MCP를 포크하고, 사내 환경에 필요한 기능을 개발하며 확장했습니다. 이 과정에서 다른 환경에서도 활용할 수 있는 기능을 공식 레포에 기여했으며, 총 2건의 PR이 병합되었습니다.
기술 스택:
Python MCP (FastMCP) MariaDB Docker병합된 PR
- https://github.com/MariaDB/mcp/pull/7
- 임베딩 API 키가 없으면 MCP 서버 실행이 실패하던 문제를 해결했습니다. 임베딩 서비스를 선택적으로 초기화하고, 관련 도구도 필요한 설정이 있을 때만 등록하도록 변경해 SQL 도구만 사용하는 환경에서도 서버를 실행할 수 있도록 했습니다.
- https://github.com/MariaDB/mcp/pull/13
- 기존 스키마 조회 도구에 외래키 관계 정보가 없어 LLM이 다중 테이블 JOIN에 필요한 연결 관계를 파악하기 어려운 문제를 해결했습니다. 외래키 정보를 함께 반환하는 도구를 추가해 테이블 간 관계를 별도 조회 없이 확인할 수 있도록 했습니다.
리뷰 대기 PR
- https://github.com/MariaDB/mcp/pull/11
- 대규모 데이터베이스에서 쿼리 변경으로 발생할 수 있는 성능 문제를 사전에 분석할 수 있도록
explain_query와explain_query_extended도구를 추가했습니다. 실행 계획과 인덱스 사용 정보 등을 반환해 LLM이 쿼리의 실행 구조를 검토할 수 있도록 했습니다.
- https://github.com/MariaDB/mcp/pull/26
- 빈번하게 발생하는 DB 테이블 분석 및 SQL 튜닝 요청을 위해
explain_table과query_tuningMCP Prompt를 MCP 서버에 추가했습니다. - 그 과정에서 중복되던
get_table_schema/get_table_schema_with_relations두 툴을 단일 툴로 통합해 정리했습니다.