| 한눈에 보기 | |
|---|---|
| 저장소 | kornia/kornia |
| 개발 | kornia (조직) |
| GitHub 스타 | 11,565 (오늘 +88) |
| GitHub 트렌딩 | 일간 Python 3위 |
| 포크 | 1,456 |
| 주 언어 | Python |
| 라이선스 | Apache-2.0 |
| 공개일 | 2018-08-22 |
| 최신 릴리스 | v0.9.0 (2026-10-23) |
컴퓨터비전 라이브러리 코르니아(Kornia)는 이미지 처리와 기하 비전 알고리즘을 파이토치(PyTorch) 텐서 위에서 미분 가능하게 구현한 오픈소스다. kornia/kornia는 같은 이름의 GitHub 조직이 관리한다. 최근 0.9.0 릴리스가 나오면서 일간 트렌딩 Python 부문 3위에 올랐고, 하루 사이 스타도 크게 늘었다.
무엇을 하나
README는 1,200개 이상의 공개 연산자를 제공하며, 상당수는 torchvision에 대응 기능이 없다고 설명한다. 주요 영역은 다음과 같다.
- 카메라 모델, 에피폴라 기하, 최소 해법기(minimal solver), RANSAC
- SIFT, HardNet, DISK, ALIKED, XFeat, DeDoDe, LoFTR, LightGlue 등 지역 특징 검출·기술·매칭
- 필터, 모폴로지, 색공간 변환, 이미지 손실 함수와 지표
- 이미지·마스크·박스·키포인트에 같은 변환을 함께 적용하는
AugmentationSequential - 깊이-3D 투영, 리 군(So3, Se3) 등 미분 가능한 기하 연산
작동 방식·구조
핵심은 배치 단위 처리다. 샘플마다 다른 파라미터를 한 번의 호출로 넘길 수 있다. 예를 들어 가우시안 블러에는 (B, 2) 형태의 시그마를, 회전에는 (B,) 각도를 준다. 연산은 입력 텐서가 있는 장치에서 NumPy 변환 없이 실행되고 대부분 그래디언트가 흐른다. 다만 RANSAC과 DeDoDe·XFeat 같은 학습형 특징의 추출 단계는 그래디언트 없이 동작한다고 밝혔다.
RANSAC은 가설 샘플링과 점수 계산을 장치에서 수행한다. 기본값은 정제와 최종 선택을 호스트에서 float64로 처리하며, compile=True를 주면 PyTorch 2.14 이상의 CPU·CUDA에서 전체 추정을 컴파일된 그래프 하나로 돌린다고 한다. 프로젝트는 torch.compile 호환성과 ONNX 내보내기 가능 여부를 연산자별로 문서에 공개한다.
써보면
설치는 pip install kornia로 한다. 샘플별 시그마로 배치 블러를 거는 예다.
import torch
import kornia.filters as KF
x = torch.rand(4, 3, 256, 256)
sigma = torch.tensor([[1.0, 1.0], [1.5, 1.5], [2.0, 2.0], [3.0, 3.0]])
y = KF.gaussian_blur2d(x, (9, 9), sigma)
이미지와 마스크에 같은 증강을 적용하는 예는 다음과 같다.
import torch
import kornia.augmentation as K
aug = K.AugmentationSequential(
K.RandomAffine(degrees=15.0, p=1.0),
data_keys=['input', 'mask'],
)
img, mask = torch.rand(2, 3, 128, 128), torch.zeros(2, 1, 128, 128)
img_out, mask_out = aug(img, mask)
최근 업데이트
최신 릴리스는 v0.9.0(2026-10-23)이다. 개발진은 아래 개선을 내세운다.
- fp16·bf16 워프와 기하 연산 정상 동작, 애플 CPU에서 가우시안 블러 16배, 언샤프 마스크 3배 가속
- MPS에서 CLAHE 2,000배 가속, 증강 과정의 호스트 동기화 10배 감소, 모폴로지 연산 4배 가속
- 3개월간 사람의 통제 아래 Astra, Fable, Opus 5.5 등 AI 모델을 활용해 조용한 버그와 성능 저하를 점검했고, 커뮤니티 PR 995건을 병합
- 동작하지 않던 SAM3 등 일부 모델 제거, Qwen 2.5 수정, LLM 에이전트용 색인(llms.txt) 문서 추가
누구에게 유용한가
학습 파이프라인에서 샘플마다 다른 변환을 GPU 위에서 적용해야 하는 연구자, 박스·키포인트·마스크를 함께 증강해야 하는 검출·분할 개발자, 카메라 보정이나 SLAM, 스테레오 비전처럼 기하 연산에 그래디언트가 필요한 로보틱스 엔지니어에게 맞는다. 특징 매칭과 RANSAC을 배치로 돌려야 하는 3D 재구성 작업에도 쓸 수 있다.
의의와 한계
라이선스는 Apache-2.0이다. 2018년에 시작해 8년 넘게 이어졌고, README는 앞으로 API 확장보다 명시적 규약과 적합성 테스트, 정직한 벤치마크를 우선하는 '실행 가능한 명세'를 지향한다고 밝혔다.
성능 주장에는 조건이 붙는다. README에 따르면 RTX 4090, 배치 32 조건에서 다수 연산이 CPU의 OpenCV나 scikit-image보다 10~70배 빠르다. 반면 torchvision과 겹치는 소수 연산은 즉시 실행 모드에서 더 느리고, 단일 이미지 uint8 CPU 작업은 OpenCV가 앞선다. 릴리스 노트도 CPU에서는 OpenCV보다 약 4배 느리다고 인정한다. 반정밀도는 CPU 기준 fp16 243건, bf16 256건의 알려진 테스트 실패가 남아 있고, CUDA·MPS 반정밀도를 검증하는 CI는 없다. 단일 블러나 리사이즈 같은 고정 파라미터 연산이라면 파이토치나 torchvision 몇 줄로도 충분하다는 점도 README가 스스로 밝힌다.

