Skip to content
@tech4good-One-T

preveil

Preveil

사진을 공유하기 전, 딥페이크와 개인정보 노출 위험을 먼저 가립니다.

Preveil은 사진 속 얼굴·신원·차량·연락처·주거지·위치정보를 분석하고, 사용자가 선택한 민감 영역을 보호한 뒤 안전하게 공유할 수 있는 결과 이미지를 만드는 AI 기반 이미지 프라이버시 보호 서비스입니다.

단순한 블러 처리에 그치지 않고 얼굴 딥페이크 방어, EXIF 메타데이터 검사, 프롬프트 기반 이미지 편집 후 개인정보 보호 재적용까지 하나의 흐름으로 제공합니다.

Preveil 서비스 소개

서비스 화면

Preveil 홈 화면

사진 보호 시작
사진 선택 화면
사진 선택
다중 이미지 업로드
사진 안전점검 결과 화면
안전점검
사진별 위험 요소 확인
개인정보 보호 옵션 화면
보호 옵션
민감정보별 처리 선택
이미지 보호 처리 화면
보호 처리
AI 학습 방지 및 식별정보 보호
이미지 보호 결과 화면
처리 결과
Before·After 결과 확인
SNS 게시 준비 화면
게시 준비
프롬프트와 사진 확인
SNS 게시 결과 화면
SNS 게시
보호된 결과 공유
보호 처리 기록 화면
처리 기록
보호 옵션과 결과 관리

보호 모델 업데이트

새 보호 모델 알림 화면
업데이트 알림
새 딥페이크 모델 대응 안내
기존 게시물 재보호 화면
기존 게시물 재보호
새 보호 모델로 선택 업데이트

서비스 저장소

아키텍처

Preveil 시스템 아키텍처

React Native App
    -> FastAPI Backend
    -> PostgreSQL + RabbitMQ + Celery Worker
    -> FastAPI AI Server
    -> Gemini + OpenCV + FaceShield
    -> AWS S3

1. 서비스 목표

사진을 SNS나 웹에 게시하기 전에 사용자가 미처 발견하지 못한 개인정보 노출 위험을 알려주고, 필요한 정보만 선택적으로 보호해 원본의 활용성과 프라이버시를 함께 지키는 것을 목표로 합니다.

  • 얼굴 이미지의 딥페이크 학습·합성 악용 위험 완화
  • 신분증, 이름, 연락처, 차량 번호판 등 시각적 개인정보 탐지
  • 주소, 건물명, 촬영 위치 등 생활 반경을 유추할 수 있는 단서 보호
  • EXIF GPS 메타데이터 탐지 및 제거
  • 편집 결과에도 개인정보 보호 정책을 다시 적용해 보호 우회 방지

2. 핵심 기능

기능 1. 사진 안전점검

  • 이미지 속 개인정보 노출 요소와 좌표 분석
  • 얼굴, 신원, 차량, 연락처, 주거지, 건물, 위치정보별 위험도 제공
  • 이미지 픽셀 분석과 별도로 EXIF GPS 메타데이터 직접 검사

기능 2. 선택형 개인정보 보호

  • 사용자가 선택한 개인정보 영역 블러 처리
  • 건물명, 차량 번호판, 이름·명찰 등 항목별 보호 옵션 제공
  • 보호 결과를 메타데이터가 제거된 PNG로 생성

기능 3. 얼굴 딥페이크 방어

  • 얼굴이 탐지되면 선택 여부와 관계없이 FaceShield 보호 적용
  • 보호 처리 실패 시 보호되지 않은 결과를 반환하지 않는 fail-closed 정책

기능 4. 프롬프트 기반 이미지 편집

  • 보호 결과를 기준으로 사용자 요청에 따른 이미지 후처리
  • LangChain을 이용한 편집 요청 구조화와 정책 검증
  • 편집된 이미지를 다시 분석하고 개인정보 마스킹과 얼굴 보호 재적용
  • 원본을 덮어쓰지 않는 버전형 결과 관리

기능 5. 처리 기록 및 결과 관리

  • 비동기 이미지 처리 상태 조회
  • 처리·편집 결과의 버전과 부모 결과 추적
  • 결과 이미지 저장 및 히스토리 확인

3. 이미지 보호 흐름

  1. 사용자가 앱에서 사진을 선택합니다.
  2. Backend가 원본을 S3에 저장하고 AI Server에 분석 작업을 요청합니다.
  3. AI Server가 이미지의 위험 요소, 좌표, EXIF GPS 여부를 분석합니다.
  4. 사용자가 보호할 민감 영역과 처리 옵션을 선택합니다.
  5. 선택 영역에는 OpenCV 블러를, 탐지된 얼굴에는 FaceShield 보호를 적용합니다.
  6. 결과 이미지의 메타데이터를 제거하고 S3에 저장합니다.
  7. 추가 편집이 요청되면 편집 결과를 다시 분석해 보호 파이프라인을 재적용합니다.
  8. Backend가 각 결과를 버전별로 관리하고 앱에 안전한 접근 URL을 제공합니다.

4. 시스템 역할 분리

4-1. React Native Frontend

  • 사진 선택과 다중 업로드
  • 사진별 위험 분석 결과 확인
  • 개인정보 보호 옵션 선택
  • 처리 진행 상태, 결과, 히스토리 제공
  • 라이트·다크 테마 지원

4-2. FastAPI Backend

  • 모바일 앱용 REST API 제공
  • S3 원본·결과 객체 및 Presigned URL 관리
  • PostgreSQL 기반 분석 작업·처리 작업·결과 버전 관리
  • RabbitMQ와 Celery를 이용한 비동기 AI 작업 처리
  • 장시간 정체된 작업을 정리하는 타임아웃 스위퍼 운영

4-3. FastAPI AI Server

  • Gemini 기반 이미지 위험 요소 분석
  • 이미지 형식 검증, EXIF 회전 보정, GPS 메타데이터 검사
  • OpenCV 기반 선택 영역 블러 처리
  • FaceShield 기반 얼굴 딥페이크 방어
  • LangChain과 이미지 생성 모델을 이용한 프롬프트 편집
  • 편집 결과 개인정보 재분석 및 보호 재적용

5. 위험정보 분류

분류 보호 대상 예시
얼굴·딥페이크 사람 얼굴, 얼굴 도용 및 합성 위험
신원정보 신분증, 여권, 학생증, 이름, 생년월일, 명찰
차량정보 차량 번호판, 주차 스티커, 차량 연락처
연락처·계정 전화번호, 이메일, SNS 아이디, 명함
주거정보 도로명 주소, 지번 주소, 아파트 동·호수
건물정보 아파트 브랜드, 건물명, 학교명, 회사명
위치정보 EXIF GPS, 촬영 장소, 여행·일정 단서

6. 기술 스택

영역 기술
Mobile React Native, Expo, TypeScript, React Navigation
Backend FastAPI, SQLAlchemy, Alembic, Celery
AI Server FastAPI, Gemini, LangChain, OpenCV, Pillow, FaceShield
Data & Queue PostgreSQL, RabbitMQ
Storage AWS S3, Presigned URL
Infrastructure Docker, Docker Compose, AWS EC2, AWS SSM
CI/CD GitHub Actions, GitHub Container Registry

7. 실행 및 확인 방법

각 저장소를 내려받은 뒤 아래 명령으로 실행하거나 구현 상태를 확인할 수 있습니다.

7-1. Frontend

요구사항: Node.js, npm

git clone https://github.com/tech4good-One-T/frontend.git
cd frontend
npm install
npm run start
  • npm run ios: iOS 시뮬레이터 실행
  • npm run android: Android 에뮬레이터 실행
  • npm run web: 웹 환경에서 확인
  • npm run typecheck: TypeScript 정적 검사

7-2. Backend

요구사항: Python 3.12, uv, Docker, Docker Compose

git clone https://github.com/tech4good-One-T/backend.git
cd backend
uv sync --dev
uv run pytest

외부 서비스 없이 전체 흐름을 확인하려면 MinIO와 Mock AI Server가 포함된 로컬 스택을 실행합니다.

cp .env.example .env
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d --build
  • Backend API: http://localhost:8000
  • Swagger UI: http://localhost:8000/docs
  • Health Check: http://localhost:8000/api/v1/health

7-3. AI Server

요구사항: Python 3.12, uv

git clone https://github.com/tech4good-One-T/aiserver.git
cd aiserver
uv sync --dev
cp .env.example .env
uv run uvicorn app.main:app --env-file .env --reload --host 0.0.0.0 --port 8000
  • Swagger UI: http://localhost:8000/docs
  • Health Check: http://localhost:8000/health
  • 테스트: uv run pytest
  • 린트·포맷 검사: uv run ruff check . && uv run ruff format --check .

Gemini 연동에는 API 키와 스토리지 호스트 설정이 필요합니다. 얼굴 보호 전체 기능은 FaceShield, NVIDIA CUDA GPU, 별도 Python 3.8 conda 환경이 필요합니다.


8. 개인정보 보호 원칙

  • AI Server는 입력 이미지와 탐지한 개인정보 원문을 영구 저장하지 않습니다.
  • Presigned URL, 이미지 내용, EXIF/GPS 값, 편집 프롬프트를 로그에 남기지 않습니다.
  • HTTPS와 허용된 스토리지 호스트·버킷·객체 경로만 사용합니다.
  • 분석 이미지와 처리 이미지의 SHA-256을 비교해 중간 이미지 교체를 방지합니다.
  • 개인정보 보호를 해제하거나 복원하려는 편집 요청은 모델 호출 전에 거부합니다.
  • 얼굴 보호 또는 편집 후 재보호에 실패하면 안전하지 않은 결과를 업로드하지 않습니다.

9. 운영 및 배포

  • main 브랜치 push와 Pull Request에서 린트·포맷·테스트를 자동 검증합니다.
  • 애플리케이션 이미지는 GitHub Container Registry에 버전별로 게시합니다.
  • GitHub OIDC와 AWS SSM을 이용해 장기 AWS 자격 증명 없이 EC2에 배포합니다.
  • Backend와 AI Server는 독립적으로 배포해 각 서비스의 확장성과 장애 격리를 확보합니다.

10. 팀원별 역할

성명 역할
김영운 팀장
민륜기 개발(AI)
박민정 개발(AI)
박수빈 기획
우혜성 개발(백엔드)
이아형 기획
정승윤 개발(프론트)
천정민 디자인(장표)

Popular repositories Loading

  1. aiserver aiserver Public

    [tech4good] 하나금융+sktflyai 해커톤

    Python 1

  2. .github .github Public

  3. backend backend Public

    Python

  4. frontend frontend Public

    TypeScript 1

Repositories

Showing 4 of 4 repositories

Top languages

Loading…

Most used topics

Loading…