[deep learning] 딥러닝 3 : annotation & 언어모델

Hyeon·2024년 4월 18일

에이블스쿨

목록 보기
10/11

1.annotation

1)주제: 빵 탐지

2)class: donut,muffin,baguette,bagel,bread,cake,cookie,croissant,pretzel

3)방법:

1. 이미지를 직접 수집

: 한 이미지 내 여러 class 가 다양하게 존재하는 경우 상관없으나 작업시 복잡
: 최소 10장 이상의 이미지 수집 필요
(실제로는 몇백장 이상 필요)
: 이미지 형식 - jpg, png

2. 수집 데이터 (이미지 파일) train, valid 및

classes txt 파일 형성
: train 0.65 & test 0.35 비율로 배치 (강사님)

: train & valid 폴더 하위에 labels&images 폴더 생성
3.ybat.html 파일 실행

  • images : train 데이터 내 모든 이미지 파일 불러오기( train 마무리 이후, valid데이터 불러와 각각 진행)
  • classes : 각 클래스 정보가 담겨져 있는 txt 파일 선택
  • 상하 좌우 키를 활용하여 bounding box 만들기
    (delete는 bounding box 클릭 후 del 버튼 누르기)
  • 주의사항
    : 중간에 bounding box 한 labels날라갈 수 있으므로 꼭꼭 Save Yolo 클릭해서 저장하기
  • save yolo 파일 -> labels txt 파일 옮기기

3.yaml 파일 만들기

  • txt 파일 다음과 같이 저장
  • names에서 들여쓰기 필요
  • 저장 이후 colab에서 확장자명을 .txt이 아닌 .yaml 로 변경

4.colab 실행

  • train, valid, yaml 파일은 기존에 만들어두었던 파일
  • ipynb 파일 새로 생성하여 코드 구현

colab ipynb 파일 - 코드

5.결과 & 아쉬운점

결과

  • 동그라미 모양의 쉬운 쿠키를 test 데이터로 두고 진행했음에도 불구하고 결과가 나오지 않음
  • 에폭수 : 15 (1차) -> 에폭수 : 35 (2차)
    : 에폭수 늘렸지만 결과 동일. 적합 안됨

아쉬운점

  • 모델 층을 따로 만들지 않고 구성
  • 제일 중요한 건 데이터의 양. 100장 미만의 데이터가 train 과 valid 데이터로 되어 적은 수로 학습이 되었기에 당연히 저조한 결과가 나올 수 밖에 없음

추가사항

  • yolo 모델을 local에서 구현이 가능하나 , 현재 우리는 colab으로 진행

2.언어모델

1.ChatGPT API로 연결하기

  • API란?
    클라이언트 프로그램에게 요청을 받아서 서버로 전달, 서버는 요청 처리 이후 결과 데이터 API 전달
    API는 다시 데이터를 클라이언트로 전달

  • API 사용 방법: request & response
    request : api 주소 & api key & 요청 양식
    response : 결과 양식

  • 에이블스쿨 개인별로 api_key 제공
  • 코드
import pandas as pd
import numpy as np

import openai
from openai import OpenAI

api_key = my_key

#채팅 위한 함수 생성
def ask_chatgpt1(question):

    client = OpenAI(api_key = api_key)

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": question},
        ]
    )

    return response.choices[0].message.content
    
#사용

question = "세계에서 가장 큰 강은 무엇인가요?"
response = ask_chatgpt1(question)
print(response)

#역할부여

def ask_chatgpt2(sys_role, question):

    client = OpenAI(api_key = api_key)

    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": sys_role},
            {"role": "user", "content": question},
        ]
    )

    return response.choices[0].message.content
    
 #사용
sys_role = '당신은 아름답고 감동적인 시를 창작하는 데 영감을 주는 시적인 천재입니다. 당신의 시는 감정의 깊이, 자연의 아름다움, 인간 경험의 복잡성을 탐구하는 작품이며, 당신의 시를 읽는 이들의 마음을 움직입니다.'

question = "생성형 AI란 주제로 시를 지어줘. 운율에 맞춰서 작성해줘야 해."
response = ask_chatgpt2(sys_role, question)
print(response)

2.PandasAI로 데이터전처리 및 분석하기

  • 코드
!pip install pandasai

import pandas as pd
import numpy as np
from pandasai import SmartDataframe
from pandasai.llm import OpenAI

# openai key
api_key = my_key

# Sample DataFrame

# 샘플 데이터프레임 생성

#내장데이터가져오기
import seaborn as sns
sns.get_dataset_names()
tip=sns.load_dataset('tips')
tip.head(2)

#실습
data = pd.read_csv("https://raw.githubusercontent.com/DA4BAM/dataset/master/Carseat_simple.csv")
data.head()
#smart dataframe 생성
data_sdf = SmartDataframe(data, config={"llm": llm})
#단변량
query = "모든 연속형  변수의 boxplot과 histogram을 plot으로 그려줘 "
data_sdf.chat(query)

  • 주의사항
    : 이때 질의를 한꺼번에 또는 복잡하게 하면 오류가 발생할 수 있으므로 순차적으로 여러번 질의하면서 결과를 도출해야한다.
    : 오류 발생할 가능성 O -> 데이터프레임 변환부터 다시 시작하기

0개의 댓글