전체 글

ML 엔지니어 컴공누나입니다:) wodbs9522@gmail.com
꿀팁/소소한 팁

대용량 데이터의 유사도 검색 라이브러리 faiss 사용하기

faiss faiss는 대용량의 데이터 간의 유사도를 빠르게 계산해주는 유사도 검색 라이브러리입니다. 예를 들어 유사한 단어를 찾고 싶다! 하시면 미리 임베딩된 단어들로 "인덱스"를 생성해 주시고, "검색"을 통해 관련된 단어를 얻으시면 됩니다. 지금은 텍스트의 예로 말씀드렸는데, 이미지 검색에서도 활용 가능합니다. 사용 방법 1. 임베딩된 벡터 준비 2. 인덱스 생성 3. 검색 faiss는 위의 3가지 과정을 거치면 사용하실 수 있습니다. 본격적으로 사용해 보기 전! 설치를 먼저 해주세요~ cpu 버전 pip install faiss gpu 버전 pip install faiss-gpu 1. 임베딩된 벡터 준비 이미지면 이미지를 임베딩한 벡터, 텍스트면 텍스트를 임베딩한 벡터가 필요합니다. 저는 예시로 ..

인공지능공부/자연어처리

[huggingface🤗] 2.Auto Class사용해보기

Auto Class 허깅 페이스는 정말 다양한 모델들이 있다고 말씀드렸었죠. 만약에 이 모델들을 불러올 때마다 다 다르게 선언해 줘야 한다면, 매우매우 복잡할 것입니다. 현재 약 15만건 정도 올라와 있는 것으로 보이는데, 그러면 15만개의 모델로 각각 불러와야합니다. 매번 새 모델마다 코드를 다시 짜야하기 때문에 정말 귀찮은 일이 생기죠ㅠ..ㅠ 그래서 허깅 페이스에는 단 하나의 함수로! 이름만 주면! 바~~~로 모델을 불러올 수 있습니다. 그렇기 때문에 Auto Class라고도 부릅니다. 허깅 페이스에는 텍스트, 이미지, 멀티모달 등등 정말 다양한 모델들이 있는데요. 저는 텍스트 위주로 보겠습니다. Auto Class는 아래와 같이 총 3가지가 있습니다. (텍스트에서 사용하기 위해서) AutoConfi..

인공지능공부/그래프

[Stanford/CS224W] 4. PageRank(2) : 페이지 랭크 문제 해결

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 페이지 랭크 알고리즘에 대해서 배워보았습니다. 이번 포스팅에서는 페이지 랭크 문제점과 어떻게 해결해 나가는지 알아보겠습니다. PageRank Remind 페이지 랭크에 대한 기본 개념들은 지난 포스팅을 참고해 주시길 바랍니다. 우리는 앞에서 페이지 랭크의 수식을 다음과 같이 정의했었죠. 말로 풀어서 설명하자면, t+1번째 노드의 중요도는 t번째 나에게로 들어오는 모든 노드의 중요도의 합과 같습니다. 그래서 이 과정을 언제까지 하냐 살펴보면, 다음과 같이 이전 중요도와 임계값 이하로 차이가 날 때까지 위의 과정을 반복합니다. 위의 과정을 matrix로 표현하면 아래와 같은 수식을 얻을 수 있습니다. 초기 각 노드의 중요도는 1/노드 수이고, r(t..

인공지능공부/자연어처리

[huggingface🤗] 1.허깅페이스란?

허깅페이스 허깅페이스는 트랜스포머 기반의 다양한 모델들과 학습 스크립트를 구현해놓은 일종의 모듈입니다. 기존의 트랜스포머를 학습시킨다고 하면 딥러닝 프레임워크를 선택하고, 그에 맞게 구현을 해야했습니다. 하지만 허깅페이스는 그런 함수들이 이미 정의 되어있기 때문에, 간단하게 모델을 불러서 쓸 수 있습니다. 즉, 따로 구현을 하지 않고 arguments를 줌으로써 편하게 사용이 가능합니다. 또한 가장 좋은 점은 다른 누군가가 이미 학습한 모델을 가져다 쓸 수도 있다는 것입니다. 기존에는 직접 파일을 찾고, 받아서 사용했지만 간단하게 코드 몇 줄이면 그것도 손쉽게 할 수 있습니다. 이 말은 즉, 내가 학습시킨 모델도 허깅페이스에 올릴 수 있다는 것이죠! 뿐만 아니라 데이터도 다운받을 수 있습니다. 하지만! ..

인공지능공부/그래프

[Stanford/CS224W] 4. PageRank(1) : 페이지 랭크

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 전체 그래프 임베딩에 대해서 알아봤습니다. 이번 포스팅에서는 구글의 아주 유명한 알고리즘인 페이지랭크에 대해서 배워보겠습니다. PageRank 페이지 랭크 알고리즘은 구글의 랭킹 알고리즘으로도 유명하죠. 그런데 그래프 이야기를 하다가 왜 갑자기 페이지 랭크 알고리즘이 나왔을까요? 페이지 랭크는 말 그대로 페이지 간의 랭크를 구하는 것인데 말이죠. 그렇다면 그림을 하나 보여드리도록 하겠습니다. 왼쪽은 우리가 지금까지 공부한 그래프이고, 오른쪽은 페이지와 그들간의 링크(하이퍼링크)를 연결한 것입니다. 그래프와 굉장히 유사하죠? 따라서 그래프와 웹은 비슷한 형태를 가진다고 할 수 있습니다. 그래프의 노드는 페이지로, 링크는 하이퍼링크로 연결될 수 있습..

인공지능공부/그래프

[Stanford/CS224W] 3. node embeddings(3) : 전체 그래프 임베딩

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 랜덤 워크에 대해서 알아봤습니다. 이번 포스팅에서는 전체 그래프 임베딩에 대해 알아보겠습니다. Embedding Entire Graphs 전체 그래프를 임베딩 하는 것은 무엇일까요? 단순 노드 임베딩에서는 노드들을 임베딩 공간으로 맵핑시켰습니다. 전체 그래프 임베딩은 하나의 노드를 임베딩 공간으로 맵핑시키는 것이 아니라 전체 그래프를 임베딩 공간으로 맵핑시키는 것을 뜻합니다. 즉, 마치 하나의 파일을 압축하듯 노드들의 정보를 압축시켜 임베딩 공간으로 맵핑해줍니다. 전체 그래프 임베딩은 분자가 독성이 있는지 탐지(분자 구조는 그래프 형태), 또는 이상 탐지 등에 사용될 수 있습니다. Approach1 : 노드 임베딩 값의 평균 또는 총합 이용 첫 ..

인공지능공부/컴퓨터비전

detection한 이미지 Crop하는 방법

보통 객체 탐지 모델의 결과는 bbox의 네 꼭지점을 주는 경우가 많은데요. 네 꼭지점에 맞게 이미지를 한번 잘라보겠습니다. 필요한것 : 객체 탐지 모델, 이미지 저는 인물 탐지하는 faster-rcnn 모델을 사용했습니다. 먼저 이미지를 모델에 거쳐 결과를 받아주세요. 저는 장원영 사진으로 하겠습니다ㅎㅅㅎ [6.4021919e+01, 3.3994653e+02, 6.4194012e+02, 1.1920336e+03, 9.9788922e-01] 위의 결과는 각각 [left, up, right, down, prob]입니다. 여기서는 bbox만 필요하기 때문에 맨 뒤 prob는 빼고 사용해주면 됩니다. from PIL import Image image1 = Image.open("test.png") #이미지를 불..

인공지능공부/그래프

[Stanford/CS224W] 3. node embeddings(2) : 노드 임베딩을 위한 랜덤 워크 접근 방식

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 노드 임베딩이 어떤 과정을 거쳐 진행되는지 간단하게 알아봤습니다. 오늘은 노드 임베딩의 접근 방식 중 하나인 랜덤 워크(random walk)에 대해서 알아보겠습니다. 본격적인 설명에 앞서 몇가지 개념을 정의하고 가도록 하겠습니다. zu는 노드 u가 임베딩된 벡터입니다. P(v|zu)는 u노드로 부터 시작한 랜덤 워크가 v를 지나갈 확률을 뜻합니다. softmax 모델이 예측한 K벡터를 합이 1인 확률로 변환해줍니다. sigmoid S모양의 함수로 예측 값을 0~1사이의 값으로 변환시켜줍니다. Random Walk 랜덤워크는 시작점 u에서 무작위로 다음 노드를 선택하여 그래프를 돌아다닐 때, 특정 노드 v를 들릴 확률을 유사도로 두고 학습하는 방..

꿀팁/오류 정리

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

원인 libgl1-mesa-glx가 없을 때 나는 오류입니다. 해결 방법 apt-get update apt-get -y install libgl1-mesa-glx 명령어로 설치해 주시면 됩니다.

인공지능공부/그래프

[Stanford/CS224W] 3. node embeddings(1) : 노드 임베딩

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 전통적인 그래프 레벨의 피쳐에 대해 알아보았습니다. 이번 포스팅에서는 본격적으로 노드 임베딩이 어떻게 진행되는지 간략하게 알아보도록 하겠습니다. Graph Representation Learning 앞의 포스팅에 나왔던 전통적인 Representation 같은 경우에는 아래와 같은 과정으로 진행되었는데요. 이 과정에서 매번 다른 목적의 feature를 수작업으로 추출해야하기 때문에, 이 과정이 편리하지는 않았습니다. 실제로 앞의 포스팅을 되돌아보면 '학습'하는 것이 아니라 직접 다 처리를 했었죠. 하지만 이번 포스팅에서는 feature를 수작업으로 추출하는 것이 아닌 representation learning을 통해 학습하고 자동으로 관련된 벡터..

컴공누나
컴공누나의 지식 보관소