|
|
||
|---|---|---|
| .. | ||
| images | ||
| scripts | ||
| tests | ||
| README.md | ||
| generate_test_images.py | ||
| load_test_lama.py | ||
| rembg_test.py | ||
| test_image.png | ||
| test_mask.png | ||
README.md
🧪 iopaint 호환성 API 테스트 가이드
이 디렉토리는 인페인팅 서버의 API 엔드포인트들이 iopaint와 호환되는지 테스트하기 위한 도구들을 포함합니다.
🎯 목표
클라이언트 코드 수정 없이 기존 iopaint와 연동할 수 있도록 입출력 형식을 완벽하게 호환시킵니다.
📁 디렉토리 구조
tests/
├── images/ # 테스트용 샘플 이미지들
├── results/ # 테스트 결과 이미지들
├── scripts/ # 테스트 스크립트들
└── README.md # 이 파일
🖼️ 테스트 이미지
생성된 테스트 이미지들
-
기본 테스트 이미지
test_image_256.png/test_mask_256.png(256x256)test_image_512.png/test_mask_512.png(512x512)test_image_1024.png/large_mask_1024.png(1024x1024)
-
복잡한 테스트 이미지
complex_image_512.png/complex_mask_512.png(512x512)- 체크무늬 패턴과 여러 도형들이 포함된 복잡한 이미지
테스트 이미지 생성
cd tests/scripts
python generate_test_images.py
🚀 iopaint 호환성 API 테스트
전체 테스트 실행
cd tests/scripts
python test_api.py
단일 테스트 실행
# 헬스 체크만
python test_api.py --single health
# 서버 설정 정보만
python test_api.py --single config
# 인페인팅 테스트만
python test_api.py --single inpaint
# 배경 제거 테스트만
python test_api.py --single rembg
# 플러그인 테스트만
python test_api.py --single plugin
다른 서버 URL로 테스트
python test_api.py --url http://192.168.1.100:8008
📊 iopaint 호환성 테스트 항목
1. 헬스 체크 (/health)
- 서버 상태 확인
- 가동 시간 확인
2. 서버 설정 정보 (/api/v1/server-config)
- 시스템 정보 (Jetson Xavier / x86_64)
- 사용 가능한 모델 목록
- 최대 파일 크기 제한
3. 샘플러 목록 (/api/v1/samplers)
- Stable Diffusion 샘플러 목록 확인
4. 인페인팅 API (/api/v1/inpaint)
- iopaint 호환: base64 인코딩된 이미지/마스크
- Simple LAMA 모델을 사용한 인페인팅
- 다양한 크기의 이미지 테스트
- 프롬프트, 시드, 설정값 테스트
5. 배경 제거 API (/api/v1/remove_bg)
- iopaint 호환: base64 인코딩된 이미지
- REMBG 모델을 사용한 배경 제거
- 결과 이미지와 마스크 반환
6. 플러그인 API (/api/v1/run_plugin_gen_image)
- iopaint 호환: base64 인코딩된 이미지
- 플러그인을 통한 이미지 생성
- REMBG 플러그인 테스트
🔧 테스트 전 준비사항
1. 서버 실행
# 개발 모드로 실행
python main.py --dev
# 또는 프로덕션 모드로 실행
python main.py --host 0.0.0.0 --port 8008 --workers 1
2. 의존성 설치
pip install -r requirements.txt
3. 테스트 이미지 생성
cd tests/scripts
python generate_test_images.py
📈 iopaint 호환성 테스트 결과
성공적인 테스트 결과
🧪 iopaint 호환성 API 테스트 시작
============================================================
🏥 헬스 체크 테스트...
✅ 서버 상태: healthy
📊 가동 시간: 15.23초
⚙️ 서버 설정 정보 테스트...
✅ 서버 설정 조회 성공
🖥️ 시스템: Jetson Xavier
🎮 디바이스: cuda
📁 최대 파일 크기: 25MB
🎯 사용 가능한 모델: 3개
🎨 인페인팅 테스트 (test_image_512.png + test_mask_512.png)...
✅ 인페인팅 성공!
⏱️ 처리 시간: 2.45초
🎲 사용된 시드: 42
💾 결과 이미지 저장: inpaint_result_test_image_512.png
============================================================
📊 iopaint 호환성 테스트 결과 요약
============================================================
헬스 체크 ✅ PASS
서버 설정 정보 ✅ PASS
샘플러 목록 ✅ PASS
인페인팅 (256x256) ✅ PASS
인페인팅 (512x512) ✅ PASS
배경 제거 ✅ PASS
플러그인 이미지 생성 ✅ PASS
============================================================
전체: 7개, 성공: 7개, 실패: 0개
🎉 모든 iopaint 호환성 테스트가 성공했습니다!
클라이언트 코드 수정 없이 기존 iopaint와 연동 가능합니다!
실패한 테스트 결과
❌ 인페인팅 실패: 500
📝 에러 메시지: 워커 매니저가 초기화되지 않았습니다
🎯 iopaint 호환성 핵심 포인트
1. 입출력 형식
- 이미지: base64로 인코딩된 문자열
- 마스크: base64로 인코딩된 문자열
- 응답: JSON 형태의 base64 이미지
2. API 엔드포인트
/api/v1/inpaint- 인페인팅/api/v1/remove_bg- 배경 제거/api/v1/run_plugin_gen_image- 플러그인 이미지 생성
3. 요청 파라미터
image: base64 인코딩된 원본 이미지mask: base64 인코딩된 마스크 (인페인팅용)model_name: 사용할 모델명- 기타 Stable Diffusion 관련 파라미터들
🐛 문제 해결
1. 연결 실패
- 서버가 실행 중인지 확인
- 포트 번호가 올바른지 확인
- 방화벽 설정 확인
2. 이미지 처리 실패
- GPU 메모리 부족 확인
- 모델 파일이 올바른 위치에 있는지 확인
- 로그 파일에서 상세 에러 확인
3. 타임아웃 에러
timeout값을 늘려서 재시도- 서버 성능 확인
- 네트워크 상태 확인
📝 로그 확인
서버 로그
tail -f logs/main_server.log
모니터링 로그
tail -f logs/monitoring.log
🔄 지속적 iopaint 호환성 테스트
자동 테스트 스크립트
#!/bin/bash
while true; do
echo "🔄 iopaint 호환성 테스트 실행 중... $(date)"
python test_api.py
echo "⏳ 60초 대기 중..."
sleep 60
done
이 스크립트를 사용하여 서버의 iopaint 호환성을 지속적으로 모니터링할 수 있습니다.
🎉 성공 시 확인사항
모든 테스트가 성공하면:
- ✅ iopaint 클라이언트와 완벽 호환
- ✅ 클라이언트 코드 수정 불필요
- ✅ 기존 iopaint 워크플로우 그대로 사용 가능
- ✅ Jetson Xavier에서 최적화된 성능