inpaintServer/tests
AGX dc137030b4 요구 사항 파일에 새로운 패키지(scikit-image, torchvision, huggingface-hub)를 추가하고, Jetson 관련 주석을 추가하였습니다. 상태 JSON 파일에서 워커 ID를 업데이트하고, API 요청 통계 및 성공률을 수정하였습니다. 배경 제거 API의 응답 형식을 base64로 변경하고, 관련 로직을 개선하였습니다. 설정 파일에서 REMBG 모델을 "briaai/RMBG-1.4"로 변경하였습니다. 2025-09-01 21:54:54 +09:00
..
images first commit 2025-08-27 13:41:46 +09:00
rembg_test 요구 사항 파일에 새로운 패키지(scikit-image, torchvision, huggingface-hub)를 추가하고, Jetson 관련 주석을 추가하였습니다. 상태 JSON 파일에서 워커 ID를 업데이트하고, API 요청 통계 및 성공률을 수정하였습니다. 배경 제거 API의 응답 형식을 base64로 변경하고, 관련 로직을 개선하였습니다. 설정 파일에서 REMBG 모델을 "briaai/RMBG-1.4"로 변경하였습니다. 2025-09-01 21:54:54 +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
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
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_mask.png 상태 JSON 파일의 워커 수를 10으로 증가시키고, 각 모델에 대한 최소 및 최대 세션 수를 설정하였습니다. API 엔드포인트를 '/api/v1/health'로 변경하고, 세션 풀 관리 로직을 개선하여 VRAM 사용량에 따라 동적으로 세션을 생성 및 제거하도록 하였습니다. 대시보드에서 세션 정보 표시 방식을 개선하였으며, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다. 2025-08-30 00:07:13 +09:00
test_rembg_onnx.py 요구 사항 파일에 새로운 패키지(scikit-image, torchvision, huggingface-hub)를 추가하고, Jetson 관련 주석을 추가하였습니다. 상태 JSON 파일에서 워커 ID를 업데이트하고, API 요청 통계 및 성공률을 수정하였습니다. 배경 제거 API의 응답 형식을 base64로 변경하고, 관련 로직을 개선하였습니다. 설정 파일에서 REMBG 모델을 "briaai/RMBG-1.4"로 변경하였습니다. 2025-09-01 21:54:54 +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에서 최적화된 성능