이번에 NLP를 주제로 작은 토이 프로젝트를 진행했는데, 자신의 심리를 작성하면 그것에 공감해 주거나 상담해 주는 챗봇을 만들어봤다. 참고자료: https://wikidocs.net/157001 https://hoit1302.tistory.com/162#[1]kogpt2%EA%B8%B0%EB%B0%98%EC%8B%AC%EB%A6%AC%EC%BC%80%EC%96%B4%EC%B1%97%EB%B4%87 본 프로젝트는 skt의 생성 모델, KoGPT2를 fine-tuning 하여 사용했으며, 데이터셋은 유명한 송영숙 님의 챗봇 데이터셋을 사용했다. 자세한 코드는 깃허브를 참고하면 좋을 것 같다. 1. 데이터 전처리 우선 사용한 데이터를 df에 저장하고 df.head()를 실행해 보면 다음과 같다: 여기서 lab..
최종 배포 링크 https://deep-look.vercel.app 에러 핸들링 백엔드에 연결을 마쳤을 때쯤, 백엔드와 프론트엔드 작업이 모두 완료되었다. 그러나, 모델에 사진을 업로드 하는 부분에서 계속 잘 업로드가 되지 않아 다음과 같은 에러들이 발생했다. 1. 413 에러 첫번째는, 이미지 업로드 시, base64로 인코딩 된 값이 전송되면서 발생한 413 에러였다. 413 에러는 많이 본 경험이 없던 터라, 서칭해 보았는데, 해당 에러가 발생한 이유는 이미지가 너무 컸기 때문이었다. Nginx에서 기본적으로 요청 엔티티의 크기는 1MB로 제한이 되어 있기 때문에, 1MB가 넘는 이미지를 업로드했을 때 413 에러가 발생했던 것이다. 이에, 최대 50MB까지 업로드할 수 있도록 nginx 설정을 변..
이전까지는 프론트 쪽 작업만 맡아서 하고, 백엔드는 node js로 한번 맛본 상태였는데, 갑작스레 웹과 백을 연결해야 하는 태스크가 주어졌다. 시간이 없고, 모델이 규모가 있는 모델은 아니어서 flask를 사용하기로 결정했다. 더 자세한 코드를 보고 싶으면 깃허브를 참고하길 바란다. (좀 난잡할 수 있음 주의) 백엔드 모델과 연결 시 거친 단계는 다음과 같다: pickle 파일을 만들어 모든 연예인의 얼굴 임베딩을 저장한다. client 측에서 post 요청을 보냈을 때 이미지 데이터를 받아 임베딩을 추출한다. 추출한 임베딩과 가장 유사한 임베딩을 pickle 파일로부터 로딩한다. 추출된 얼굴 임베딩과 사전 학습된 임베딩 간의 유사도를 계산한다. 가장 유사한 유명인의 이니셜과 유사도를 JSON 형식으로..
사진 전처리 이후, 모델을 선정하고 학습시키는 과정을 거쳤다. 모델의 후보는 ResNet, EfficientNet, Arcface가 있었는데, 가장 얼굴 유사도 부분에서 큰 성능을 보이는 Arcface 모델을 선정했다. 더 자세한 과정은 코랩을 통해 확인할 수 있다. 1. CSV 파일 생성 우선 전처리된 사진들의 이름(이름_순번 형태)과 해당 인물들이 label 된 csv 파일을 생성했다. 2. Train, Test dataset 분리 항목별로 70%는 train, 30%는 test의 데이터셋으로 분리했다. # 이니셜을 하나의 배열로 모으기 class_name_list = [] tmp=df.copy() for initial in tmp['class']: if initial not in class_name..