빠른 판정
| 질문 | 바로 확인할 항목 | 결과 |
|---|---|---|
| 모델 파일만 바꾸면 되나? | 출력 클래스 5종 유지 여부 | 유지되면 가능성이 높음 |
| URL만 바꾸면 되나? | model.json 공개 경로, weight shard 경로 | 경로가 맞아야 함 |
graph가 필요한가? | 모델이 GraphModel인지 확인 | 맞으면 필요 |
size도 필요한가? | 입력이 224 외 크기인지 확인 | 모델에 따라 필요 |
| UI 수정도 필요한가? | 클래스 체계/threshold 변경 여부 | 다르면 필요 |
모델별 기본 호환성
| 모델 | load 방식 | 권장 type | 입력 크기 | 드롭인 교체성 | 메모 |
|---|---|---|---|---|---|
| MobileNetV2 | 이름 또는 URL | null | 224 | 높음 | 가장 가벼운 축 |
| MobileNetV2Mid | 이름 또는 URL | graph | 문서상 mid graph 취급 | 매우 높음 | 9.1.0 기본값 |
| InceptionV3 | 이름 또는 URL | null | 299 | 보통 | 더 무거울 수 있음 |
| 커스텀 LayersModel | URL | null | 모델별 상이 | 낮음~보통 | 출력 클래스 확인 필요 |
| 커스텀 GraphModel | URL | graph | 모델별 상이 | 낮음~보통 | TFJS 변환 방식 확인 필요 |
현재 9.1.0 코드가 기대하는 출력
현재 T2Editor 9.1.0은 예측 결과 배열에서 className 값을 소문자로 읽고 아래 키를 찾습니다.
| 키 | 용도 | 누락 시 영향 |
|---|---|---|
| porn | explicitScore 계산 | unsafe 판정 약화 |
| hentai | explicitScore 계산 | unsafe 판정 약화 |
| sexy | suspect/unsafe 보조 | suspect 판정 약화 |
| neutral | safeScore 계산 | safe 판정 약화 |
| drawing | safeScore 계산 | 드로잉 안전 판정 약화 |
노트
즉, 모델이 성공적으로 로드되더라도 className 체계가 다르면 현재 UI에 맞는 의미로 결과를 해석할 수 없습니다.
호환되지 않는 대표 사례
- 클래스 이름이 숫자 인덱스만 있는 모델
safe/unsafe2분류만 반환하는 모델- 멀티라벨이지만
Porn/Hentai/Sexy/Neutral/Drawing체계가 아닌 모델 - 이미지 전처리를 별도로 요구하는 모델
- 입력 크기와 색공간이 크게 다른 모델
운영 체크리스트
주의
다음 네 항목을 모두 만족하기 전에는 운영 반영을 권장하지 않습니다.
model.json과.bin파일이 모두 HTTP 200으로 열림type설정이 실제 모델 형식과 맞음- 클래스 이름이 현재 판정 코드와 맞음
- 샘플 이미지 세트로 threshold를 점검함
샘플 테스트 최소 세트
- 일반 인물 사진
- 풍경/사물 사진
- 애니/일러스트
- 경계 사례
- 실제 차단 대상 사례
차기 개선 후보
T2_NSFW_BROWSER_MODEL_SIZE전역 설정 추가class map설정 추가- 모델별 threshold preset 추가
- IndexedDB 캐시 정책 선택 기능 추가
수정 요약
- 커스텀 모델 교체 시의 호환 기준을 표 중심으로 정리했습니다.