사진 한 장으로 잃어버린 가족을 찾아주는 AI 탐정
배경/목적 우리는 종종 사진 한 장으로 사랑하는 가족이나 친구를 찾기 위한 노력에 힘쓰곤 합니다. 이번 프로젝트는 이러한 요구에 응답하기 위해 AI 기술을 사용, 사용자가 업로드한 사진을 분석하여 잃어버린 가족을 찾아주는 시스템을 구축하는 것입니다. 이러한 시스템의 핵심은 이미지에서 추출한 특정 데이터예: 색상, 해시, 메타 데이터를 기반으로 AI 모델이
사진 한 장으로 잃어버린 가족을 찾아주는 AI 탐정
배경/목적
우리는 종종 사진 한 장으로 사랑하는 가족이나 친구를 찾기 위한 노력에 힘쓰곤 합니다. 이번 프로젝트는 이러한 요구에 응답하기 위해 AI 기술을 사용, 사용자가 업로드한 사진을 분석하여 잃어버린 가족을 찾아주는 시스템을 구축하는 것입니다. 이러한 시스템의 핵심은 이미지에서 추출한 특정 데이터(예: 색상, 해시, 메타 데이터)를 기반으로 AI 모델이 빠르게 검색할 수 있도록 하는 것입니다.
구현 내용
우리는 이미지 업로드 기능을 위해 PhotoUpload 컴포넌트를 리팩토링하고, AI 모델의 호출과 이미지 전처리를 효율적으로 처리하도록 설정했습니다. 주요 변경 사항은 이미지 압축 및 메타데이터 추출을 통합하는 방식의 개선이었습니다. 이를 통해 사용자 경험을 개선하고 시스템의 전반적인 성능을 높일 수 있었습니다.
코드 예시: 이미지 전처리 및 AI 호출
import { compressImage } from '../utils/compressImage';
import { analyzeImage } from '../ai/imageAnalysisService';
const handlePhotoUpload = async (file: File) => {
const compressedImage = await compressImage(file);
const analysisResult = await analyzeImage(compressedImage);
return analysisResult;
};
핵심 코드 설명
위 코드의 핵심은 사용자가 업로드한 이미지를 compressImage 함수를 이용해 최적화 한 후, analyzeImage 함수를 통해 해당 이미지를 분석하는 것입니다. compressImage 함수는 이미지의 해상도를 조정하고 EXIF 메타데이터를 읽어 분석에 필요한 정보를 제공합니다.
이러한 디자인 패턴은 이미지 압축과 분석 작업을 명확히 분리하여 코드의 가독성과 유지보수성을 높입니다. 사전 처리 단계에서 이미지를 최적화하여 AI 모델이 이와 관련된 프로세스를 원활히 진행할 수 있도록 돕습니다.
마주친 문제와 해결
이 과정에서 이미지 파일 크기와 분석 속도 사이의 트레이드오프가 큰 도전 과제가 되었습니다. 초기에는 대용량 파일을 업로드할 경우, 태스크가 지연되는 문제가 발생했습니다. 이를 해결하기 위해 compressImage 함수를 개선하여 이미지 크기를 현저히 줄일 수 있도록 하였고, 이미지의 주요 색상을 우선적으로 추출하여 속도를 높이기 위한 로직을 추가했습니다.
그 결과, 시스템은 대량의 이미지를 보다 빠르게 처리할 수 있었으며, 완전한 기능을 유지하면서도 성능을 극대화할 수 있었습니다.
결론 및 다음 단계
이제 이 시스템은 사용자가 전송한 한 장의 사진으로 잃어버린 가족이나 친구를 찾을 수 있는 기본적인 기능을 갖추었습니다. 다음 단계로는 사용자 인터페이스(UI)를 더욱 다듬고, AI 모델을 더 정교하게 구성하여 검색 결과의 정확도를 향상시키는 것입니다. 또한, 사용자가 사진을 검색할 때 필요한 다양한 필터링 옵션을 추가하여 사용자 경험을 한층 개선할 예정입니다.
앞으로 이 프로젝트가 사용자의 마음에 초점을 맞춘 솔루션을 제공할 수 있도록 지속적으로 노력해 나가겠습니다.