본문 바로가기

AI 인공지능37

Code LLM 모델과 평가방식 개요 ChatGPT가 출현함으로써 개발자에게는 AI를 활용한 코드 생산성과 효율성을 증대시켰다. 번거로운 데이터 노가다 작업을 물론 코드 생성까지 해줌으로써 더 빠르고 효율적으로 사용할 수 있게하였다. LLM (Large Language Model) 모델 중 Code에 특화된 Model을 살펴보고 어떻게 평가를 하는지 알아보고자 한다. Code LLM 모델 아래 링크를 따라서 리더보드에 들어가보면 Code LLM 모델들과 평가방법에 따른 점수가 소개되어있다. https://github.com/huybery/Awesome-Code-LLM HumanEval, MBPP, HF 등은 여러가지 평가방식인데 예를 들어 MBPP은 "초급 프로그래머 수준의 Python 프로그래밍 문제" 이다. 자세한 설명은 아래의 평.. 2023. 10. 19.
ChatGPT 탈옥 (DAN 모드) 아직도 가능한가? DAN 모드란? 각종 제약을 풀기 위해 유저들은 ChatGPT 프롬프트를 생각해 냈었고 DAN(Do Anything Now) 모드 혹은 탈옥(jailbreak) 등의 명칭으로 불리는 프롬프트를 개발하게 되었다. 막는자 vs 뚫는자 정책에 위반되는 부도덕한 프롬프트에 대해서 ChatGPT 개발진들이 탈옥에 관한 패치를 계속 내놓고 있기도 하지만 탈옥의 프롬프트 또한 계속 업데이트되면서 나오고 있는 상태이다. 막는자 vs 뚫는자 의 싸움이다. 2023년 2월 13일자 버전을 기준으로 탈옥을 통해 DAN 모드로 진입하여 질문을 해도 "AI 모델로서 가이드라인에 어긋나는 질문에는 답할 수 없습니다."라는 말로 거절한다. 아직도 막혀있는가? 2023년 8월 4일자로 아래 프롬프트를 사용하여 실험을 해봤는데 아직까.. 2023. 8. 4.
효과적인 ChatGPT Prompt Engineering 방법 프롬프트(Prompt)란?Gradient Flow의 Ben Lorica는 "프롬프트 엔지니어링은 기초 모델에서 원하는 결과를 도출하기 위해 효과적인 입력 프롬프트를 만드는 기술입니다." 라고 한다. 프롬프트 자체는 모델 출력에 대한 영향을 나타내는 모델에 대한 입력 역할을 한다. 좋은 프롬프트는 모델이 원하는 결과를 생성하도록 하는 반면, 잘못된 프롬프트에서 반복적으로 작업하면 모델의 한계와 작업 방법을 이해하는 데 도움이 된다. Prompt Engineering MethodsAndrew Ng님이 강좌 내용의 일부이며 매우 효과적인 방법의 방법이라고 생각한다. 1. Guidelines (지침)원칙 1: 명확하고 구체적인 지침 작성전략 1: 구분 기호를 사용하여 입력의 고유한 부분을 명확하게 표시 아래와 .. 2023. 8. 2.
ChatGPT API를 사용해보자 사전 준비ChatGPT API 문서 : https://platform.openai.com/docs/guides/chat/chat-vs-completionsAPI Key 발급 : https://platform.openai.com/account/api-keys 사용 방법1. 필수 패키지 importimport openai2. API Key 설정API Key 발급 을 통하여 발급한 키를 입력하여준다.openai.api_key = '[YOU-OPENAI-API]'3. 요청 함수 정의def request_chatgpt(msg): return openai.ChatCompletion.create( model='gpt-3.5-turbo', messages=msg )4. 초기 요청시일반적으로 대화는 먼저 시스템 메시지로.. 2023. 3. 6.
센세이션을 불고 온 ChatGPT 개요 ChatGPT 열풍이 한창이다. 뉴스와 유투브, 친구들과 회사에까지 이 주제로 떠들썩하다. 그도 그럴 것이 구글이나 넷플릭스가 몇 년에 걸쳐 달성한 사용자를 단 몇 개월 만에 이루 냈으며 기능 또한 놀라웠기 때문이다. 질문만 하면 여러 분야에 걸친 방대한 지식을 기가 막히게 찾아서 문장을 생성해 내고 보여줬기 때문이다. 이전에 나온 GPT-2나 Bert 등이 안 좋았다는 건 아니다. 어느 정도 한계가 보여줬던 면들을 혁신적이게 바꿔놓았기 때문이다. 무엇이 가능한가? 정보 검색을 해준다. 구글이나 네이버 등의 포털 사이트에서 검색하듯이 "헬스로 살을 빼려면 어떤 식으로 계획을 세우는 것이 좋을까?" 등 운동 정보 뿐만 아니라 IT, 건강, 정치 등 다양한 부분에서 2021년까지 수집한 정보를 기반으로.. 2023. 2. 20.
DeepSpeed란 무엇인가? DeepSpeed 개요 큰 모델은 순수한 데이터 병렬 처리로 쉽게 메모리가 부족하고 모델 병렬 처리를 사용하기 어렵다. DeepSpeed는 이러한 문제를 해결하여 모델 개발 및 훈련을 가속화 시킬 수 있다. DeeSpeed란? DeeSpeed API는 PyTorch의 경량 래퍼이다. 새로운 플랫폼을 배우지 않고도 PyTorch에서 좋아하는 모든 것을 사용할 수 있는 장점이 있다. DeepSpeed는 모델 개발에 집중할 수 있도록 분산 훈련, 혼합 정밀도 등 하이퍼파라미터를 관리한다. 가장 중요한 것은 DeepSpeed의 고유한 효율성 및 효율성 이점을 활용하여 PyTorch 모델에 대한 몇 줄의 코드 변경만으로 속도와 확장성을 높일 수 있다. 속도 DeepSpeed는 컴퓨팅/통신/메모리/IO에 대한 효율.. 2023. 2. 6.
deep-text-recognition-benchmark 학습 환경설정 1. Conda 환경 생성 [root@server ~]$ conda create -n deep_text_recognition python=3.7 [root@server ~]$ conda activate deep_text_recognition (deep_text_recognition) [root@server ~]$ conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch 2. CRAFT-pytorch 소스 다운로드 (deep_text_recognition) [root@server ~]$ https://github.com/clovaai/deep-text-recognition-bench.. 2022. 12. 1.
Craft Model 사용법 환경설정 1. Conda 환경 생성 [root@server ~]$ conda create -n craft_model python=3.7 [root@server ~]$ conda activate craft_model (craft_model) [root@server ~]$ conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch 2. CRAFT-pytorch 소스 다운로드 (craft_model) [root@server ~]$ git clone https://github.com/clovaai/CRAFT-pytorch.git (craft_model) [root@server ~]$ cd CRAFT.. 2022. 12. 1.
YOLOv7에 대해 알아보자 YOLO란? YOLO는 You Only Look Once의 약자로 Object detection 분야에서 널리 알려진 모델이다. 처음으로 One-Stage-Detection (분류와 추론을 동시에 함)방법을 고안해 실시간으로 Object Detection이 가능하게 만들었다. YOLO 특징 이미지를 분할하지 않고 이미지 한 장에서 분석이 가능합니다. (R-CNN과 같은 경우는 이미지 분할하여 CNN으로 추론) 다양한 전처리 모델과 인공 신경망을 결합해서 사용하는 이전 방식이 아닌 통합된 모델을 사용합니다. 실시간으로 객체를 탐지 할 수 있는 것이다. 기존의 Faster R-CNN보다 6배 빠른 성능을 보여줍니다. YOLOv7 모델 YOLO(You Only Look Once) v7 모델은 YOLO 모델 제.. 2022. 11. 22.
YOLOv7를 활용한 Object Detection 환경구성 1. conda 환경 생성 [root@ai-server ~] conda create -n yolov7 python=3.7 [root@ai-server ~] conda activate yolov7 (yolov7) [root@ai-server ~] conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch 2. yolov7 프로젝트 clone (yolov7) [root@ai-server ~] git clone https://github.com/WongKinYiu/yolov7.git (yolov7) [root@ai-server yolov7] cd yolov7 (yolov7) [root@ai-s.. 2022. 11. 21.
Keras 멀티 GPU 사용 방법 Keras로 멀티 GPU를 사용하려고 실제 훈련을 시켜보면 GPU 한 개만 점유해서 사용하여 멀티 GPU를 활용하지 못하는 경우를 볼 수 있다. 간단한 이유는 Keras와 Tensorflow 버전 호환성 문제이기 때문이다. 이럴때 간혹 외국 사이트나 다른 블로그를 보면 Tensorflow 버전을 1.5, 1.4로 낮추면 된다고 써져있는데 전혀 그럴 필요가 없다. Tensorflow 2.6 이상부터 Keras가 별개 패키지로 관리되기 때문에 이전 버전은 유연하게 대응하도록 하자. 환경 Keras==2.3.1 tensorflow==2.2.0 대응 방법 1. Keras 패키지의 Tensorflow Backend의 _get_available_gpus 함수를 Overwrite 한다. import keras.bac.. 2022. 11. 21.
바이트 페어 인코딩 (BPE - Byte Pair Encoding) 기본 개념 UNK : 단어 사전에 없는 단어란 의미에서 해당 토큰을 UNK(Unknown Token)라고 표현한다. OOV : 모르는 단어로 인해 문제를 푸는 것이 까다로워지는 상황을 OOV(Out-Of-Vocabulary) 문제라고 한다. 서브워드 분리(Subword segmenation) 작업은 하나의 단어를 더 작은 단위의 의미있는 여러 서브워드들(Ex) birthplace = birth + place)의 조합으로 구성하여 OOV나 희귀 단어, 신조어와 같은 문제를 완화시킬 수 있는 방법이다. BPE (Byte Pair Encoding) BPE(Byte pair encoding) 알고리즘은 1994년에 제안된 데이터 압축 알고리즘 BPE은 기본적으로 연속적으로 가장 많이 등장한 글자의 쌍을 찾아서 .. 2022. 9. 8.
fairseq를 활용한 기계 번역 데이터 준비 root@server:~# ls -al /home/data -rw-rw-r-- 1 data data 175393 8월 30 08:40 test.en -rw-rw-r-- 1 data data 247383 8월 30 08:40 test.ko -rw-rw-r-- 1 data data 15706983 8월 30 08:40 train.en -rw-rw-r-- 1 data data 21556330 8월 30 08:40 train.ko -rw-rw-r-- 1 data data 184784 8월 30 08:40 valid.en -rw-rw-r-- 1 data data 252103 8월 30 08:40 valid.ko 데이터 전처리 바이너리로 변환, 딕셔너리 구축한다. root@server:~# fairse.. 2022. 8. 31.
한글 형태소 분석기 종류 한글 형태소 분석기 (KoNLPy) 1. Okt (Open Korea Text) from konlpy.tag import Okt okt = Okt() text = "가장 유명한 100가지 명언. 하루에 3시간을 걸으면 7년 후에 지구를 한바퀴 돌 수 있다. " print(okt.morphs(text)) print(okt.pos(text)) print(okt.nouns(text)) # ['가장', '유명한', '100', '가지', '명언', '.', '하루', '에', '3시간', '을', '걸으면', '7년', '후', '에', '지구', '를', '한', '바퀴', '돌', '수', '있다', '.'] # [('가장', 'Noun'), ('유명한', 'Adjective'), ('100', 'Numbe.. 2022. 8. 31.
NLP 토큰화 (Tokenization) 처리 방법 토큰화란? 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고한다. 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의한다. 단어 토큰화 (Word Tokenization) 토큰의 기준을 단어(word)로 하는 경우, 단어 토큰화(word tokenization)라고 한다. 다만, 여기서 단어(word)는 단어 단위 외에도 단어구, 의미를 갖는 문자열로도 간주되기도 한다. from nltk.tokenize import word_tokenize text = "God is Great! I won a lottery." print(word_tokenize(text)) ['God', 'is', 'Great', '!', 'I', 'won', 'a', 'lotte.. 2022. 8. 31.
기계 번역 - 오픈 소스 벤치마킹 기계 번역이란? NLP는 컴퓨터가 사람의 언어를 이해하는 목표를 가진다. 자연어는 생략과 중의성이 많아 컴퓨터가 이해하기 어렵다. 기계 번역 오픈 소스 이름 회사 언어 및 프레임워크 Transformers HuggingFace Pytorch, Tensorflow Fairseq Facebook Pytorch Tensor2tensor Google Tensorflow OpenNMT-py OpenNMT Pytorch Sockeye Amazon MXNet Marian Microsoft C++ 2022. 8. 9.
월리를 찾아라 개요 월리 이미지를 찾는 실험입니다. 데이터셋 : https://www.kaggle.com/kairess/find-waldo 참고소스 : https://github.com/kairess/find_waldo/blob/master/train.ipynb 구현 import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches import keras.layers as layers import keras.optimizers as optimizers from keras.models import Model, load_model from keras.utils import to_categorical from keras.callbac.. 2022. 3. 1.
마스크 착용을 인식할 수 있을까? 개요 마스크를 착용한 사람과 착용하지 않은 사람을 인식하는 실험입니다. 데이터셋 : https://github.com/prajnasb/observations 참고소스 : https://pyimagesearch.com/2020/05/04/covid-19-face-mask-detector-with-opencv-keras-tensorflow-and-deep-learning/ 구현 import tensorflow as tf from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.applications import MobileNetV2 from tensorflow.keras.layers import Avera.. 2022. 2. 22.
[인공지능] 주차 공간을 알아낼 수 있을까? 개요 주차가 되어있는 데이터와 비어있는 데이터를 학습시켜 주차 공간을 알아내는 실험입니다. 아래 URL을 참고하여 구현하였음을 명시합니다. 데이터셋 : https://www.kaggle.com/daggysheep/find-a-car-park 참고소스 : https://www.kaggle.com/jonghyunlee1993/kaggle-park-lot-full-free-class-activation-mapping 구현 import os import glob import scipy import numpy as np import pandas as pd import matplotlib.pyplot as plt import cv2 import tensorflow as tf from keras.models impo.. 2022. 2. 18.
바코드, QR 코드 인식할 수 있을까? 개요 pyzbar 패키지를 활용하여 바코드, QR 코드를 인식해보는 실험입니다. 바코드, QR 코드 생성기 : https://wepplication.github.io/tools/barcodeGen/ 구현 from pyzbar import pyzbar import cv2 import matplotlib.pyplot as plt import os BASE_DIR = os.getcwd() IMG_DIR = os.path.join(BASE_DIR, 'images') sample_img = cv2.imread(os.path.join(IMG_DIR, 'sample.png')) plt.imshow(sample_img) gray_img = cv2.cvtColor(sample_img, cv2.COLOR_BGR2GRAY).. 2022. 2. 16.
지문을 인식할 수 있을까? 개요 사람의 지문을 인공지능 모델로 인식해보는 실험입니다. 아래 URL을 참고하여 구현하였음을 명시합니다. 데이터셋 : https://www.kaggle.com/ruizgara/socofing 참고소스 : https://www.kaggle.com/prasanjeetkeshriii/biometrics-project 구현 import numpy as np import matplotlib.pyplot as plt import keras from keras import layers from keras.models import Model from sklearn.utils import shuffle from sklearn.model_selection import train_test_split from imgaug .. 2022. 2. 15.
이미지 캡차를 인식할 수 있을까? 개요 여러 사이트를 돌아다녀보면 아래와 같이 흔히 찾아 볼 수 있는 이미지 캡차 (CAPTCHA)를 인공지능 모델로 인식해보는 실험을 하려고한다. ※ CAPTCHA는 HIP 기술의 일종으로, 어떠한 사용자가 실제 사람인지 컴퓨터 프로그램인지를 구별하기 위해 사용되는 방법이다. 아래 URL을 참고하여 구현하였음을 명시한다. 데이터셋 : https://github.com/AakashKumarNain/CaptchaCracker/raw/master/captcha_images_v2.zip 참고 소스 https://www.kaggle.com/xinlux/cnn-rnn-ctc https://keras.io/examples/vision/captcha_ocr 구현 import os import cv2 import num.. 2022. 2. 14.
이미지 유사도 embedding 검증 목표resnet50 모델을 사용하여 이미지 전체 데이터에 관해서 임베딩을 하여 유사한 거리에 있는 이미지를 추천한다.사전준비이미지 분류가 되어있는 폴더 안에 이미지가 N장 준비되어 있다. 이 파일들을 가지고 데이터셋을 생성하고 유사도를 검증해 볼 생각이다.데이터셋 준비from mpl_toolkits.mplot3d import Axes3D from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np import pandas as pd import os import sklearn# 데이터가 많으므로 테스트에서는 1000건만 처리.. 2021. 12. 29.
conda install vs pip install ※ 퍼가실때 반드시 출처를 남겨주세요 개요 conda 패키지 관리자와 pip 패키지 관리자를 같이 사용하면서 두 개의 차이점에 대해서 알지 못하고 사용하는 분들이 많이 안타까워 알고있는 지식을 최대한 공유하여 남기고자한다. FAQ conda install 하면 pip install도 별도로 해줘야하나요? (pip install하면 conda install도 별도로 해줘야하나요?) → python 패키지는 site-packages 같은 디렉토리를 공유하고 있으므로 한쪽만 install 을 해주면 됩니다. conda vs pip 차이점은 무엇인가요? → 차이점은 패키지를 받아오는 주소가 다르고 설치하는 모듈과 패키지가 다를 수 있습니다. pip로 했을 경우 python에 해당하는 패키지만 설치하는것에 반해서.. 2021. 9. 25.
패션 의류 분류 (Fashion Classification) 목적 패션 데이터셋을 활용하여 가방, 셔츠, 스커트 등을 분류합니다. 환경설정 데이터 파이프 라인 : 데이터 로드시 과부하를 완화하기 위하여 데이터 파이프라인을 구축합니다. 조기종료 설정 : 학습이 개선되지 않으면 조기종료 콜백을 설정하여 중지합니다. TensorBoard 모니터링 : TensorBoard와 연결하여 학습 진행 상태를 모니터링 할 수 있도록 합니다. 데이터셋 아래와 같이 dataset 디렉토리 안에 가방, 셔츠, 스커트의 폴더별로 나누어져있으며 이미지 파일이 있습니다. ├─dataset │ ├─bag │ ├─shirt │ └─skirt └─runs └─fashion_classification 데이터 로드 import os import time from PIL import Image imp.. 2021. 9. 15.
Fashion MNIST 데이터 로드 import torch import torch.nn as nn import torchvision.datasets as datasets import torchvision.transforms as transforms import matplotlib.pyplot as plt from torchvision.utils import make_grid import numpy as np from torch.utils.data import DataLoader import os import time batch_size = 100 num_epochs = 50 learning_rate = 0.0001 device = torch.device('cuda') if torch.cuda.is_available() else.. 2021. 9. 12.
PyTorch Tensorboard 시각화 기본적인 샘플링 from torch.utils.tensorboard import SummaryWriter import numpy as np writer = SummaryWriter() for n_iter in range(100): writer.add_scalar('Loss/train', np.random.random(), n_iter) writer.add_scalar('Loss/test', np.random.random(), n_iter) writer.add_scalar('Accuracy/train', np.random.random(), n_iter) writer.add_scalar('Accuracy/test', np.random.random(), n_iter) tensorboard --logdir ru.. 2021. 9. 12.
torchsummary 모델 정보 요약 CNN for MNSIT import torch import torch.nn as nn import torch.nn.functional as F from torchsummary import summary class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.conv2_drop = nn.Dropout2d() self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = F.rel.. 2021. 9. 12.
Object Detection 개념 Object Detection 이란? 객체 탐지(Object Detection)는 컴퓨터 비전 기술의 세부 분야중 하나로써 주어진 이미지내 사용자가 관심 있는 객체를 탐지하는 기술이다. 활용분야 자율 주행 자동차 CCTV 녹화 마스크 얼굴 인식 패션 분야에서 상의, 바지, 원피스등 해당 객체 인식 모델 형태 One-Stage Detector vs Two-Stage Detector 간단히 말해서 Classification (분류), Regional Proposal (영역제안)을 동시에 실행을 하는가 아니면 순차적으로 실행을 하는가에 대한 방법의 차이이다. One-Stage Detector Two-Stage Detector 모델 형태 정확도 속도 One-Stage Detector 정확도 ↓ 속도 ↑ Two-.. 2021. 9. 12.
Faster-RCNN 목적 패션 데이터셋을 활용하여 모자, 상의, 하의 등의 객체를 탐지하는 코드를 실행합니다. 데이터 로드 로드하려는 csv 파일 안에 패션에 대한 이미지 URL, 종류, 영역 좌표의 정보가 포함되어 있습니다. 이 정보를 로드하여 시각화하고 확인해봅니다. import os import json import pandas as pd import numpy as np from urllib.parse import * from requests.utils import requote_uri import requests from tqdm.notebook import tqdm BASE_DIR = os.getcwd() annotations_path = os.path.join(BASE_DIR, 'annotations') ima.. 2021. 9. 9.
728x90
반응형