☑️목차

오늘의 TIL 순서로는

  • 시작전 마음가짐
  • AI모델활용 강의
  • 머신러닝 비지도학습
  • 회고

입니다.

강의 학습과 복습 코드는 GITHUB링크 확인!

TIL/AI/AI5_6_8.ipynb at main · Onesword-Jang/TIL

 

TIL/AI/AI5_6_8.ipynb at main · Onesword-Jang/TIL

오늘 배운 것은?! Contribute to Onesword-Jang/TIL development by creating an account on GitHub.

github.com

 

 


☑️시작전 마음가짐

오늘은 AI모델활용 강의를 마무리하고 머신러닝 비지도학습을 복습할 계획입니다.

 

딥러닝, AI모델활용 강의를 들으며 다른 강의보다 이해가 안가고 어렵다고 생각이 드는 순간이 많았습니다.

 

이러한 부분은 파이썬을 처음 만났을 때 그리고 머신러닝을 처음 만났을 때도 마찬가지였지만, 현재 파이썬과 머신러닝의

부분을 복습을 진행하면 이해가 쉽고 학습속도가 굉장히 빨라진것을 느낌니다.

 

딥러닝과 AI모델활용 부분도 답답해도 참고 많은 복습으로 학습을 진행하면 내 것이 될거라 생각하고

 

화이팅!!!!

 

을 외치며 학습을 시작하겟습니다!!!


☑️AI모델활용 5주차 (6~8)

📚5-6

1. 사용 모듈 설명

1) ultralytics

YOLO

  • 객체 탐지 모델을 사용하기 위한 클래스이며, 다양한 메서드를 통해 *이미지, 비디오에서 객체를 인식하고 처리

2) cv2

  • OpenCV 라이브러를 사용하는데 필요한 모듈
  • 이미지, 비디오를 다루는데 유용(스트림 처리, 영상처리 기능)

3) PyQt5.QtWidgets

QApplication

  • PyQt5 애플리케이션을 초기화하고 실행하는 클래스
  • GUI 프로그램의 기본 인스턴스를 생성QLabel
  • 텍스트나 이미지를 표시하는 라벨 위젯QVBoxLayout
  • 위젯들을 수직으로 정렬할 때 사용QWidget
  • GUI 프로그램의 기본 창 역할을 하는 기본 위젯QPushButton
  • 클릭 가능한 버튼을 생성하는 위젯

4) PyQt5.QtCore

QTimer

  • 타이머를 설정하고 일정한 시간 간격으로 이벤트를 발생시키는 클래스

5) PyQt5.QtGui(이미지를 최적화 해서 빠르게 표시

QImage

  • 이미지 데이터를 처리하고 표현하기 위한 클래스(이미지를 포맷으로 저장, 변환 기능)QPixmap
  • 화면에 이미지를 표시하기 위한 클래스

2. super 메서드

  • super() 메서드는 파이썬에서 부모 클래스의 메서드나 속성을 자식 클래스에서 호출할 때 사용
  • 다중 상속이나 클래스 간 메서드 호출 순서를 정할 때 유용

3. yolov8x.pt

  • YOLOv8모델의 사전 훈련된 가중치 파일
  • 객체 동시 탐지 및 분류

4. if문의 is not None

  • 강의 코드를 예로 들면
  • self.capture 변수가 None이 아닐 때, 즉 유효한 값이 있을 때만 조건문이 실행되도록 하는 것
      # 웹캠 중지
      def stop_webcam(self):
          """웹캠을 중지하고 타이머를 멈춤"""
          self.timer.stop()
          if self.capture is not None:
              self.capture.release()
    5. release 메서드
  • 보통 리소스를 해제하는 데 사용되는 메서드
  • 주로 OpenCV와 같은 라이브러리에서 비디오 캡처 객체나 파일을 다룰 때 사용

6. 라이브러리 에러

  • dotenv 라이브러리를 pip install python-dotenv하고 성공적으로 설치했다고 알림을 받음
  • 파일에서 실행시키니 모듈 찾을 수 없음 에러가 나옴
  • 재설치, 디렉토리 경로 탐색, 파이썬 인터프리터 경로 탐색 등 많은 방법을 사용해 봄
  • 가상환경을 재구축해서 해결하기에는 다른 방법으로 해결 하고 싶었음
  • 혹시 VSCode로 실행하면 되나 싶어 진행해 본 결과 해결 완료
  • 맞지 않던 인터프리터 경로나 버젼 등이 VSCode로 실행하니 완벽해졋음
# 현재 디렉토리 확인
dir # bash
# 파이썬 스크립트에서 경로 확인
import os

print("Current Working Directory:", os.getcwd()) # 현재 작업 디렉토리 확인

if os.path.exists(".env"): # .env 파일 존재 여부 확인
    print(".env 파일이 존재합니다.")
else:
    print(".env 파일이 존재하지 않습니다.")
# 사용중인 파이썬 경로 확인
import sys
print(sys.executable)

📚5-7

1. 사용 모듈 설명

1) fastapi

FastAPI

  • python으로 RESTful API를 빠르고 쉽게 구축하게 한다.
  • @app.get() 또는 @app.post()와 같은 데코레이터를 API 엔드포인트를 정의하고 요청을 처리하기 위해 사용한다.Request
  • 클라이언트의 HTTP요청에 대한 정보 포함
  • 헤더, 경로 매개변수, 본문 데이터 등의 다양한 정보를 가져오거나 조작할 때 사용Form
  • HTML 폼 데이터를 처리하는 데 사용되며, POST 요청으로 전송된 데이터의 필드를 정의

2) fastapi.templating

Jinja2Templates

  • FastAPI에서 HTML 템플릿 렌더링을 지원하는 템플릿 엔진
  • HTML 파일 내에 Python 코드와 데이터를 삽입해 동적으로 웹 페이지를 생성 가능
  • templates 디렉터리에 HTML 파일을 저장하고, 데이터를 템플릿에 전달하여 동적으로 웹 페이지를 생성

3)fastapi.responses

HTMLResponse

  • FastAPI에서 HTML 형식의 응답을 반환하는 클래스
  • 콘텐츠를 클라이언트에 직접 반환해야 할 때 사용

4) fastapi.staticfiles

StaticFiles

  • FastAPI에서 정적 파일을 제공하는 데 사용
  • 지정한 경로에 저장된 정적 리소스를 엔드포인트에 연결하여 사용자가 접근할 수 있도록 한다. (css, javascript, images 등)
  • 요소는 숫자, 문자열, 다른 리스트 등 어떤 자료형이든 가능

5) OpenAI

  • OpenAI API를 Python에서 호출할 수 있도록 지원하는 패키지
  • AI 기반 응답을 생성하고, 텍스트를 생성하거나 요약하는 등의 작업을 수행할 수 있다.

2. append 메서드

  • 리스트(list) 자료형에서 사용되는 메서드
  • 리스트의 끝에 새로운 요소를 추가하는 역할

📚5-8

1. 사용 모듈 설명

1) import os

  • 운영체제와 상호작용하기 위한 표준 라이브러리
  • 파일경로, 환경변수, 설정, 디렉토리 관리 등

2) import requests

  • HTTP요청을 보내기 위한 라이브러리
  • GET, POST 등 다양한 HTTP 요청을 사용하여 웹 API와 상호작용 한다.

3) dotenv

  • .env 파일에서 환경 변수를 로드하는 함수

4) PyQt5

QtWidgets

  • PyQt5의 다양한 GUI 위젯을 포함한 모듈(버튼, 라벨, 텍스트 필드 등 포함)

5) PyQt5.QtMultimedia

QMediaPlayer

  • 오디오와 비디오 파일을 재생할 수 있는 클래스QMediaContent
  • QMediaPlayer에 재생할 미디어 파일이나 스트림을 설정하기 위한 클래스

6) transformers

AutoTokenizer

  • 텍스트를 모델이 이해할 수 있는 형태로 변환AutoModelForSeq2SeqLM
  • 시퀀스 간 변환을 수행하는 모델을 자동으로 로드하는 클래스
  • 텍스트 요약, 번역, 질문 생성 모델 등

7) pydub

AudioSegment

  • 오디오 파일을 처리할 수 있는 클래스
  • 길이 조절, 불륨 조절 등 편집 가능

8) pydub.playback

  • AudioSegment 객체를 재생하기 위한 함수
  • 오디오를 파이썬 코드에서 직접 재생할 수 있다.

9) import io

  • 입력과 출력을 위한 표준 라이브러리

📚DBSCAN

모델학습 및 예측

  • df['Cluster]로 지정하는 이유는 df['Cluster']는 각 데이터에 대해 군집 라벨을 예측하고 df데이터 프레임의 새로운 열에 저장한다.
df['Cluster'] = dbscan.fit_predict(X)
`

📚PCA

fetch_openml

  • 데이터셋 이름이나 ID를 기반으로 OpenML에 접근하여 데이터를 다운로드하고, Pandas DataFrame이나 numpy.array 형식으로 데이터를 반환

파라미터

  1. data_id: OpenML 데이터셋 ID를 지정하여 특정 데이터셋을 가져온다.
  2. name: 데이터셋의 이름을 지정할 수도 있고, 이름을 사용하는 경우 가장 최신 버전의 데이터셋이 로드된다.
  3. version: 데이터셋 버전을 지정하고, 생략 시 가장 최신 버전이 자동으로 선택
  4. as_frame: True로 설정 시 데이터셋을 Pandas DataFrame으로 반환하고, 기본값은 None으로 설정 된다.
  5. return_X_y: True로 설정하면, 독립변수와 종속변수를 (X, y) 형태의 튜플로 반환하여 모델 학습에 바로 사용할 수 있게 한다.

활용

  • 유명한 공개 데이터셋(MNIST, Iris, CIFAR-10 등)을 쉽게 가져와서 머신러닝 모델을 학습할 수 있다..
  • 다양한 데이터셋을 테스트하거나 비교하는 실험을 할 때 빠르게 데이터를 가져올 수 있어 편리하다.

☑️회고

AI모델활용 강의를 들으며

 

코드들이 매우 길기도하고 강사님께서 각 요소에 대하여 자세하게 알면 좋지만 어떻게 흘러가는지 파악만 해도 좋다고 말씀 하셔서 코드 전체를 해석하지는 않고 코드를 보면서 내가 궁금하고 모르는 부분에 대하여 정리를 했습니다.

 

또한 오늘 드디어 API키를 결제한 뒤 발급 받았습니다~.

 

그런데 여기서

 

.env 파일을 만들고 import os를 했을 때 문제를 만났습니다.

 

난 분명 아나콘다 프롬프트에서 pip install python-dotenv을 진행하고 성공적으로 설치가 완료되었다고 나오는데

 

왜!!

 

모듈에러가 나오는지!!! 그래서 해결 방법을 찾아보았고 결국 VSCode에서 .py파일을 만들어 진행하니 문제가 없음을 알게

되었습니다....(내 3시간이 사라졌어요ㅜ)

 

쥬피터 노트북만 사용하고 싶었는데 욕심을 버리고 텍스트형 AI모델 작업은 VSCode로 진행해야할 것 같습니다.

 

복습을 진행하며

 

모듈에러로 시간이 많이 소비되어 많은 복습을 진행하지 못했지만 열심히 진행했습니다.

 

DBSCAN은 이해가 되고 모르는 요소들이 없었습니다.

 

차원축소인 PCA를 학습하며 분명 보았었지만 기억이 나지 않는 것이 있었고

 

결정적으로

 

결과를 해석하지 못해 약간 갑갑한 마음이 있었습니다.

 

내일 해석하는 방법에 대하여 알아보는 시간을 가져야겟습니다.

 

마지막으로

 

포트폴리오를 도전하려고했지만 오늘도 다른 학습에 정신이 팔려 진행하지 못했습니다.

 

내일부터는 수준별 학습의 과제도 진행해야하니 더 바쁠텐데..

 

시간이 나면 진행하고 만약 못한다면 주말을 통으로 비워 시도해보야겟습니다.

+ Recent posts