전체 글 49

BERT 구현 공부자료

Tokenizer 제작하기https://velog.io/@jieun9851/Tokenizer-%EC%A0%9C%EC%9E%91%ED%95%98%EA%B8%B0 WordPiece Tokenizerhttps://kaya-dev.tistory.com/47 트랜스포머의 토큰 임베딩https://seungseop.tistory.com/37 트랜스포머 구현https://cpm0722.github.io/pytorch-implementation/transformerhttps://julie-tech.tistory.com/130 nn.Embedding과 nn.Linear의 차이https://velog.io/@wjdghcks6735/PyTorch-nn.Embedding-%EA%B3%BC-nn.Linear%EC%9D%98-%..

NER 모델 구축

few-shot NER에 대한 papers with codehttps://paperswithcode.com/task/few-shot-ner 고려대학교 세미나http://dmqm.korea.ac.kr/activity/seminar/389 GPT-3를 이용한 클래스 생성https://medium.com/@yongsun.yoon/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%97%86%EC%9D%B4-ner-%EB%AA%A8%EB%8D%B8-%ED%95%99%EC%8A%B5%ED%95%98%EA%B8%B0-90c4c24953a few-shot ner에 대한 부경대 논문https://repository.pknu.ac.kr:8443/handle/2021.oak/33482 KLUE: Korean Lang..

NER 프로젝트 개요

개괄적인 개발 단계1. KoBERT-NER-mastergit: https://github.com/monologg/KoBERT-NER데이터셋: Naver NER 데이터셋 (tsv 파일, 비문으로 구성)코드 특성: 단순히 띄어쓰기 기준으로 문장 파싱목표:- 코드 분석- 법률 데이터를 tsv 파일로 전처리하여 해당 코드로 훈련 2. pytorch-bert-crf-nergit: https://github.com/eagle705/pytorch-bert-crf-ner데이터셋: 해양대학교 데이터셋 (txt 파일, 품사 정보 추가, 뉴스나 소설에서 발췌)코드 특성: 전용 토크나이저를 기반으로 문장 파싱목표:- 코드 분석- 모델 고도화 3. pytorch-ko-nergit: https://github.com/ai2-ne..

나만의 단어장을 만드는 팁

아이엘츠 공부를 하다보면 잘 외워지지 않는 영단어들을 많이 접한다. 이런 것들을 모아 나만의 단어장을 만드는 꿀팁을 나름대로 연구해봤는데, 이 게시글을 통해 일괄적으로 정리하고자 한다. 새로운 것을 발견할 때마다 이 게시글에 추가하려 한다. 1. 단어 채집을 위해 설치해야 할 크롬 확장 프로그램확장 프로그램 중 하나인 네이버 영어사전은 원하는 단어를 더블 클릭할 시 바로 찾아준다.이런 식으로 웹페이지를 읽다가 모르는 단어를 클릭하면 빠르게 찾을 수 있으니 매우 편하다.  2. 윈도우와 휴대폰을 연결하여 나만의 단어장 만들기윈도우에 설치된 '휴대폰과 연결'을 실행하고 설정에 들어가 '다른 장치로 콘텐츠 복사 및 붙여넣기'를 활성화 한다. 이렇게 하면 PC에서 복사한 영단어를 휴대폰으로 붙여넣을 수 있다.그..

자기개발/IELTS 2024.04.30

우분투에 Chrome Remote Desktop 설치하기

우분투에 크롬 데스크탑을 설치하면, 원격 접속하는 PC에서 검은 스크린에 'select a session to launch within your chrome remote desktop environment'라는 문구만이 뜬다. 구글링을 통해 문제를 해결했는데, 일련의 과정을 잊지 않도록 정리 해둔다. 며칠동안 헤맸기 때문에 우분투에서 크롬 데스크탑을 삭제한 후, 처음 설치하는 것부터 전부 적어둔다. 1. 우선 상단의 링크를 따라 크롬 데스크탑을 설치해준다. https://remotedesktop.google.com/access/ 2. 터미널에 해당 명령어를 넣어 폴더를 생성해준다. mkdir ~/.config/chrome-remote-desktop 3. 크롬 창을 모두 닫은 뒤 다시 열어 데스크탑에 접속..

파이토치 기초

차원 증가 unsqueeze() 메소드 사용 unsqueeze() 메소드는 지정된 위치에 새로운 차원을 추가합니다. 이 메소드는 차원을 추가할 위치의 인덱스를 인자로 받습니다. PyTorch에서 차원의 인덱스는 0부터 시작합니다. 따라서, 배치 차원을 가장 앞에 추가하려면 인덱스 0의 위치에 차원을 추가하면 됩니다. import torch # [3, 256, 256] 차원을 가지는 텐서 생성 image_tensor = torch.randn(3, 256, 256) # 배치 차원을 추가하여 [1, 3, 256, 256]으로 변경 image_tensor_unsqueezed = image_tensor.unsqueeze(0) print(image_tensor_unsqueezed.shape) # 결과: torch...

이미지 시각화 함수

필요한 라이브러리 임포트 import cv2 import torch import numpy as np from torch import nn import torch.nn.functional as F import matplotlib.pyplot as plt 이미지를 마스크 경부에 따라 넘파이 어레이로 읽어오기 def img_read(data_path, is_mask = False): if is_mask: img = cv2.imread(data_path, cv2.IMREAD_GRAYSCALE) # (256, 256) else: img = cv2.imread(data_path) # (256, 256, 3) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # BGR -> RGB ret..

CMT: demo.py

코드를 이해하기 위한 지식 더보기 mask = cv2.imread(mask_fn)[..., 0] / 255. 에서 [..., 0]에 대한 설명 [..., 0] 구문은 Python의 NumPy 라이브러리나 PyTorch에서 사용되는 고급 인덱싱 기법 중 하나입니다. 이 구문은 다차원 배열에서 특정 차원의 모든 요소를 선택하면서, 동시에 다른 차원에서는 특정 인덱스의 요소만을 선택하고자 할 때 사용됩니다. 예를 들어, cv2.imread로 이미지를 읽었을 때 반환되는 배열의 형태는 일반적으로 (높이, 너비, 채널)입니다. 여기서 채널은 BGR 순서로 색상을 나타냅니다(OpenCV는 기본적으로 BGR 포맷을 사용). [..., 0]는 이 배열에서 모든 높이와 너비에 대해 첫 번째 채널(B 채널)만을 선택하라는..

코드 분석/CMT 2024.02.02

CMT: utils.py

코드 독해에 필요한 배경지식 더보기 torch.load() 함수 torch.load() 함수는 PyTorch에서 모델이나 텐서 등을 저장한 파일을 로드할 때 사용됩니다. 이 함수는 저장된 객체를 직렬화된 형태에서 다시 Python 객체로 복원합니다. 주로 모델의 가중치, 옵티마이저의 상태 등을 저장한 체크포인트 파일을 로드하는 데 사용됩니다. 예를 들어, 학습 중에 모델의 상태를 파일에 저장했다면, 이후에 torch.load()를 사용하여 해당 상태를 다시 로드할 수 있습니다. load_state_dict() 함수와 strict=True load_state_dict() 함수는 모델의 매개변수(가중치와 편향)를 로드하기 위해 사용됩니다. 이 함수는 인자로 전달된 상태 딕셔너리(state_dict)를 현재 ..

코드 분석/CMT 2024.02.02

유사한 이미지 삭제하기

폴더에 너무 유사한 이미지가 많다면, 이를 삭제 import os import PIL import json import glob import numpy as np from PIL import Image import cv2, numpy as np import matplotlib.pyplot as plt from matplotlib import font_manager, rc def similar_image_deletion(dir_path: str, index: int): dir_path = dir_path #img_dirs = [이미지 디렉토리 전부 저장] img_dirs = [] for path in os.listdir(dir_path): img_dir = os.path.join(dir_path, path..