본문 바로가기

분류 전체보기

(48)
[RVC 코드 분석] 노래에서 가수 목소리 음원과 MR 음원으로 분리 화자의 목소리를 담은 노래 커버를 제작하는 ai 서비스를 개발중에 있다. 이를 위해 RVC(Retrieval-based Voice Conversion)라는 AI 음성 합성 기술을 사용한다. RVC에서 많이 사용하는 깃헙 레포지토리는 https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/tree/main 이다. 하지만 레포지토리 이름에서 보이는 대로 이는 그라디오로 만들어진 웹 상에서 작동하도록 설계된 레포지토리이다. 서비스 제작을 위해서는 코드를 분석하여 api로 만들 수 있도록 코드를 수정해야한다. 이 포스트에서는 서비스를 위한 AI 기능 구현을 위한 코드 분석 과정을 담는다. 서비스 상에서 구현되어야하는 AI 기능은 아래와 같다...
[MDQA]1.3 자른 텍스트를 특정 크기의 벡터로 임베딩(embedder 모듈) MDQA를 위해 “유저가 입력한 웹 페이지 또는 파일을 데이터 베이스에 저장”하는 과정에 대해 다루고 있다. [MDQA]1. 웹 페이지 또는 파일을 데이터 베이스에 저장하기 에서 설명한 것처럼 그 전체 과정은 아래와 같다. 유저가 웹 페이지의 URL을 입력 또는 PDF 파일을 업로드 웹 페이지는 크롤링, PDF는 파일을 읽어서 텍스트 데이터를 가져옴(Loader 모듈) 텍스트 데이터를 chunk로 자른다.(chunker 모듈) 자른 텍스트를 특정 크기의 벡터로 임베딩한다. (embedder 모듈) chunk의 중요한 순서를 기록한다. (Text ranker 모듈, 이 부분은 필수적이지 않다.) 이렇게 처리한 데이터들을 데이터베이스에 저장한다. 이번 포스팅에서는 4번 과정인 “자른 텍스트를 특정 크기의 벡..
[MDQA]1.2 텍스트 데이터를 chunk로 자르기(chunker 모듈) MDQA를 위해 “유저가 입력한 웹 페이지 또는 파일을 데이터 베이스에 저장”하는 과정에 대해 다루고 있다. [MDQA]1. 웹 페이지 또는 파일을 데이터 베이스에 저장하기 에서 설명한 것처럼 그 전체 과정은 아래와 같다. 유저가 웹 페이지의 URL을 입력 또는 PDF 파일을 업로드 웹 페이지는 크롤링, PDF는 파일을 읽어서 텍스트 데이터를 가져옴(Loader 모듈) 텍스트 데이터를 chunk로 자른다.(chunker 모듈) 자른 텍스트를 특정 크기의 벡터로 임베딩한다. (embedder 모듈) chunk를 중요한 순서대로 정렬한 데이터도 저장한다. (Text ranker 모듈, 이 부분은 필수적이지 않다.) 이렇게 처리한 데이터들을 데이터베이스에 저장한다. 이번 포스팅에서는 3번 과정인 “텍스트 데이..
[MDQA]1.1 웹 페이지는 크롤링, PDF는 파일을 읽어서 텍스트 데이터를 가져오기(Loader 모듈) MDQA를 위해 “유저가 입력한 웹 페이지 또는 파일을 데이터 베이스에 저장”하는 과정에 대해 다루고 있다. [MDQA]1. 웹 페이지 또는 파일을 데이터 베이스에 저장하기 에서 설명한 것처럼 그 과정은 아래와 같다. 유저가 웹 페이지의 URL을 입력 또는 PDF 파일을 업로드 웹 페이지는 크롤링, PDF는 파일을 읽어서 텍스트 데이터를 가져옴(Loader 모듈) 텍스트 데이터를 적절한 크기의 chunk로 자른다.(chunker 모듈) 자른 텍스트를 특정 크기의 벡터로 임베딩한다. (embedder 모듈) chunk를 중요한 순서대로 정렬한 데이터도 저장한다. (Text ranker 모듈, 이 부분은 필수적이지 않다.) 이렇게 처리한 데이터들을 데이터베이스에 저장한다. 이번 포스팅에서는 2번 과정인 “웹..
[MDQA]1. 웹 페이지 또는 파일을 데이터 베이스에 저장하기 MDQA 제작기 시작 페이지에서 말한 것처럼 MDQA에서의 큰 파이프라인은 아래와 같다. 유저가 입력한 웹 페이지 또는 파일을 데이터 베이스에 저장 유저의 질문 입력 질문과 연관된 내용을 데이터베이스에서 검색하기(Retrieval) 검색한 정보를 이용해 답변을 작성하기(Generation) 앞으로의 몇 개의 포스팅에서는 “웹 페이지 또는 파일을 데이터 베이스에 저장하기” 과정을 다룰 것이다. 그에 앞서서 이 과정에 대한 세부 파이프라인을 살펴보자. 파이프라인 “웹 페이지 또는 파일을 데이터 베이스에 저장하기”을 위해서 어떤 과정을 거쳐야하는지 생각해보자. 저자 스타트업에서의 MVP에서 파일 입력은 PDF만 가능하기 때문에 여기서 파일은 PDF 파일을 의미한다. 유저가 웹 페이지의 URL을 입력 또는 PD..
MDQA(Multi document question answering) 제작기 내가 창업한 스타트업에서 제작한 MVP에서 하나의 기능이 MDQA(다중 문서 질의응답 시스템)이다. MDQA는 사전에 유저가 여러 문서를 입력한 상황에서 질문을 하면 관련 정보를 문서에서 찾고, 찾은 정보를 이용해 답변하는 것 이다. MDQA 문제를 풀기위한 순서는 크게 아래와 같이 나눌 수 있다. 유저가 입력한 웹 페이지 또는 파일을 데이터 베이스에 저장 유저의 질문 입력 질문과 연관된 내용을 데이터베이스에서 검색하기(Retrieval) 검색한 정보를 이용해 답변을 작성하기(Generation) 몇 개의 포스팅을 통해서 MDQA 모듈을 제작하는 과정에 대해 설명해보려고 한다. 포스팅 주소는 아래와 같다.
[ChatGPT] 프롬프트 작성하는 프롬프트 글 아래에 프롬프트 작성하는 프롬프트에 대해 나와있습니다. 챗지피티에서 사용해보세요. 프롬프트 엔지니어링 현재 내가 회사에서 수행하는 업무 중 하나는 프롬프트 엔지니어링이다. 프롬프트는 인공지능 모델에게 원하는 출력을 안내하기 위해 제공되는 짧은 텍스트나 지시어다. ChatGPT(챗지피티)나 뤼튼에 들어가서 채팅창에 적는 내용이 프롬프트이다. 프롬프트 엔지니어링은 깨진 항아리에 물을 채우는 것과 유사하다. 안되던 부분을 해결하려고 프롬프트를 수정하면 안되던 부분은 되는데 되던 부분이 안되는 문제가 발생한다. 이런 점이 프롬프트 엔지니어링을 할 때 미치게하는점이다. LLM에게 프롬프트 엔지니어링을 맡겨보자. 이런 어려움을 겪고 있을 때 한 가지 생각이 났다. 사람은 본인이 본인을 제일 잘 알텐데 LLM 프..
[논문리뷰]FaceNet: A Unified Embedding for Face Recognition and Clustering AbstractFace 이미지를 Euclidian space(거리가 곧 유사도)로 mapping하는 Facenet을 제안Loss function으로 triplet loss를 사용LFW dataset에서 accuracy 99.63%, Youtube Faces DB에서 accuracy 95.12%로 SOTA 1. Introduction이 논문에서 verification, recognition, clustering을 수행하는 unified system을 소개한다. Face image를 Euclidean embedding하는 방법을 배움으로서 거리를 유사도로 사용할 수 있다. 즉, 같은 사람끼리는 가까운 거리에 embedding되고, 다른 사람끼리는 먼 거리에 embedding 된다. 이전의 face recog..