AI빅데이터소프트웨어공학과한국폴리텍대학 서울강서캠퍼스 입학 일정 확인 ↗

졸업작품

ArtlensAI

ArtlensAI · 졸업작품 시연영상 · 2026-10-16. 작품 설명 ArtLensAI는 AI 기반 이미지 스타일 분석 및 작가 탐색 플랫폼입니다. 한국폴리텍대학 서울강서캠퍼스 빅데이터소프트웨어공학과 학생 작품입니다.

구분
졸업작품
게시일

PROJECT NOTES

작품을 더 자세히
살펴보세요.

작품 설명
ArtLensAI는 AI 기반 이미지 스타일 분석 및 작가 탐색 플랫폼입니다.

사용자는 이미지를 업로드하여 AI 분석을 요청할 수 있으며, 시스템은 업로드된 이미지를 기반으로 화풍, 색감, 구도, 분위기 등의 스타일 특징을 분석합니다. 분석 과정에서는 OpenAI의 CLIP(ViT-B/32) 모델을 활용하여 이미지 임베딩(Vector Embedding)을 생성하고, 사전에 구축한 작가 데이터셋의 임베딩과 코사인 유사도(Cosine Similarity)를 계산하여 유사한 스타일의 작가를 추천합니다.

작가 데이터는 Safebooru API를 활용하여 수집하였으며, 각 작가별 이미지 데이터에 대해 임베딩을 생성하여 데이터베이스에 저장하였습니다. 사용자가 이미지를 업로드하면 생성된 임베딩과 저장된 작가 임베딩을 비교하여 유사도가 높은 작가를 선별하고, AI 분석 결과와 함께 추천 결과를 제공합니다.

또한 이미지 스타일 분석 결과를 기반으로 스타일 태그를 생성하고, 색상, 조명, 구도, 분위기 등의 요소를 카테고리별로 분류하여 시각적으로 제공합니다. 사용자는 분석 결과 페이지에서 주요 스타일 태그와 색상 팔레트를 확인할 수 있으며, AI가 생성한 분석 리포트를 통해 이미지의 특징을 상세하게 파악할 수 있습니다.

AI 분석 비용을 관리하기 위해 사용자별 일일 분석 횟수 제한 기능을 구현하였습니다. 업로드 시 이미지의 SHA-256 해시를 계산해 두고, 같은 사용자가 같은 이미지를 다시 분석하면 AI 서버를 호출하지 않고 이전 분석 결과를 즉시 재사용하며 이때는 분석 횟수도 차감하지 않습니다. 새로운 분석은 Redis 카운터로 1인당 하루 20회까지 허용하고 자정에 자동으로 초기화되며, 한도를 넘으면 안내 메시지와 함께 요청을 제한합니다. 분석 화면에서는 "오늘 N/20회 분석 가능"처럼 남은 횟수를 확인할 수 있습니다.

작가 탐색 기능에서는 등록된 작가 목록을 조회하고 작가별 대표 작품과 스타일 특징을 확인할 수 있습니다. 또한 T-SNE 차원 축소 기법을 활용하여 고차원 임베딩 데이터를 2차원 공간에 시각화한 스타일 맵을 제공하며, 사용자는 이를 통해 작가 간 스타일 유사도와 위치 관계를 직관적으로 탐색할 수 있습니다.

작가 검색은 Elasticsearch 기반으로 구현하였습니다. 작가별 스타일 프로필을 색인하여 스타일, 색감, 조명, 구도, 분위기 태그를 여러 개 조합한 조건 검색을 빠르게 처리하며, 작가 이름 입력 시 자동완성 기능을 제공합니다.

작가 찜(좋아요) 기능을 통해 사용자는 마음에 드는 작가를 저장하고 '찜한 작가' 탭에서 모아 볼 수 있으며, 스타일 맵에서도 찜한 작가의 위치를 별도로 표시합니다. 찜한 작가들의 임베딩 평균으로 사용자별 취향 벡터를 계산하고, PostgreSQL의 pgvector 확장을 이용해 코사인 거리 기준으로 가장 가까운 작가를 '나를 위한 추천' 탭에 제공합니다. 추천 작가마다 "OO와 비슷해요 · 98%"처럼 어떤 찜한 작가와 비슷한지와 유사도를 함께 보여주어 추천 근거를 확인할 수 있습니다. 찜한 작가가 없는 사용자에게는 인기 작가를 대신 추천하며, 추천 결과는 Redis에 캐싱하고 찜이 변경되면 DB 반영이 끝난 직후 캐시를 갱신하여 최신 취향이 바로 반영되도록 구성하였습니다.

찜 기록이 없는 신규 사용자를 위해 취향 화풍 테스트를 제공합니다. 사용자는 화면에 제시된 그림 3장 중 마음에 드는 1장을 고르는 과정을 10번 반복하며, 1~4번 문항은 다양한 화풍을 탐색하도록 스타일 클러스터별로 작품을 제시하고, 5번 문항부터는 지금까지 선택한 작품들의 평균 임베딩과 가까운 작품을 제시하여 취향을 좁혀 갑니다. 테스트가 끝나면 사용자의 취향 유형과 가장 가까운 작가 Top 5를 유사도와 함께 보여줍니다.

분석 이력 관리 기능을 통해 사용자는 과거에 수행한 이미지 분석 결과를 저장하고 다시 조회할 수 있습니다. 회원가입, 로그인, 비밀번호 재설정, 마이페이지 기능을 제공하여 개인별 분석 기록을 관리할 수 있도록 구성하였습니다.

분석 결과 공유 기능을 통해 사용자는 분석 리포트의 공유 링크를 발급하고 카카오톡 등으로 공유할 수 있으며, 링크를 받은 사람은 로그인 없이 결과를 열람할 수 있습니다. 공유 링크에는 만료일을 설정할 수 있고 언제든 공유를 해제할 수 있으며, 공유 페이지 조회수는 Redis에서 집계한 뒤 주기적으로 데이터베이스에 반영하여 분석 결과 화면에 표시합니다. 또한 로그인이 필요한 메뉴에 비로그인 상태로 접근하면 로그인 안내 창을 띄워 이용 흐름이 끊기지 않도록 하였습니다.

프론트엔드는 React와 Vite 기반으로 개발하였으며, 사용자 인터페이스와 데이터 시각화를 담당합니다. 백엔드는 Spring Boot 기반 REST API 서버로 구성하여 회원 관리, 분석 요청 처리, 분석 결과 저장 및 조회 기능을 제공합니다. AI 분석 서버는 FastAPI와 Python 기반으로 구축하였으며, CLIP 모델을 활용한 이미지 임베딩 생성과 OpenAI API 기반 스타일 분석을 수행합니다.

데이터 저장소는 목적에 따라 분리하여 구성하였습니다. PostgreSQL은 회원 정보, 작가 정보, 태그 데이터 등 관계형 데이터를 저장하고, MongoDB는 이미지 분석 결과와 작가별 분석결과 등 비정형 데이터를 저장합니다. Redis는 JWT Refresh Token 관리와 인증 관련 임시 데이터를 저장하는 용도로 활용하였습니다. PostgreSQL에는 pgvector 확장을 적용하여 작가·작품·사용자 취향 임베딩(512차원)을 저장하고 데이터베이스 안에서 바로 코사인 거리로 유사 작가를 조회합니다. Redis는 일일 분석 횟수 카운터, 추천 결과 캐시, 공유 페이지 조회수 집계에도 활용하며, Elasticsearch는 작가 스타일 프로필을 색인하여 다중 태그 검색과 자동완성을 담당합니다.

인증 및 보안은 Spring Security와 JWT 기반으로 구현하였습니다. Access Token은 HttpOnly Cookie를 통해 관리하고, Refresh Token은 Redis에 저장하여 토큰 재발급을 처리하도록 구성하였습니다. 비밀번호는 BCrypt를 사용하여 암호화하였으며, HTTPS 환경을 적용하여 통신 보안성을 확보하였습니다. 데이터베이스 접속 정보와 JWT 서명 키 등 민감한 설정 값은 소스 코드에 두지 않고 환경변수로 분리하여 관리합니다.

배포 환경은 AWS EC2와 NAVER Cloud Object Storage를 활용하여 구축하였습니다. 이미지 파일은 Object Storage에 저장하고, Spring Boot 서버와 FastAPI 서버는 Docker 컨테이너 기반으로 운영하였습니다. Nginx를 리버스 프록시 서버로 구성하여 HTTPS 인증서를 적용하고, 프론트엔드와 백엔드 서비스를 통합적으로 제공하는 구조로 설계하였습니다.

적용 기술

프레임워크 : React, Spring Boot 3.x, FastAPI

사용 언어 : Java 17, Python, JavaScript, CSS

데이터베이스 : PostgreSQL(회원 정보, 작가 정보, 태그 데이터 등 관계형 데이터 저장), MongoDB(AI 분석 결과 및 작가별 스타일 분석 데이터 저장), Redis(Refresh Token 및 인증 관련 임시 데이터 저장), pgvector(작가·작품·사용자 취향 임베딩 저장 및 벡터 유사도 검색), Elasticsearch(작가 스타일 태그 다중 조건 검색 및 자동완성), Redis(일일 분석 횟수 제한, 추천 결과 캐시, 공유 조회수 집계)

클라우드 : NAVER Cloud Platform (Naver Cloud Storage), Amazon Web Services (EC2)

통신 프로토콜 : HTTPS, REST API, SMTP

웹 서버/배포 : Nginx (리버스 프록시, SSL), Docker

인증/보안 : Spring Security, JWT (Access Token / Refresh Token), BCrypt
API 활용 : OpenAI API, Safebooru API, Kakao JavaScript SDK(공유하기)

기타 : CLIP (ViT-B/32), Vector Embedding, Cosine Similarity, JPA/Hibernate, Axios, T-SNE, Lombok, WebClient, Spring Data Elasticsearch, SHA-256 해시 기반 중복 분석 방지, Spring Event(@TransactionalEventListener) 기반 캐시 무효화, Spring Scheduler

❍ 도메인 주소 :

FROM LEARNING TO BUILDING

다음 작품의
주인공이 되어 보세요.

AI·데이터·클라우드를 배우고 실제로 작동하는 소프트웨어로 완성합니다.

입학 안내 · 공식 모집요강 확인

면접 공식 안내 확인 · 최초 합격 발표 공식 안내 확인