pile·
AI / ML·너드팩토리너드팩토리·

Custom Data 로 이미지 분류 전이학습 하기

너드팩토리가 유사 이미지 분류 기술을 만들며 전이학습의 개념과 모델 선정 과정을 정리한 글이다. 왜 처음부터 학습한 모델보다 전이학습이 나은지, 데이터셋 크기와 유사도에 따라 어디까지 재학습해야 하는지를 짚고, torchvision 의 DenseNet 코드를 뜯어 구조와 파라미터를 설명한다.

핵심 포인트
  • 전이학습은 이미 학습된 모델의 가중치를 가져와 다른 데이터셋에 적용하는 기법이고, 대부분의 경우 처음부터 쌓은 모델보다 성능이 좋다.
  • 이유는 층위에 따라 뽑는 특징이 다르기 때문이다. 초기 layer 는 직선이나 곡선 같은 일반적 feature 를, 뒤쪽 layer 는 데이터셋에 특화된 feature 를 뽑으므로 앞쪽은 재사용하고 뒤쪽만 재학습하면 된다.
  • 개념은 셋으로 나뉜다. 초기 layer 를 고정하고 마지막 classifier 만 새 카테고리 수에 맞게 교체하는 고정 기능 추출기, 역전파를 계속 돌려 조정하는 fine-tuning, 가중치를 공유해 시간을 아끼는 방식이다.
  • fine-tuning 판단은 데이터셋 크기와 사전학습 데이터셋과의 유사도 조합으로 한다. 작고 유사하면 linear classifier 만 학습하고, 작고 다르면 후반부보다 초기 layer 쪽 재학습이 낫고, 크고 다르면 처음부터 만드는 것과 다를 게 없다고 본다.
  • 모델은 DenseNet 을 골랐다. ResNet 의 skip connection 을 촘촘하게 늘려 특징 추출과 그래디언트 소멸 대응을 동시에 하기 때문이다.
상세 정리
  • 배경은 검색이다. 키워드만으로 검색 의도를 완벽히 파악하기 어려운데, 이미지를 입력해 유사한 것을 찾아주면 검색 도구를 보완할 수 있다.
  • ResNet 은 2015년 ILSVRC 우승 모델로, 출력에서 입력을 뺀 차이를 학습하는 skip connection 을 도입해 깊은 네트워크의 학습 에러와 복잡도 문제를 풀었다.
  • DenseNet 은 직전 layer 뿐 아니라 블록 안에서 거쳐온 모든 layer 의 입력이 다음 layer 에 반영된다. 채널이 블록이 끝날 때까지 계속 쌓이는 구조다.
  • 지름길 개수로 비교하면 블록에 x 개 layer 가 있을 때 ResNet 은 x 개, DenseNet 은 등차수열의 합인 x(x+1)/2 개가 생긴다.
  • 논문이 말하는 강점은 넷이다. 그래디언트 소멸 완화, 강한 특징 전파, 특징 재사용, 파라미터 수 감소.
  • Transition Layer 는 마지막 블록을 뺀 사이마다 들어가며 배치 정규화와 ReLU, 1x1 컨볼루션에 평균 풀링을 붙인 구조다. 텐서 채널을 절반으로, 이미지 크기를 4분의 1로 줄인다.
  • 크기가 4분의 1이 되는 이유는 평균 풀링의 기본 보폭이 2 이기 때문이고, 보폭을 늘리면 보폭 제곱의 역수만큼 줄어든다.
  • 채널 증가는 파라미터 증가로 이어져 계산량이 폭증하는데 1x1 컨볼루션이 채널을 줄여 GPU 와 메모리 부담을 던다. 이렇게 줄였다 늘리는 구조를 bottleneck 이라 부른다.
  • 마지막 Linear 는 최종 블록 출력 채널 수만큼의 1차원 텐서를 분류 대상 수에 연결하는 부분이고, 전이학습에서 바꿔야 할 지점이 바로 여기다.
  • 버전마다 블록별 layer 수가 다르다. 121 은 6, 12, 24, 16 이고 169 는 6, 12, 32, 32 다. 경우에 따라 모델 내부 입출력 텐서도 다를 수 있다.
  • torchvision 의 densenet.py 는 layer 와 block, 모델 본체가 각각 class 로 선언돼 상위 객체가 하위 객체를 호출하는 트리 구조를 띤다.
  • 주요 파라미터는 넷이다. growth_rate 는 각 layer 가 출력하는 고정 채널 크기로 채널의 성장을 뜻하고, block_config 는 블록별 layer 수 튜플이며 기본값이 121 버전이다.
  • num_init_features 는 RGB 3채널 입력 텐서를 처음 몇 채널로 바꿀지 정하고, num_classes 는 분류 클래스 수로 기본값이 1000 이라 그냥 활용만 할 때도 직접 설정해야 한다.
  • 라이브러리 모델은 필요한 파라미터만 넣어도 동작하지만, DropOut 을 넣거나 학습 속도를 위해 일부를 바꾸는 커스터마이징을 하려면 내부 구조와 코드를 이해해야 한다고 강조한다.
왜 읽나이미지 분류를 전이학습으로 시작하려는 개발자에게 왜 그게 통하는지와 DenseNet 내부 구조, fine-tuning 판단 기준을 함께 정리해주는 학습 노트.
너드팩토리
너드팩토리 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. AI / ML·stackoverflow-blogStack Overflow Blog·

    에이전틱 SDLC를 QA 엔지니어링 마인드셋으로 구축하기

    Motorola Solutions의 테스트 엔지니어링 선임 매니저 Suneet Malhotra가 Stack Overflow 팟캐스트에 출연해 MCP(Model Context Protocol) 기반 에이전틱 SDLC 파이프라인 구축과 LLM-as-judge 평가 방법론을 소개했다. QA 엔지니어링 관점을 소프트웨어 개발 생애 전반에 적용하고, 설계 단계 직후 스펙을 강화해 결함 비용을 줄이는 'QA shift-left' 접근을 다룬다.

    요약 이어보기
    #llm-agent#mcp#test-automation+2
  2. AI / ML·LINE EngineeringLINE Engineering·

    보안 업무를 위한 AI 에이전트 플랫폼 「SAGE」 개발기 1편: 판단은 사람에게 남기는 설계

    LY Corporation Security Development Division이 보안 업무용 AI 에이전트 플랫폼 SAGE의 개발 과정을 공개했다. "완전 자동화"와 "도입 미루기" 양 극단 사이에서 "판단은 사람에게 남기는 설계"를 핵심 원칙으로 삼고, 3단계 점진적 도입 전략(AI 보조→에이전트 협업→자동화)을 채택했다. 현재는 1단계를 중심으로 파일럿·실운영 중이다.

    요약 이어보기
    #llm-app#opensearch#mcp+2