inpaintServer/tests
E5-3060 0479a986ab Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
..
images Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
rembg_test 대시보드 api 노출 수정 2025-09-30 14:18:59 +00:00
sample Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
scripts 서버 포트를 8000에서 8008로 변경하고, 모니터링 포트를 8001에서 8080으로 수정하였습니다. API 문서 및 테스트 스크립트의 URL도 업데이트하였으며, 상태 JSON 파일의 요청 통계 및 응답 시간을 개선하였습니다. 로그 파일에 상태 저장 완료 메시지를 추가하였습니다. 2025-08-28 23:48:38 +09:00
tests 서버 설정 및 API 엔드포인트를 iopaint와 호환되도록 수정하였으며, 불필요한 코드 제거 및 변수 초기화를 추가하였습니다. 또한, 테스트 스크립트를 iopaint 호환성 중심으로 업데이트하였습니다. 2025-08-27 19:14:59 +09:00
README.md 서버 포트를 8000에서 8008로 변경하고, 모니터링 포트를 8001에서 8080으로 수정하였습니다. API 문서 및 테스트 스크립트의 URL도 업데이트하였으며, 상태 JSON 파일의 요청 통계 및 응답 시간을 개선하였습니다. 로그 파일에 상태 저장 완료 메시지를 추가하였습니다. 2025-08-28 23:48:38 +09:00
benchmark_parallel.py Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
generate_test_images.py 상태 JSON 파일의 워커 수를 10으로 증가시키고, 각 모델에 대한 최소 및 최대 세션 수를 설정하였습니다. API 엔드포인트를 '/api/v1/health'로 변경하고, 세션 풀 관리 로직을 개선하여 VRAM 사용량에 따라 동적으로 세션을 생성 및 제거하도록 하였습니다. 대시보드에서 세션 정보 표시 방식을 개선하였으며, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다. 2025-08-30 00:07:13 +09:00
load_test_lama.py 상태 JSON 파일의 워커 수를 10으로 증가시키고, 각 모델에 대한 최소 및 최대 세션 수를 설정하였습니다. API 엔드포인트를 '/api/v1/health'로 변경하고, 세션 풀 관리 로직을 개선하여 VRAM 사용량에 따라 동적으로 세션을 생성 및 제거하도록 하였습니다. 대시보드에서 세션 정보 표시 방식을 개선하였으며, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다. 2025-08-30 00:07:13 +09:00
rembg_test.py 세션 풀 초기화 및 모델 로딩 로직을 개선하고, CUDA 자동 감지 기능을 추가하였습니다. 상태 JSON 파일의 워커 수를 4로 업데이트하고, 로그 파일에 서버 시작 및 상태 저장 관련 메시지를 기록하였습니다. README.md에 Jetson Xavier에서의 ONNX Runtime GPU 설치 절차를 추가하였으며, 요구 사항 파일에서 numpy 버전을 1.24.4로 업데이트하였습니다. 스크립트에서 자동 설치 및 실행 기능을 개선하고, x86 시스템에 대한 설치 스크립트를 수정하였습니다. 2025-08-29 21:37:33 +09:00
stress_test.py Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
test.jpg 요구 사항 파일에 새로운 패키지(scikit-image, torchvision, huggingface-hub)를 추가하고, Jetson 관련 주석을 추가하였습니다. 상태 JSON 파일에서 워커 ID를 업데이트하고, API 요청 통계 및 성공률을 수정하였습니다. 배경 제거 API의 응답 형식을 base64로 변경하고, 관련 로직을 개선하였습니다. 설정 파일에서 REMBG 모델을 "briaai/RMBG-1.4"로 변경하였습니다. 2025-09-01 21:54:54 +09:00
test_image.png 상태 JSON 파일의 워커 수를 10으로 증가시키고, 각 모델에 대한 최소 및 최대 세션 수를 설정하였습니다. API 엔드포인트를 '/api/v1/health'로 변경하고, 세션 풀 관리 로직을 개선하여 VRAM 사용량에 따라 동적으로 세션을 생성 및 제거하도록 하였습니다. 대시보드에서 세션 정보 표시 방식을 개선하였으며, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다. 2025-08-30 00:07:13 +09:00
test_lama_result.png Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
test_mask.png 상태 JSON 파일의 워커 수를 10으로 증가시키고, 각 모델에 대한 최소 및 최대 세션 수를 설정하였습니다. API 엔드포인트를 '/api/v1/health'로 변경하고, 세션 풀 관리 로직을 개선하여 VRAM 사용량에 따라 동적으로 세션을 생성 및 제거하도록 하였습니다. 대시보드에서 세션 정보 표시 방식을 개선하였으며, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다. 2025-08-30 00:07:13 +09:00
test_monitoring.py Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
test_rembg_onnx.py 대시보드 api 노출 수정 2025-09-30 14:18:59 +00:00
test_server.py Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00
tf_check.py Refactor configuration and session management; remove unused files and update session settings. Adjusted session limits for models in .env, added GEMMA settings, and removed deprecated files including main.py, monitoring scripts, and model implementations. Updated setup scripts for LLM runtime installation. 2025-12-06 06:35:30 +09:00

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 호환성을 지속적으로 모니터링할 수 있습니다.

🎉 성공 시 확인사항

모든 테스트가 성공하면:

  1. iopaint 클라이언트와 완벽 호환
  2. 클라이언트 코드 수정 불필요
  3. 기존 iopaint 워크플로우 그대로 사용 가능
  4. Jetson Xavier에서 최적화된 성능