모든 기록
2026
09월
-
2. CIGPose 구현 해설 - 관절 벡터 하나를 바꾸면 어디까지 학습될까?
CIGPose-x의 CSPNeXt·GAU·CIM·HGNN을 실제 텐서 크기로 따라가고, SimCC와 두 손실의 계산 및 detach/no_grad에 따른 gradient 경로를 코드로 확인한다.
-
1. CIGPose 논문 리뷰 - 가려진 관절을 문맥에 맡겨도 될까?
CIGPose (CVPR 2026) — 배경에 속는 자세 추정에서 출발해 인과 개입, 정준 임베딩, 계층적 GNN을 살펴보고 실험과 한계까지 정리한 논문 리뷰
-
2. FFDP 수식과 학습 구조 - 좌표가 복원되는 과정을 따라가기
손으로 계산한 DWT에서 시작해 FFDP의 계수 조절, 검출 좌표 중심 확산, DDIM 갱신, 두 단계 학습과 gradient 경로를 하나씩 따라간다.
-
6. PyTorch 06 - Strided CNN과 Depthwise Separable CNN
Conv2d의 채널과 공간 크기를 계산하고, pooling을 학습 가능한 convolution으로 바꾸거나 depthwise와 pointwise로 분해하는 과정을 비교
-
5. PyTorch 05 - MNIST 학습과 평가 루프 완성하기
MLP의 hidden dimension부터 CrossEntropyLoss, train/eval, 평균 loss와 accuracy, Matplotlib 기록까지 전체 학습 흐름을 정리
-
4. PyTorch 04 - MNIST Dataset과 DataLoader 이해하기
이미지 한 장이 (1, 28, 28) 텐서가 되고 DataLoader에서 (B, 1, 28, 28) 배치로 나오는 과정을 정리
-
3. PyTorch 03 - backward부터 detach까지, Autograd 흐름 읽기
zero_grad, backward, step이 나뉜 이유와 detach, clone, no_grad가 계산 그래프를 어떻게 다루는지 XOR 학습 코드로 정리
-
2. PyTorch 02 - XOR로 이해하는 신경망 구조와 순전파
nn.Module, Linear, forward와 BCEWithLogitsLoss를 XOR 분류 코드의 텐서 크기를 따라가며 정리
-
1. PyTorch 01 - 텐서로 선형회귀를 직접 풀어보기
reshape, cat, ones_like, lstsq와 행렬곱을 따라가며 텐서의 shape가 실제 계산에서 어떤 역할을 하는지 정리
-
1. OcclusionGateNet 개발기 1 — 선글라스를 쓰면 운전자 모니터링은 어떻게 될까?
우수상을 받은 캡스톤 프로젝트 OcclusionGateNet. 눈과 자세를 보던 DMS가 얼굴 복원과 가시성 기반 융합으로 확장된 이유부터 정리한다.
-
2. OcclusionGateNet 개발기 2 — 가려진 얼굴의 정답은 어디서 얻을까?
DMD의 시간 구간 라벨부터 clean/masked 짝 데이터와 MediaPipe pseudo-label까지. 서로 다른 목적의 데이터셋과 가시성 라벨을 구분한다.
-
3. OcclusionGateNet 개발기 3 — ORFormer는 가려진 얼굴을 어떻게 추정할까?
VQ codebook, regular·messenger 표현, alpha 혼합, reference heatmap과 HGNet까지. 원 논문의 아이디어와 프로젝트 구현을 구분하며 복원 경로를 따라간다.
-
4. OcclusionGateNet 개발기 4 — loss는 내려가는데 복원은 왜 안 될까?
정답 좌표 재점검, VQ codebook collapse, warm-start, alpha 보조 손실과 CPU 전처리 병목. 저장된 학습 일지를 현재 코드와 대조해 정리한다.
-
5. OcclusionGateNet 개발기 5 — 복원한 얼굴을 얼마나 믿어야 할까?
좌표 교체와 feature fusion은 다른 gate다. 48프레임 입력, 얼굴 region token, visibility 가중치와 task별 pose–face 혼합을 코드와 수식으로 설명한다.
-
6. OcclusionGateNet 개발기 6 — 복원과 gate는 실제로 도움이 되었을까?
Clean/masked macro-F1, 재학습 ablation, 융합 비교와 통계의 범위. 원시 CSV로 수치를 다시 계산하고 개선된 결과와 불리한 결과를 함께 읽는다.
-
7. OcclusionGateNet 개발기 7 — 모델들을 연결하고, 야간 영상을 찍어보기까지
두 카메라와 48프레임 버퍼, 얼굴 검출 실패의 fallback, 야간 데모와 재현 조건. 캡스톤을 마무리하며 남은 과제를 정리한다.
08월
-
1. FFDP 논문 리뷰 - 가려진 움직임을 주파수로 복원하기
가려진 관절을 주파수 성분으로 나누는 이유부터 2D 잡음 제거 사전, 3D 동작 복원, 절제 실험과 남은 한계까지 정리합니다.
수정 2026.09.08 · 손필기와 후속 대화를 논문·보충자료와 대조해 정리
06월
-
TabPFN 논문 리뷰 - 학습 없이 1초 만에 테이블 데이터를 분류하다
TabPFN: A Transformer That Solves Small Tabular Classification Problems in a Second (Hollmann et al., 2022) — 베이지안 PPD를 통째로 사전학습한 트랜스포머. 동전 던지기에서 SCM prior, 손실함수 유도, attention 추론까지 따라가며 정리한 노트
수정 2026.09.08 · VI와 데이터 분할 수식의 표시 오류 수정
05월
-
CLIP 논문 리뷰 - 자연어로 이미지를 분류하다
Learning Transferable Visual Models From Natural Language Supervision (Radford et al., 2021) — 이미지-텍스트 대조 학습과 Zero-shot 전이를 정리한 CLIP 노트
-
BYOL 논문 리뷰 - 네거티브 샘플 없이 표현을 학습하다
Bootstrap Your Own Latent (Grill et al., 2020) — Online/Target 네트워크와 Predictor로 collapse 없이 자기지도 표현을 학습하는 BYOL 노트
-
GCN 논문 리뷰 - 그래프에 합성곱을 가져오다
Semi-Supervised Classification with Graph Convolutional Networks (Kipf & Welling, 2017) — 스펙트럴 그래프 합성곱부터 1차 근사 전파 규칙까지 정리한 GCN 노트
-
ResNet 논문 리뷰 - 잔차 학습으로 심층 신경망을 살리다
Deep Residual Learning for Image Recognition (He et al., 2016) — Degradation 문제와 항등매핑 가설을 따라가며 정리한 ResNet 노트
-
SVM 논문 리뷰 - 마진을 최대화해서 최적의 분류기를 찾다
A Training Algorithm for Optimal Margin Classifiers (Boser, Guyon, Vapnik, 1992) — 마진 최대화부터 라그랑지안·KKT·쌍대 공간·커널 트릭까지 따라가며 정리한 SVM 노트
02월
-
1. CNN 2강 - 이미지 분류와 최근접 이웃 분류기
KNN이 이미지에서 왜 안 되는지, Linear Classification이 왜 필요한지 — 처음 배우면서 헷갈렸던 것들
-
2. CNN 3강 - 손실 함수와 최적화
SVM Loss는 왜 max를 쓰는지, Cross Entropy의 log는 뭘 의미하는지 — 수식이 직관으로 바뀌는 순간
-
3. CNN 4강 - 신경망과 역전파
Chain Rule이 왜 필요한지 처음에 몰랐다 — 역전파를 이해하기까지의 과정
-
4. CNN 5강 - 합성곱 신경망 기초
필터가 뭘 보는 건지, 출력 크기는 왜 그렇게 계산되는지 — Conv 연산의 직관을 잡기까지
-
5. CNN 6강 - CNN 아키텍처와 학습 기법
VGGNet은 왜 3x3을 고집하고, ResNet의 skip connection은 왜 천재적인 발상인지
-
SQLite 총정리 - 코드와 정의 치트시트
CRUD부터 JOIN·윈도우 함수까지, SQLite 입문 핵심을 코드와 정의로 한 번에 복습
-
5. origin은 명령어가 아니다
origin을 원격 저장소 자체가 아니라 이름으로 이해하고, push -u가 만든 upstream 관계를 따라가며 fetch와 pull의 역할을 다시 정리한 기록
01월
-
Python 입문 총정리 - 코드와 정의 치트시트
print부터 외장 함수까지, 파이썬 입문 핵심을 코드와 정의로 한 번에 복습
-
6. 병합 버튼은 기록의 모양을 정한다
PR의 merge, squash, rebase 선택을 같은 최종 파일과 다른 커밋 그래프로 비교하고, 브랜치 전략을 팀 규모가 아니라 변경 흐름으로 판단한다
2025
12월
-
4. 되돌리기는 대상을 먼저 정한다
restore, reset, revert를 모두 이전으로 돌아가는 명령으로 묶지 않고 working tree, index, branch history 중 어느 대상을 바꾸는지 비교한다
-
3. 같은 변경도 커밋 기록은 달라진다
fast-forward, merge, rebase, squash를 결과 파일이 아니라 커밋 그래프로 비교하며 각 방식이 남기는 기록을 구분한다
-
1. add와 commit 사이에 남는 변경
스테이징을 파일을 고르는 곳이라고 적었던 노트에서 출발해, 같은 파일의 두 버전이 index와 작업 트리에 동시에 남는 과정을 확인한다
-
2. 브랜치는 프로젝트 복사본이 아니다
브랜치를 프로젝트 복사본이라고 적었던 문장에서 출발해, 두 이름이 같은 커밋을 가리키고 갈라지는 과정을 실제 그래프로 확인한다
-
10. DFS는 바로 들어가고 BFS는 차례를 기다린다
바로 재귀로 처리하는 DFS와 큐 뒤에 넣어 두는 BFS라는 노트의 깨달음을, 같은 그래프의 방문 순서와 거리 배열로 따라간다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
11. 방향이 생기면 방문 표시만으로는 부족하다
미완성으로 남아 있던 방향그래프 노트를 다시 읽고, 도달 가능성·순환·강연결·위상 순서가 서로 다른 질문임을 작은 예제로 구분한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
12. 가장 싼 선택을 믿을 수 있는 조건
동전 반례와 최소신장트리의 분할 속성을 연결해, Prim과 Kruskal이 현재 가장 싼 간선을 선택해도 되는 조건을 따라간다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
13. 최단 경로는 음수 간선에서 갈라진다
최단 경로가 없다는 노트의 문장에 출발점과 도착점 조건을 붙이고, Dijkstra의 확정과 Bellman-Ford의 반복 완화를 비교한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
9. 그래프의 저장 방식이 탐색 비용을 바꾼다
간선만 남길 수 있는지 묻던 기록에서 출발해, 인접리스트의 포인터가 가리키는 대상과 저장 방식별 탐색 비용을 확인한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
11월
-
14. 같은 부분문제를 다시 풀지 않는다
에어텔 과제에 보관된 재귀와 반복문 코드를 같은 점화식으로 읽고, 중복 호출·숙박비의 위치·경로 복원을 직접 확인한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
10월
-
1. 삽입 정렬은 이미 정렬된 구간을 믿는다
삽입 정렬에서 왜 앞부분을 끝까지 다시 보지 않아도 되는지, 당시의 의문과 작은 배열 추적을 통해 선택 정렬과 비교한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
2. 힙은 한 경로만 고쳐도 된다
OJ 60점과 DownHeap 의심 메모에서 출발해 힙 삽입과 삭제가 한 경로만 복구하는 이유를 확인한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
3. 모든 노드가 끝까지 내려가지는 않는다
DownHeap을 모든 부모에 호출해도 상향식 힙 생성이 O(n)인 이유를 높이별 노드 수로 따라간다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
5. 정렬된 자리는 힙에서 빼낸다
최댓값을 배열 끝으로 보낸 뒤 힙 크기를 줄이는 과정을 추적하며 힙 정렬의 경계와 불변식을 이해한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
6. 새 노드 없이 합쳐도 호출 스택은 남는다
연결 리스트를 끊고 기존 노드를 다시 잇는 과정을 따라 더미 노드, 안정성, 재귀 공간을 구분한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
7. 퀵 정렬의 경계는 한 칸도 그냥 넘길 수 없다
Lomuto와 Hoare의 서로 다른 반환 경계를 구분하고 3-way partition의 세 구간을 직접 추적한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
1. 두 번 도는 반복문에서 시작한 Big-O
누적 평균을 매번 다시 계산하는 코드와 이전 결과를 이어 쓰는 코드를 비교하며 실행시간이 아니라 증가율을 읽는다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
2. 재귀는 돌아오는 순서까지 읽는다
하노이 탑의 두 재귀 호출 사이에 있는 한 줄을 따라가며 기저조건, 호출 스택, 시간복잡도를 함께 읽는다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
3. 포인터를 바꾸면 다음 줄의 의미도 바뀐다
포인터 대입 순서를 잘못 바꾸자 새 노드가 자기 자신을 가리켰다. 당시 디버깅 노트의 사고를 따라가며 이중 연결리스트의 삽입과 삭제 불변식을 정리한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
4. 다항식 덧셈은 남은 항까지 합쳐야 한다
두 연결리스트를 함께 순회할 때 한쪽이 먼저 끝나는 순간과 결과 리스트의 끝을 관리하는 방법을 다항식 덧셈으로 확인한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
5. 집합의 중복은 코드가 막아야 한다
연결리스트는 저절로 집합이 되지 않는다. 삽입 규칙과 정렬 전제를 확인하며 합집합과 교집합을 구현한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
6. 스택에서 기억해야 하는 것은 맨 위다
top=-1의 이유와 연결 스택의 top 포인터를 따라가며 배열과 연결리스트 구현의 같은 불변식을 찾는다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
7. 수식을 읽는 순서를 스택에 맡긴다
괄호 검사와 후위식 계산을 따라가며 두 번 pop한 피연산자의 순서와 중위식 연산자 처리 원리를 정리한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
8. 큐가 비는 순간 두 포인터를 함께 본다
연결 큐가 0개와 1개 사이를 오갈 때 front, rear, next, size를 어떤 순서로 바꿔야 하는지 확인한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
9. 트리 순회는 처리하는 시점이 다르다
전위·중위·후위 순회를 세 가지 암기 순서가 아니라 현재 노드를 처리하는 시점의 차이로 읽는다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
10. 입력 순서에 기대지 않고 트리를 만든다
전위 순서 입력을 소비하는 원본 트리 생성법의 전제를 확인하고, 노드 ID로 연결해 행 순서와 분리하는 방법을 구현한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
8. 이진 탐색은 못 찾았을 때의 답도 정한다
같은 이진 탐색 구조가 exact search, predecessor, lower bound에서 다른 실패값을 내는 이유를 계약으로 정리한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결
-
4. k번째 값만 필요하면 전부 정렬하지 않는다
최소 힙을 한 번 만든 뒤 k-1번만 꺼내는 과제 코드에서 O(n+k log n)을 이해한다.
수정 2026.09.09 · 기초 개념과 예제를 보강하고 시리즈 흐름을 연결