POPULAR POSTS

AI • 2026.06.11 16:53

CPU/NPU 환경에서 YOLO를 대체하는 경량 객체탐지 모델 개발 - VisionicNet 개발기

약 2달간 진행한 경량 객체탐지 모델 개발 프로젝트를 정리해보려 합니다. 결론부터 말씀드리자면 YOLO v8 Nano 대비 추론 속도 & 정확도 ± 10% 수준의 상용 라이선스 자유로운 모델을 만드는 데는 성공했고, INT8 배포는 아직 과제로 남아있습니다. 소요 시간 : 약 12개월학습(GPU 가동) 시간 : 약 315시간(약 13일) 소요개발 방식 : 1인 개발 + AI 툴(Claude, Gemini) 목표YOLO v8 Nano 모델을 대체할 CPU환경에 최적화 된 객체 탐지 모델 개발.추론 속도 및 정확도(mAP50-95)를 ± 10% 안에 드는것이 1차 목표배포 대상 : CPU 기반 서버, 모바일 엣지 디바이스 왜 만들게 됐는가?YOLO는 객체탐지 분야에서 사실상 표준처럼 쓰이는 모델이지만, Ul..

수학 • 2026.08.23 18:25

선형변환에서 고유값·고유벡터까지

AI 모델을 뜯어보다 보면 결국 벡터, 행렬, 선형변환, 고유값·고유벡터 같은 개념과 계속 마주치게 됩니다.이 글은 "AI는 결국 무엇을 하는 존재인가"라는 질문에서 출발해,선형변환의 정의부터 고유값·고유벡터가 실제로 PCA(전처리)와 SVD(모델 압축)에서 어떻게 쓰이는지까지 정리한 학습 노트입니다. 1. 선형변환은 "행렬"이 아니라 "동작"이다저는 선형 변환을 공부하면서 개념에 대해 갈피를 못잡고 있었습니다.특히 가장 먼저 짚어야 할 오해는 "선형변환 = 행렬"이라는 개념입니다.정확히는 다릅니다.선형변환 $T$: 벡터를 다른 벡터로 옮기는 추상적인 동작(함수). 아래 두 조건을 만족해야 합니다.가법성: $T(\mathbf{x}+\mathbf{y}) = T(\mathbf{x}) + T(\mathbf{y..

안드로이드 • 2021.09.25 18:56

안드로이드에서 MQTT 통신 하기(예제)

안드로이드에서 MQTT를 이용하여 각종 IoT가 접목된 기기들을 컨트롤하고자 한다. 그러면 어떻게 안드로이드에서 이를 사용할 수 있을까? 1. MQTT 라이브러리(paho mqtt) 설치하기 우선 MQTT 라이브러리를 설치해야 이 기능을 사용할 수 있으므로 설치를 합니다. implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1' 위 코드를 "build gradle" 파일 내에 있는 "dependencies" 에 추가합니다. 2. 코드 작성(Kotlin) class MainActivity : AppCompatActivity() { val ServerIP:String = "tcp://192.168.0.254:1883" //1번 서버 IP ..

AI • 2026.07.23 13:28

객체탐지 성능 지표 다시 정리 — IoU, Precision, Recall, mAP

모델을 개발하다 보면 자연스럽게 외워지는 내용들이 있습니다. IoU, mAP, Precision, Recall 같은 지표들이 그렇습니다.매일 보다 보니 수치는 바로 읽히는데, 막상 누군가 "그게 정확히 뭔가요?"라고 물으면 말로 설명하기가 생각보다 애매할 때가 있습니다. 이번 기회에 한 번 제대로 정리해두려 합니다.아는 내용이지만, 써놓으면 나중에 찾아보기 편하기도 하고요. IoU - 박스가 얼마나 겹쳐있는가IoU(Intersection over Union) 는 사용자가 지정한 정답 박스(라벨)와 AI가 예측한 박스가 얼마나 일치하는지를 나타내는 값입니다.IoU = 두 박스의 겹치는 면적 / 두 박스의 전체 합친 면적통상적으로 IoU가 50% 이상이면 "검출한 것"으로 인정합니다.50% 미만이면 아예 잘..

AI • 2026.06.19 10:58

Django vs FastAPI - CPU 환경 AI API 부하 테스트 (feat. asyncio)

모바일 앱에서 2초마다 이미지를 서버로 보내고, 서버가 YOLO로 추론한 결과를 돌려주는 API가 있습니다.문제는 동시 접속자가 늘어날수록 응답 속도가 버텨줄 수 있는가입니다.모바일 담당자와 협의한 결과 "2초마다 콜을 반복하기 때문에 응답이 2초 이내로 들어와야 한다" 는 요구사항이 확정됐습니다.그래서 직접 부하 테스트를 돌려봤습니다. Django 그대로 쓸 건지, FastAPI로 바꿀 건지, 바꾼다면 비동기 최적화까지 해야 하는지를 수치로 확인하기 위해서입니다. 테스트 환경항목내용인스턴스AWS C6i.large (Intel CPU 2 core, 4GB RAM)테스트 도구Locust부하초당 25명 동시 접속, 60초 지속테스트 범위이미지 수신 → YOLO 추론까지Django Workers2FastAPI..

RECENT POSTS

선형변환에서 고유값·고유벡터까지

AI 모델을 뜯어보다 보면 결국 벡터, 행렬, 선형변환, 고유값·고유벡터 같은 개념과 계속 마주치게 됩니다.이 글은 "AI는 결국 무엇을 하는 존재인가"라는 질문에서 출발해,선형변환의 정의부터 고유값·고유벡터가 실제로 PCA(전처리)와 SVD(모델 압축)에서 어떻게 쓰이는지까지 정리한 학습 노트입니다. 1. 선형변환은 "행렬"이 아니라 "동작"이다저는 선형 변환을 공부하면서 개념에 대해 갈피를 못잡고 있었습니다.특히 가장 먼저 짚어야 할 오해는 "선형변환 = 행렬"이라는 개념입니다.정확히는 다릅니다.선형변환 $T$: 벡터를 다른 벡터로 옮기는 추상적인 동작(함수). 아래 두 조건을 만족해야 합니다.가법성: $T(\mathbf{x}+\mathbf{y}) = T(\mathbf{x}) + T(\mathbf{y..

썸네일

행렬이란? - 데이터 그릇에서 CNN까지

딥러닝 코드를 짜다 보면 W @ x, A @ B 같은 행렬 곱셈을 매일 씁니다.그런데 막상 "행렬이 뭔가요?"라고 물으면 "숫자를 격자로 늘어놓은 것"이라는 답 이상을 말하기가 쉽지 않습니다. 이번에는 행렬의 두 가지 관점, 행렬 곱셈이 왜 그런 규칙으로 계산되는지, 그리고 CNN에서 행렬 곱셈이 어떻게 쓰이는지까지 순서대로 정리해봤습니다. 행렬을 보는 두 가지 관점1. 정적인 관점 - 데이터를 담는 그릇가장 직관적인 형태입니다. 서로 연관된 데이터를 행(Row)과 열(Column)로 정리하는 표입니다.엑셀 시트 / DB 테이블: 행은 '사람', 열은 '키, 몸무게, 나이'흑백 이미지: 가로×세로 픽셀의 밝기 숫자를 담은 격자판 ($28 \times 28$ 행렬)인접 행렬: 사람 간 친구 관계나 웹페이지..

썸네일

ViT-Base를 처음부터 구현해서 ImageNet-1K 300 epoch 완주했습니다

38일간 돌아가던 학습이 끝났습니다.epoch 300를 학습하면서 생긴 좌충우돌을 기록해보고자 합니다.프로젝트 목적이 프로젝트는 timm이나 HuggingFace의 ViT를 가져다 쓰는 게 아니라,patch embedding · multi-head attention · transformer block · classifier head까지 전부 PyTorch로 직접 구현하며Transformer 아키텍처를 체득하는 개인 학습/연구 프로젝트입니다. 로드맵은 이렇습니다.ViT 구현 - Transformer 구조 직접 구현 및 검증VLM 구현 - 학습된 ViT를 시각 인코더로 삼아 LLM + Projector를 연결하는 LLaVA류 멀티모달 파이프라인 구축데이터셋 단계적 확장 - MNIST → ImageNet-1K..

썸네일

자유도, 선형 변환 정리

지난 글에서 표본분산의 분모가 $n-1$인 이유를 설명할 때 자유도(Degrees of Freedom)를 잠깐 언급했습니다.그 개념을 제대로 이해하려면 좀 더 파고들 필요가 있어서, 이번에는 자유도와 그 주변 개념들을 같이 정리합니다.자유도 (Degrees of Freedom, df)자유도는 전체 데이터 중 어떤 제약에도 얽매이지 않고 독립적으로 선택할 수 있는 데이터의 수입니다.$$df = N - K$$$N$은 전체 데이터 수, $K$는 독립적인 제약 조건의 수입니다. 자유도를 이해하는 핵심은 두가지 종류의 데이터를 구분하는 것입니다. 1. 독립적으로 새롭게 제공되는 정보. 기존 데이터나 공식으로 예측할 수 없는 순수한 새 정보2. 평균 같은 이미 계산된 제약 조건 때문에 자동으로 결정된 값 표본분산에..

썸네일

표본 평균과 분산 정리 - 모분산과 표본분산은 왜 분모가 다른가

AI 모델을 다루다 보면 통계 개념이 자꾸 등장합니다. 손실 함수, 정규화, 배치 정규화 등 어디서든 평균과 분산이 나옵니다.그때그때 찾아보면서 넘어갔는데, 이번에 제대로 정리해두려 합니다.특히 모분산과 표본분산의 분모가 각각 N과 n-1로 다른 이유가 항상 찜찜하게 남아있었습니다.표본 평균 (Sample Mean)일상에서 "평균"이라고 부르는 것이 바로 표본 평균입니다. $n$개의 관측값을 모두 더하고 개수로 나눈 값입니다.$$\bar{X} = \frac{1}{n} \sum_{i=1}^{n} X_i = \frac{X_1 + X_2 + \cdots + X_n}{n}$$분산 (Variance)분산은 데이터가 평균으로부터 얼마나 흩어져 있는지를 나타내는 척도입니다.$$Var(X) = E[(X - \mu)^2..

썸네일