API 기초

TIL Day 42

By polaris0208

API & Gemerative Model use

API 및 모델의 사용방법 기초
¶ API 활용
¶ 생성형 모델 활용

API 활용

Model Serving

학습된 머신러닝 모델을 실제 애플리케이션에서 사용할 수 있도록 API를 통해 제공

RESTful API

  • REST(Representational State Transfer)
    • 아키텍처 스타일을 따르는 API로, HTTP를 통해 클라이언트와 서버 간에 데이터를 주고받는 방식
      • Get : 데이터 조회
      • Post: 데이터 추가, 등록
      • Put : 데이터 업데이트
      • Delete

Fast API

Python으로 RESTful API를 쉽게 구축할 수 있도록 도와주는 프레임워크

# pip install fastapi uvicorn

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
  return {"message": "hello test"}

# uvicorn main:app --reload
# 파일이름:실행할 기능 이름

# url/docs : API 문서 제공
# url/redoc : ReDoc 으로 문서화

환경 변수

  • 운영체제에서 사용자나 시스템의 상태정보를 저장하는 변수
  • 시스템 전반에 영향
  • 프로그램 실행 시 필요한 설정 정보 제공

Path

  • 실행 파일이 위치한 디렉토리 저장

Home

  • 사용자의 홈 디렉토리 지정

¶ Top

API 관리

Shell 설정 파일

  • 사용자가 Shell 환경 커스터마이즈
  • 영구적인 환경 변수 설정
  • zsh : zshrc
  • API Key를 등록해서 애플리케이션이 작동할 떄 호출
  • Python 코드로 호출
    • import os
    • api_key = os.environ.get("본인의_API_키")
vim ~/.zshrc # vim : 편집기, nano, code 등 다른 편집기도 가능
# i : 작성모드 -- INSERT --
# esc : 작성모드 종료
# : -> wq 입력 -> 엔터 : 저장 후 종료
# : -> q! 입력 -> 엔터 : 저장하지 않고 종료

export OPENAI_API_KEY="본인의_API_키" 
# API Key 등록
# 제일 밑에 줄 
source ~/.zshrc 
# 변경 사항 바로 적용
# 작성하지 않고 터미널 재시작 하면 적용
echo $OPENAI_API_KEY
# 확인

.env 파일

  • API Key 같은 민감정보를 저장한 뒤 로드해서 사용
  • 여러 환경에서 코드와 환경변수를 쉽게 관리 가능
  • 버전 관리 시스템에서 제외시켜야 함

Secret Management Service

  • 클라우드 비밀 관리 시스템
  • 높은 수준의 보안
  • 키 관리 자동화 기능

CI, CD 시스템

  • 배포 파이프 라인에서 민감 데이터 보호
  • 자동화 배포 프로세스에 포함되어 실수가 적음

API Key 를 암호화

  • 애플리케이션 시작 시에 해독

생성형 모델 활용

GPT-4o

ElevenLabs API

텍스트를 자연스러운 음성으로 합성하는 서비스 제공

음성

  • 사전 학습된 모델
  • 사용자의 목소리 사용 가능
    • 모델 유출 시 보이스 피싱 등에 악용될 가능성
    • 대략 시간 단위의 목소리 데이터 필요
    • 음성 데이터와 사용자의 목소리를 비교하는 검증 단계 필요

Pydub

  • 음성을 학습하는 기능과 관련된 패키지

Ultralytics YOLO

You Only Look Once 모델 : 실시간 객체 탐지 분양에서 널리 사용, 높은 정확도와 빠른 속도

특징

  • 속도 : 전체 이미지 한번에 처리하여 빠른 속도
  • 정확도 : 여러 객체가 있는 복잡한 이미지에서도 높은 정화도로 객체 탐지
  • 다양한 크기 : 다양한 크기의 이미지와 객체를 처리

객체 탐지 모델

  • 이미지 속의 객체의 위치와 클래스를 동시에 예측
  • 이미지 전체를 한번에 탐지
    • 단일 신경망(한번에 예측)
    • end to end(객체 탐지-분류가 한번에 이루어짐)
    • 전역 분석
S x S 크기의 그리드 셀(각 그리드 셀 중 한개만 객체 포함)
B 개의 경계 상자 
- 중심 좌표(x,y) 
- 상대 크기(w,h)
- cofindence(상자의 정확도-상자가 객체를 포함할 확률)
C 개의 클래스에 대한 확률 분포 예측

각 그리드 셀 : 각 경계상자 컨피던스 점수 x 클래스 확률 
최종점수 계산 -> 점수가 높은 상자 최종 예측
non-Maximum suppression 통해 여러개의 상자가 하나의 객체 탐지하는 경우 중복 제거
  • 저작권 문제로 버전 사용에 주의가 필요

예시

  • 다양한 형태의 image_path 를 입력해도 대응 가능
    • 예시 CCTV 객체 탐지
# pip install ultralytics

from ultralytics import YOLO
import cv2
from matplotlib import pyplot as plt

model = YOLO('yolov8n.pt')

image_path = '/Users/yeongung/AI/cats.jpg'

results = model(image_path)

result = results[0]

img_with_boxes = result.plot()

plt.imshow(cv2.cvtColor(img_with_boxes, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

¶ Top

Tags: TIL Tools