프로젝트

일반

사용자정보

Actions

기능 #887

진행중

검토 #881: #868 고도화: 쇼케이스 사진 기반 케이크 슬롯 판정용 이미지 비교 Lambda 검토

[#881-3] 제품 crop 생성 및 라벨링 노트북 구축

기능 #887: [#881-3] 제품 crop 생성 및 라벨링 노트북 구축

시진 노이(가) 약 13시간 전에 추가함. 약 11시간 전에 수정됨.

상태:
진행
우선순위:
보통
담당자:
시작일:
2026/07/05
완료일:
진척도:

0%

추정시간:

설명

목표

  • 실제 점포 사진에서 제품 후보 crop을 쉽게 만들고, 제품 마스터의 정확한 제품명 라벨을 붙일 수 있게 한다.

체크 항목

  • 자동 crop 후보 생성
  • crop 미리보기
  • 수동 bbox 보정
  • productName/productKey 선택
  • labelStatus 관리(confirmed/uncertain/ignore/duplicate)
  • 로컬 JSONL 저장

완료 조건

  • 라벨링 결과가 재실행 가능한 로컬 dataset으로 남는다.

시진 노이(가) 약 13시간 전에 변경 Actions #1

  • 상태을(를) 신규에서 진행(으)로 변경되었습니다.

crop/라벨링 노트북 구현을 시작했습니다. 현재 881 브랜치에 crop 후보 생성, crop 미리보기, 제품명 selector, confirmed/uncertain/ignore/duplicate 라벨 JSONL 저장/덮어쓰기 흐름을 추가했습니다.

시진 노이(가) 약 12시간 전에 변경 Actions #2

라벨링 파이프라인 보완 메모

  • full crop(T5-full 등)은 한 단 전체라 제품이 여러 개 들어갈 수 있으므로 confirmed 라벨 대상에서 제외하고, split/manual crop에 제품 1개씩 라벨링하는 정책을 노트북에 명시했습니다.
  • 수동 crop은 제품 박스 주변 맥락을 포함하도록 contextMargin(권장 0.08~0.15)을 지원합니다.
  • 수동 crop 좌표는 S3/DDB에 쓰지 않고 로컬 notebooks/output/product_training_881/labels/manual_crops.jsonl에 저장/복원합니다.
  • 라벨은 기존대로 로컬 showcase_product_labels.jsonl에 누적 저장됩니다.

시진 노이(가) 약 12시간 전에 변경 Actions #3

작전 변경 반영

  • 자동 crop 후보 생성 방식은 품질이 낮아 노트북 메인 흐름에서 제외했습니다.
  • 5번 셀을 원본 이미지 직접 박싱 방식으로 교체했습니다.
  • Jupyter에서 원본 door 이미지를 선택하고 제품 1개씩 드래그 박싱하면, 마우스를 놓는 순간 manual_crops.jsonl과 crop 이미지가 로컬에 자동 저장됩니다.
  • 6번부터는 저장된 manual crop 미리보기, 7번부터는 기존 제품명 라벨링 흐름을 그대로 사용합니다.
  • 수동 crop/라벨은 모두 로컬 notebooks/output/product_training_881 아래에만 저장하며 S3/DDB write는 없습니다.

시진 노이(가) 약 12시간 전에 변경 Actions #4

crop 해상도 기준 보완

  • 현재 저장된 일부 manual crop이 13x157, 167x28px 수준으로 확인되어 학습에 부적합한 too_small 케이스로 판단했습니다.
  • 노트북 5번 박싱 UI에 최소 crop short side 96px 제한을 추가해 너무 작은 박스는 저장하지 않도록 수정했습니다.
  • 6번 미리보기에서 cropWidth/cropHeight/resolutionStatus(good/usable_low/too_small)를 표시하도록 보완했습니다.
  • 기준: good=짧은 변 160px 이상, usable_low=96~159px, too_small=96px 미만.

시진 노이(가) 약 12시간 전에 변경 Actions #5

박싱 저장 UX 보완

  • mouse-release 자동저장이 안 되는 환경을 대비해 5번 셀에 '현재 박스 저장' 버튼을 추가했습니다.
  • 자동저장 callback은 유지하되, selector minspan을 8px로 낮추고 실제 저장 함수에서 96px 최소 해상도를 검사하도록 변경했습니다.
  • ipympl/Jupyter callback이 불안정하면 드래그 박스를 둔 상태에서 버튼 저장으로 같은 manual_crops.jsonl/crops 경로에 저장됩니다.

시진 노이(가) 약 12시간 전에 변경 Actions #6

박싱 이벤트 좌표가 0x1px로 잡히는 환경 대응

  • 원본 468x832px는 학습 crop을 만들 수 있는 크기이며, 문제는 원본 해상도보다 Matplotlib/ipympl 드래그 좌표 이벤트가 정상 전달되지 않는 쪽으로 판단했습니다.
  • 노트북에 5B 슬라이더 방식 crop 저장 셀을 추가했습니다.
  • 5B는 x/y/w/h 슬라이더로 crop을 조정하고 preview를 확인한 뒤 '슬라이더 crop 저장' 버튼으로 manual_crops.jsonl/crops에 저장합니다.
  • 드래그 자동저장이 불안정하면 5B를 권장 경로로 사용합니다.

시진 노이(가) 약 11시간 전에 변경 Actions #7

crop UI 조작성 보완

  • 슬라이더만으로 crop 맞추기 어렵다는 피드백을 반영해 5번 셀에 박스 이동/크기 조절 버튼을 추가했습니다.
  • 추가 버튼: 왼쪽/오른쪽/위/아래, 가로-/가로+, 세로-/세로+, step 조절.
  • 마우스 드래그는 계속 사용하지 않고, 버튼과 슬라이더로 노란 박스를 맞춘 뒤 crop 저장합니다.

시진 노이(가) 약 11시간 전에 변경 Actions #8

다음 작업 메모

  • 현재 버튼/슬라이더 crop UI는 동작하지만 작업량이 많습니다.
  • 다음 세션 우선순위는 crop 고도화: 마우스로 박스를 직접 그리고/이동하고/크기 조절할 수 있는 안정적인 UI 개선입니다.
  • 기존 Matplotlib RectangleSelector는 좌표가 0x1px로 읽히는 문제가 있었으므로 그대로 복원하지 말고, HTML/canvas 또는 다른 widget 방식으로 검토합니다.
  • crop/label 저장은 계속 로컬 notebooks/output/product_training_881 아래에만 저장하고 S3/DDB write는 하지 않습니다.
Actions

내보내기 PDF Atom