English
Vision & 3D

Image Recognition이미지 인식

컴퓨터에게 사진은 숫자 표입니다. 그 숫자에서 '무엇이', '어디에', '어느 픽셀까지' 있는지를 알아내는 계산을 직접 해 봅니다. 작은 CNN은 이 브라우저에서 바로 학습하고, 검출과 분할은 결과를 재는 방법까지 손으로 확인합니다.

사진은 숫자 표

컬러 사진은 빨강·초록·파랑 세 장의 표이고, 픽셀마다 표마다 0~255 정수 하나가 들어 있습니다. 비전 모델이 하는 일은 모두 이 표에서 시작합니다. 숫자가 몇 개인지(해상도), 얼마나 잘게 나뉘는지(비트 깊이), 어떻게 퍼져 있는지(히스토그램).

체험 1: 숫자가 보일 때까지 확대

그림을 누르거나 끌면 그 둘레 12×12 픽셀이 숫자로 나옵니다.

체험 2: 픽셀을 줄이고, 단계를 줄이고

체험 3: 히스토그램과 밝기·대비

체험 4: 색 하나 골라 비슷한 픽셀 찾기

가장 단순한 '인식'입니다. 픽셀 숫자에 규칙 하나를 건 것이라, 물체가 아니라 색을 찾습니다. 탭 4가 여기서 이어집니다.

그림의 한 점을 눌러 색을 고릅니다.

요약그림은 세로 × 가로 × 3개의 숫자입니다.해상도와 비트 깊이가 담길 수 있는 세부의 상한을 정합니다.히스토그램은 노출과 대비를 한눈에 보여 줍니다.

참고문헌

  1. Gonzalez, R.C., Woods, R.E. (2018). Digital Image Processing, 4th ed., ch. 2–3. Pearson.
  2. Szeliski, R. (2022). Computer Vision: Algorithms and Applications, 2nd ed., ch. 2–3. Springer.
  3. van der Walt, S. et al. (2014). scikit-image: image processing in Python. PeerJ 2 (images: data.coffee, data.chelsea, CC0).

그림 속에 무엇이 있나

분류는 그림 한 장에 이름표 하나를 붙입니다. 여기 자료는 네 가지 도형(원, 네모, 세모, 십자)을 크기·위치·회전·밝고 어두운 색·잡음을 바꿔 가며 코드로 그린 24×24 회색 그림입니다. 작은 합성곱 신경망(3×3 합성곱 2층과 풀링, 완전연결 1층, 매개변수 약 2,300개)이 바로 여기서 이것을 배웁니다. 비교로, 같은 수의 매개변수로 픽셀 576개를 그대로 쓰는 소프트맥스 회귀를 함께 학습합니다.

24×24 → conv 3×3 ×8 → ReLU → max-pool 2 (11×11×8) → conv 3×3 ×16 → ReLU → max-pool 2 (4×4×16) → dense 256→4 → softmax · Adam, η 0.01, batch 32

체험 1: 자료

학습 2,000장(도형마다 500장), 시험은 모델이 학습에 쓰지 않는 다른 600장입니다.

체험 2: 어디서 틀리나

행은 정답, 열은 예측. 칸을 누르면 그 시험 그림들이 나옵니다.

체험 3: 도형을 직접 그려 주기

체험 4: 신경망 속 들여다보기

첫 층 필터(학습한 3×3 커널 8개, 파랑 +, 주황 −)와, 위 그림판의 그림에 대해 이것들이 만든 특징 지도.

둘째 층, 풀링 뒤: 4×4 지도 16장. 이것이 마지막 완전연결 층으로 들어갑니다.

요약합성곱은 작은 필터를 모든 자리에 다시 써서, 도형이 어디 있든 알아봅니다.픽셀을 그대로 쓰면 위치·회전·색 바뀜을 감당하지 못합니다.혼동행렬은 얼마나 틀리는지뿐 아니라 무엇과 헷갈리는지 보여 줍니다.

참고문헌

  1. LeCun, Y., Bottou, L., Bengio, Y., Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE 86(11).
  2. Krizhevsky, A., Sutskever, I., Hinton, G.E. (2012). ImageNet classification with deep convolutional neural networks. NeurIPS.
  3. He, K., Zhang, X., Ren, S., Sun, J. (2016). Deep residual learning for image recognition. CVPR.
  4. Kingma, D.P., Ba, J. (2015). Adam: a method for stochastic optimization. ICLR.

무엇이, 어디에

검출기는 상자를 내놓고, 상자마다 범주와 확신 점수가 붙습니다. 상자가 맞았는지는 IoU로 정합니다. 예측 상자와 정답 상자가 겹친 넓이를 둘을 합친 넓이로 나눈 값입니다. 검출기는 겹치는 상자를 많이 내놓으므로, NMS(non-maximum suppression)가 점수가 가장 높은 상자를 남기고 거의 같은 상자들을 지웁니다. AP(average precision)는 점수 문턱을 내릴 때 정밀도와 재현율이 어떻게 바뀌는지를 숫자 하나로 요약합니다. 아래 예측 상자는 모델이 아니라 규칙으로 만든 교육용 예시입니다(정답 상자를 흔들고, 겹치게 복제하고, 틀린 상자를 몇 개 더함).

IoU = |A ∩ B| / |A ∪ B| · precision = TP / (TP + FP) · recall = TP / #ground truth · AP = Σ (Rₙ − Rₙ₋₁) · max_{R ≥ Rₙ} P(R)

체험 1: 상자 두 개로 IoU

상자 안을 끌면 옮기고, 오른쪽 아래 모서리 가까이를 끌면 크기를 바꿉니다. 흔한 기준은 IoU 0.5 이상이면 맞음이고, 더 엄격한 평가는 0.5~0.95를 평균합니다.

체험 2: 점수 문턱과 NMS

체험 3: 정밀도–재현율과 AP

행을 누르면 위 장면에서 그 상자를 표시합니다.

요약IoU가 상자를 맞음으로 칠지 정합니다.NMS는 거의 같은 상자를 지우지만, 문턱이 너무 낮으면 이웃한 다른 물체도 지웁니다.AP는 IoU 기준에 따라 달라지고, 기준이 엄격할수록 낮아집니다.

참고문헌

  1. Everingham, M. et al. (2010). The PASCAL Visual Object Classes (VOC) challenge. International Journal of Computer Vision 88(2).
  2. Lin, T.-Y. et al. (2014). Microsoft COCO: Common objects in context. ECCV.
  3. Redmon, J. et al. (2016). You only look once: unified, real-time object detection. CVPR.
  4. Ren, S., He, K., Girshick, R., Sun, J. (2015). Faster R-CNN: towards real-time object detection with region proposal networks. NeurIPS.

어느 픽셀이 물체인가

분할은 모든 픽셀에 이름표를 붙입니다. 심층 신경망 전에는 밝기 문턱(Otsu가 자동으로 고름), 픽셀 색 묶기(k-평균), 씨앗에서 영역 키우기가 기본 도구였습니다. 지금도 쓸모 있고, 이것들이 틀리는 곳이 학습한 모델이 더 잘해야 하는 곳입니다. 합성 장면은 정답 마스크를 정확히 알기 때문에 모든 결과를 IoU와 Dice로 잽니다.

IoU = TP / (TP + FP + FN) · Dice = 2TP / (2TP + FP + FN) = 2·IoU / (1 + IoU)

체험 1: 밝기 문턱

체험 2: 색으로 k-평균

위 색을 눌러 어느 무리를 '물체'로 볼지 고르면 점수가 바뀝니다.

체험 3: 누른 곳에서 영역 키우기

물체 안을 누르세요. 누른 픽셀과 색이 허용 거리 안인 붙은 픽셀로 영역이 퍼집니다. 너무 작으면 구멍이 나고, 너무 크면 배경으로 샙니다.

요약물체가 밝기나 색으로 뚜렷이 다르면 단순한 규칙도 통합니다.IoU와 Dice는 모두 겹침을 재고, Dice가 늘 더 큽니다.실제 장면은 물체와 배경이 색을 공유해서 학습한 모델(U-Net, Mask R-CNN, SAM)이 필요합니다.

참고문헌

  1. Otsu, N. (1979). A threshold selection method from gray-level histograms. IEEE Transactions on Systems, Man, and Cybernetics 9(1).
  2. Arthur, D., Vassilvitskii, S. (2007). k-means++: the advantages of careful seeding. SODA.
  3. Ronneberger, O., Fischer, P., Brox, T. (2015). U-Net: convolutional networks for biomedical image segmentation. MICCAI.
  4. He, K., Gkioxari, G., Dollár, P., Girshick, R. (2017). Mask R-CNN. ICCV.
  5. Kirillov, A. et al. (2023). Segment anything. ICCV.

그림이 바뀌면 정확도가 떨어진다

모델은 학습한 그림과 실제로 만나는 그림이 닮은 만큼만 잘합니다. 조명, 대비, 센서 잡음, 시야를 가리는 것, 초점, 다른 모양새의 물체는 모두 입력을 학습한 것에서 멀어지게 합니다. 여기서는 탭 2의 CNN을 같은 시험 그림 600장에 변화를 하나씩 주며 시험합니다.

체험 1: 변화 하나를 키우기

체험 2: 다른 모양새의 물체

학습한 도형은 모두 속이 찬 것이었습니다. 사람은 똑같이 쉽게 읽는 윤곽선 도형으로 같은 모델을 시험해 보세요. 그다음 윤곽선 그림 몇백 장을 학습 자료에 더해 다시 학습해 봅니다.

요약비슷한 그림에서 잰 정확도는 조건이 바뀐 곳에서의 성능을 거의 말해 주지 않습니다.변화마다 무너지는 방식이 다르니, 현장에 있을 변화로 시험합니다.새 조건의 예를 학습 자료에 더하는 것이 가장 직접적인 해결입니다.

참고문헌

  1. Hendrycks, D., Dietterich, T. (2019). Benchmarking neural network robustness to common corruptions and perturbations. ICLR.
  2. Recht, B., Roelofs, R., Schmidt, L., Shankar, V. (2019). Do ImageNet classifiers generalize to ImageNet? ICML.
  3. Koh, P.W. et al. (2021). WILDS: a benchmark of in-the-wild distribution shifts. ICML.
  4. Geirhos, R. et al. (2020). Shortcut learning in deep neural networks. Nature Machine Intelligence 2.

교육용 페이지입니다. 도형 그림과 장면은 코드로 만든 합성 자료이고, 검출 탭의 예측 상자는 규칙으로 만든 예시이며 모델 출력이 아닙니다. 직접 연 사진은 브라우저 안에서만 처리합니다.