이 모듈의 도달 목표

최종 AI 제품 프로젝트

선택한 분류 모델에 입력 검증, 결과 설명, 한계 안내와 재현 문서를 더해 다른 사람이 사용할 수 있는 제품 패키지로 완성합니다.

결과물 · AI 분류 제품 패키지
약 10~14시간
  • 모델 코드와 사용자 제품의 차이를 설명한다
  • 경로별 사용자 입력을 검증하고 오류를 안내한다
  • 예측 라벨·거리·검토 상태를 과장 없이 설명한다
  • 제품 매니페스트와 모델 카드로 목적·재현 방법·한계를 문서화한다
01

AI 제품은 모델 계산보다 더 넓다

모델은 입력을 예측으로 바꾸는 계산 부분입니다. 제품이 되려면 누가 어떤 문제에 쓰는지, 어떤 입력을 받는지, 잘못된 입력을 어떻게 막는지, 결과와 한계를 어떻게 설명하는지까지 포함해야 합니다.

일상에서 보면엔진만으로 자동차가 되지 않고 운전대·브레이크·계기판·설명서가 함께 있어야 하는 것과 같습니다.
product_parts = ['입력 검증', '모델 예측', '결과 설명', '한계 안내', '재현 문서']
print(len(product_parts))
실행 결과
5
한 줄씩 보기
  1. 제품에 필요한 다섯 부분을 나열합니다.
  2. 예측 외의 안전·설명 요소를 확인합니다.
  3. 모든 부분이 사용자 경험을 구성합니다.
직접 값 바꾸기각 부분이 빠졌을 때 사용자에게 생길 문제를 하나씩 적어 보세요.
흔한 실수정확한 예측 한 번이 나왔다고 다른 사람이 안전하게 사용할 수 있는 제품이 완성된 것은 아닙니다.

짧은 확인모델 코드에 입력 검증과 설명 문서가 필요한 이유는 무엇일까요?

02

입력 검증은 모델보다 먼저 실행한다

빈 텍스트나 숫자가 아닌 픽셀, 0~255 범위를 벗어난 값은 특징 계산 전에 막아야 합니다. 내부 오류 메시지를 그대로 보여 주기보다 사용자가 무엇을 고쳐야 하는지 구체적인 안내를 반환합니다.

일상에서 보면공장 기계에 재료를 넣기 전에 크기와 위험물을 검사해 고장과 사고를 막는 것과 같습니다.
pixels = [0, 128, 300]
valid = bool(pixels) and all(0 <= value <= 255 for value in pixels)
print(valid)
실행 결과
False
한 줄씩 보기
  1. 픽셀 입력을 준비합니다.
  2. 값이 있고 모두 허용 범위인지 검사합니다.
  3. 300 때문에 잘못된 입력으로 판정합니다.
직접 값 바꾸기문자열 'abc'가 픽셀 입력에 섞였을 때 어떤 안내를 보여 줄지 작성하세요.
흔한 실수검증 전에 float 변환과 모델 계산을 시작하면 사용자는 원인을 알기 어려운 내부 오류만 보게 됩니다.

짧은 확인이미지 입력에서 확인해야 할 두 가지 조건은 무엇일까요?

03

거리와 확률을 혼동하지 않고 결과를 설명한다

최근접 중심까지의 유클리드 거리는 확률이 아니므로 1-distance를 신뢰도 퍼센트로 표시하면 안 됩니다. 미리 정한 검토 기준과 비교해 근접 사례 또는 검토 필요로 안내하고, 어느 중심과 가장 가까웠는지 설명합니다.

일상에서 보면집에서 병원까지 2km라는 거리를 치료 성공 확률 98%라고 바꿀 수 없는 것과 같습니다.
distance, threshold = 0.5, 0.2
status = '근접 사례' if distance <= threshold else '검토 필요'
print(status)
실행 결과
검토 필요
한 줄씩 보기
  1. 예측 거리와 검토 기준을 준비합니다.
  2. 거리가 기준 이하인지 비교합니다.
  3. 먼 사례는 사람이 검토하도록 안내합니다.
직접 값 바꾸기threshold를 0.6으로 바꾸면 상태가 어떻게 달라지는지 확인하세요.
흔한 실수거리의 범위는 특징 크기에 따라 1보다 클 수도 있으므로 그대로 퍼센트화할 수 없습니다.

짧은 확인예측 거리 대신 확률처럼 보이는 숫자를 만들면 왜 위험할까요?

04

모델 카드는 목적·평가·한계를 사용자에게 공개한다

모델 카드에는 제품 목적, 지원 경로와 라벨, 평가 기준, 알려진 한계와 적절하지 않은 사용을 적습니다. 단순 특징 분류기는 텍스트 문맥이나 이미지 모양을 직접 이해하지 못한다는 사실을 숨기지 않아야 합니다.

일상에서 보면식품 포장에 재료와 알레르기 정보, 보관 방법을 표시해 사용자가 판단하게 하는 것과 같습니다.
card = '# FeaturePath\n- 경로: text\n- 한계: 문맥을 이해하지 못함'
print(card)
실행 결과
# FeaturePath
- 경로: text
- 한계: 문맥을 이해하지 못함
한 줄씩 보기
  1. 제품 이름을 제목으로 적습니다.
  2. 지원 데이터 경로를 밝힙니다.
  3. 알려진 한계를 구체적으로 기록합니다.
직접 값 바꾸기이미지 밝기 분류기의 부적절한 사용 사례를 한 줄 추가하세요.
흔한 실수한계를 '정확하지 않을 수 있음'처럼 모호하게 쓰면 사용자가 어떤 실패를 예상해야 하는지 알 수 없습니다.

짧은 확인이번 텍스트 특징 분류기가 이해하지 못하는 핵심 정보는 무엇일까요?

05

제품 패키지는 실행 정보와 문서를 함께 보존한다

제품 매니페스트는 이름·버전·경로·라벨·특징 수·검토 기준을 기계가 읽는 JSON으로 보존합니다. 모델 카드는 사람이 읽는 Markdown으로 목적과 한계를 설명합니다. 두 파일을 예측 코드와 함께 두고 다시 읽어 같은 내용인지 확인해야 다른 사람이 재현할 수 있습니다.

일상에서 보면조립 부품 목록은 기계용 표로, 사용 설명서는 사람용 문서로 함께 포장하는 것과 같습니다.
manifest = {'name': 'FeaturePath', 'version': 1, 'path': 'text'}
required = {'name', 'version', 'path'}
print(required.issubset(manifest))
실행 결과
True
한 줄씩 보기
  1. 기계가 읽을 제품 정보를 만듭니다.
  2. 필수 키 집합을 정합니다.
  3. 매니페스트에 모두 있는지 확인합니다.
직접 값 바꾸기labels와 threshold 키를 추가하고 필수 키 검사에도 반영하세요.
흔한 실수코드 파일 하나만 전달하면 모델 목적, 입력 규칙과 검토 기준을 잃기 쉽습니다.

짧은 확인매니페스트와 모델 카드는 각각 누구를 위한 문서일까요?

예측을 사용자 결과로 바꾸기

  1. 모델 출력과 사용자 안내를 구분합니다.
  2. 검토 기준을 명시적으로 받습니다.
  3. 근접 사례와 검토 필요를 나눕니다.
  4. 다른 거리에서도 안내가 일관적인지 확인합니다.
def format_result(label, distance, threshold):
    status = '근접 사례' if distance <= threshold else '검토 필요'
    return {'label': label, 'distance': distance, 'status': status}

label = input()
distance, threshold = map(float, input().split())
result = format_result(label, distance, threshold)
print(f"예측: {result['label']}")
print(f"거리: {result['distance']:.4f}")
print(f"결과 안내: {result['status']}")

핵심을 확인해 볼까요?

5문항 중 4문항 이상 정답이면 완료됩니다. 오답 후에도 다시 제출할 수 있습니다.

1모델을 제품으로 만들 때 추가로 필요한 것은?
2잘못된 입력을 검사할 시점은?
3유클리드 거리 0.2를 신뢰도 80%로 표시해도 되는가?
4모델 카드에 반드시 밝혀야 할 것은?
5product_manifest.json의 역할은?