우리는 수백만 장의 실제 사진으로 피부 분석 AI 모델을 훈련했습니다 — 실제 프로덕션에서 실제로 효과적인 방법
Source: Dev.to
지난 몇 년 동안 우리는 모바일‑우선 AI 피부 분석 시스템을 구축해 왔으며, 전 세계(미국과 캐나다 제외)에서 1 000 000명 이상의 사용자가 이용하고 있습니다. 대부분의 연구 환경과 달리 이 시스템은 임상 데이터가 아닌 실제 스마트폰 사진—즉, 통제되지 않은 환경에서 사용자가 촬영한 잡음이 섞인 사진—을 사용합니다.
현재까지 우리는 수백만 장의 이미지를 처리했으며, 그 중 몇십만 장을 선별하여 학습에 사용했습니다. 약 27 000장의 실제 사진으로 구성된 고정 검증 세트를 활용해 모델 버전마다 성능을 일관되게 추적하고 있습니다.
이 글은 처음부터 모델을 만드는 방법에 대한 것이 아닙니다. 몇 주가 아니라 수년에 걸쳐 프로덕션 환경에서 모델을 개선하려 할 때 실제로 효과가 있는 방법에 대한 이야기입니다.
1. 고정된 검증 세트가 더 큰 세트보다 더 가치 있다
우리가 내린 가장 중요한 결정 중 하나는 가장 흥미롭지 않은 것이었다: 우리는 검증 데이터셋 업데이트를 중단했다.
모든 모델 버전은 동일한 약 27 k 실제 이미지에 대해 평가되었다. 재균형, 정리, 개선 없이.
이것은 진행 속도를 늦췄지만—더 정직했다.
지표가 향상될 때, 우리는 테스트 데이터가 쉬워졌기 때문이 아니라 모델 자체가 실제로 개선됐다는 것을 알았다.

2. 더 많은 데이터가 생각보다 빨리 도움이 멈춘다
우리는 데이터 규모를 늘리면 성능이 지속적으로 향상될 것이라고 가정했습니다. 그렇지 않았습니다.
수백만 장의 이미지를 확보했을 때, 추가 데이터로 인한 한계 이득이 크게 감소했습니다. 실제 개선은 필터링에서 나왔습니다:
- 저품질 이미지 제거
- 중복 감소
- 희귀하지만 중요한 사례의 대표성 확대
실제로는 수십만 장 정도의 선별된 하위 집합이 전체 데이터셋보다 더 유용했습니다.

3. Garbage In, Garbage Out — 추론 전에 필터링합니다
초기에 우리는 입력 중 얼마나 많은 것이 유효하지 않을지 과소평가했습니다. 사용자는 흐릿한 프레임, 부분적인 사진, 혹은 전혀 유용한 신호가 없는 이미지를 모두 업로드합니다. 실제로 30–40 % 정도의 원시 사용자 업로드가 모델에 도달하기 전에 필터링되어야 했습니다.
모델을 모든 경우에 강인하게 만들려고 시도하기보다, 우리는 전처리 파이프라인을 도입했습니다:
- On‑device detection – 가벼운 객체 탐지기(초기에 YOLO‑based, 이후 더 최적화된 버전으로 교체)를 사용해 관심 영역을 찾아 자동으로 해당 부분을 크롭합니다. 이를 통해 완벽한 사용자 행동을 요구하지 않고 입력을 표준화합니다.
- Backend relevance check – 이미지에 피부가 포함되어 있지 않은 것으로 판단되면 더 이상 처리하지 않고 사용자가 사진을 다시 촬영하도록 안내합니다.
- Borderline enhancement – 기본적인 노이즈 제거, 샤프닝, 대비 조정이 적용됩니다. 이미지가 사용 가능해지면 진행하고, 그렇지 않으면 폐기합니다.
이 단계만으로도 전체 시스템 신뢰성이 크게 향상되었습니다 — 모델을 바꾼 것이 아니라 입력을 개선함으로써 얻은 효과입니다.
4. 실제 이미지가 단순 가정을 깨뜨리다
대부분의 모델은 깨끗하고 중앙에 잘 배치된 이미지로 학습됩니다. 실제 사용자들은 데이터셋과 다르게 행동합니다. 사진에는 여러 객체가 포함되거나 구도가 좋지 않거나 조명이 일관되지 않거나 관련 없는 내용이 들어 있을 수 있습니다. 전체 이미지를 하나의 입력으로 취급하면 불안정한 동작이 자주 발생합니다.
감지 기반 접근법(detection‑based approaches) — 모델이 특정 영역에 집중하도록 하는 방법 — 으로 전환하면 실제 환경에서의 성능이 크게 향상되었습니다. 이는 바로 벤치마크 점수를 올렸기 때문이 아니라, 시스템을 현실에 맞추었기 때문입니다.
5. 하나의 지표 최적화가 제품에 해를 끼칠 수 있다
Early versions of the model prioritised sensitivity. This reduced missed cases but increased false positives. From a metrics perspective this looked like progress; from a product perspective it created friction.
Over time, improving precision became just as important. The goal shifted from “detect everything” to “provide useful and trustworthy outputs.”
Key lesson: Model quality is not defined by a single metric — but by how metrics interact.
6. 더 나은 모델이 항상 승리하는 것은 아니다
우리는 시간에 따라 여러 아키텍처를 실험했습니다. 일부는 더 진보된 것이었고 통제된 환경에서 더 좋은 성능을 보였지만, 가장 큰 향상은 모델 업그레이드에서 온 것이 아니라 다음에서 왔습니다:
- 더 나은 데이터 선택
- 더 일관된 라벨링
- 안정적인 평가
여러 경우에, 더 좋은 데이터로 학습된 간단한 모델이 모든 데이터를 사용한 복잡한 모델보다 뛰어난 성능을 보였습니다.
실제 데이터의 다양성

실제로 프로덕션 모델을 더 좋게 만드는 요소
돌아보면, 개선은 종종 간과되는 여러 결정들의 조합에서 비롯되었습니다:
- 평가를 일관되게 유지하기
- 데이터 양보다 품질에 집중하기
- 모델을 실제 입력과 정렬하기
- 단일 지표 최적화가 아니라 여러 지표를 균형 있게 다루기
이러한 실천들이 단일한 아키텍처 혁신보다 장기적인 성공을 이끄는 진정한 동력이었습니다.
Maximizing One 광고
이것들은 특별히 새롭지는 않습니다.
하지만 이들을 함께 사용하면 시스템이 훨씬 더 신뢰할 수 있게 되었습니다.
최종 생각
실제 사용자 데이터(특히 모바일 기기에서 수집된)를 기반으로 모델을 구축하고 있다면, 가장 큰 과제는 학습 자체가 아닙니다.
중요한 것은 개선 사항이 실제로 효과가 있는지를 확인하는 것입니다.
하나의 열린 질문
우리가 아직도 활발히 고민하고 있는 한 가지는 최적의 균형이 어디에 있는가 하는 것입니다.
- 시스템이 가능한 한 많이 감지하는 것을 우선시해야 할까요?
- 아니면 사용자에게 신뢰받는 것을 우선시해야 할까요?
우리 경험에 따르면, 이 두 목표는 항상 일치하지 않습니다.
전체 분석 및 데모
데이터셋, 검증 설정, 모델 진화(차트와 지표 포함)에 대한 전체 분석을 여기에서 공개했습니다:
👉
실제 피부 분석 앱에서 이 기능이 어떻게 작동하는지 보고 싶다면, 여기에서도 데모를 확인할 수 있습니다:
👉
