문과생AI 2주차 과제 + 개인 프로젝트 질문

2주차까지 강의는 코딩애플로 대체했습니다. (강의보다는 실습이 더 재밌어서 손이 잘 안가네요..ㅠ)


복습 문제 틀린 내용은 아래와 같습니다.
9. f = 포매팅인 것을 몰랐네요..

  1. [“바나나”, “체리”, “딸기”, “포도”] 인줄 알았는데 틀렸군요..

연습문제 1

# 빈 리스트 생성
numbers = []

# 사용자로부터 5개의 숫자 입력받기
for i in range(5):
    num = int(input(f"숫자 {i+1}을 입력하세요: "))
    numbers.append(num)

# 입력받은 숫자들의 합 계산
total = sum(numbers)

# 결과 출력
print("입력한 숫자들:", numbers)
print("숫자들의 합:", total)

클로드가 만들어준 코드는 입력한 숫자들을 출력한 후 숫자들의 합을 출력하는 반면, 정답의 코드는 숫자들의 합만 출력합니다.

연습문제2

import requests

def get_weather(api_key, city):
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}"
    
    try:
        response = requests.get(url)
        response.raise_for_status()  # 요청이 실패한 경우 예외 발생
        
        data = response.json()
        
        # 필요한 정보 추출
        temp = data["main"]["temp"]
        temp_celsius = temp - 273.15  # 켈빈 온도를 섭씨 온도로 변환
        humidity = data["main"]["humidity"]
        weather_main = data["weather"][0]["main"]
        weather_description = data["weather"][0]["description"]
        city_name = data["name"]
        
        # 사용자에게 친숙한 형태로 출력
        print(f"도시: {city_name}")
        print(f"온도: {temp_celsius:.2f}°C")
        print(f"습도: {humidity}%")
        print(f"날씨: {weather_main} ({weather_description})")
        
    except requests.exceptions.RequestException as e:
        print("API 요청 실패:", e)

# OpenWeatherMap API 키
api_key = "YOUR_API_KEY"

# 날씨 정보를 가져올 도시 이름
city = "Seoul"

get_weather(api_key, city)


차이점에 대해 클로드에게 물어본 결과

  1. API 요청 URL 생성:

    당신의 코드는 units=metric 매개변수를 추가하여 온도를 섭씨 단위로 직접 받아오고 있습니다.

  2. 예외 처리:

    • 내가 제공한 코드는 try-except 블록을 사용하여 요청 예외를 처리하고 있습니다.

    • 당신의 코드는 weather_data["cod"] != "404"를 사용하여 요청이 성공했는지 확인하고 있습니다.

  3. 온도 단위 변환:

    • 내가 제공한 코드는 켈빈 온도를 섭씨 온도로 변환하는 과정을 포함하고 있습니다.

    • 당신의 코드는 units=metric 매개변수를 사용하여 온도를 섭씨 단위로 직접 받아오므로 변환이 필요하지 않습니다.

  4. 출력 형식:

    • 내가 제공한 코드는 도시 이름, 온도, 습도, 날씨 상태를 개별적으로 출력하고 있습니다.

    • 당신의 코드는 유사한 형식으로 출력하지만, 도시 이름을 먼저 출력하고 있습니다.

  5. 도시 정보 찾을 수 없는 경우:

    • 당신의 코드는 도시 정보를 찾을 수 없는 경우 별도의 메시지를 출력하고 있습니다.


실제 해보고 싶은 프로젝트: YOLO 를 사용한 아이돌 멤버 별 하이라이트 영상 생성하기

시도한 것

  1. 클로드를 사용해서 open CV 와 YOLOv5 설치
    프롬프트
    > 너는 세계 최고의 파이썬 개발자이고, 현재 아래와 같은 환경에 놓여있다.

    • 노트북의 리소스는 최소한으로 사용해야한다.

    • 파이썬과 pycharm 만 설치되어있는 맥북을 가지고 있다.

    • 아이돌 풀라이브영상을 mp4 파일로 가지고 있다.

    • Yolo를 사용해서 아이돌 라이브공연에서 아이돌이 5명이라면 각각의 아이돌에 대한 tracking 영상 5개가 추출되어야 한다.

    • 각각의 아이돌 멤버가 누군지 학습될 필요는 없고 각각의 사람이 구분되어서 tracking 하여 zoom in, zoom out 하면서 편집된 영상을 추출해야한다.

    위 내용을 참고해서 코딩 입문자에게 바로 따라할 수 있을 정도로 쉽게 환경셋팅을하는 방법을 제시해주고 이후에 하이라이트 영상을 만들기 위해 어떻게 해야하는지 바로 따라할 수 있도록 순서대로 알려주고 그 이유와 근거를 함께 제시해줘

  2. highlight_generator.py 파일 만들어서 아래와 같은 코드 넣음 (클로드가 알려줌)
    > import cv2

    import torch

    # YOLOv5 모델 로드

    model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

    # 비디오 파일 열기

    video = cv2.VideoCapture('input_video.mp4')

    # 프레임 읽기

    while True:

    ret, frame = video.read()

    if not ret:

    break

    # YOLOv5 모델로 사람 감지

    results = model(frame)

    # 감지된 사람에 대해 바운딩 박스 그리기

    for result in results.xyxy[0]:

    if result[5] == 0: # 사람 클래스의 인덱스가 0이라고 가정

    x1, y1, x2, y2 = map(int, result[:4])

    cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)

    # 결과 프레임 출력

    cv2.imshow('frame', frame)

    if cv2.waitKey(1) == ord('q'):

    break

    # 자원 해제

    video.release()

    cv2.destroyAllWindows()

  3. SSL 문제가 생김 → 클로드 한테 물어봄

import ssl
ssl._create_default_https_context = ssl._create_unverified_context 
sudo /bin/bash -c "$(curl -sL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew update
brew upgrade
brew cleanup
brew doctor
pip install --upgrade certifi

위 세가지 중 첫 번째 방법으로 사용시에 해결 됨 (임시로 ssl 을 무시하는 방법으로 이해함)

  1. run 후 아이돌 영상 tracking 확인, 트래킹이 되네요..오

    idol_yolo5.mp4

향후 해야 할 과정

  1. 각 멤버 별 zoom-in, zoom-out 적용된 트래킹 영상 추출 및 다운로드

질문

  1. 생각보다 노트북 리소스를 너무 잡아먹는 것 같은데, 구글 클라우드 플랫폼으로 GPU를 사용하면 진입 장벽이 너무 높아지나요?

  2. SSL 에러에 대해 클로드에게 물어봤는데, 실제 해결한 방법은 임시 방편이라 생각됩니다.
    제가 제대로 이해하고 시도한게 맞나요? 아래는 에러문구

  3. 테스트에서는 소수의 아이돌만 나오는 영상을 사용했는데, 실제로는 정면을 바라보는 아이돌과 다수의 등지고 있는 관객이 같이 있는 영상을 사용할 것 같습니다. 제가 직접 학습을 시켜야하는 경우가 필요할까요? 복잡도가 많이 올라가는지 궁금합니다.

  4. 이외에 리서치를 위해 알아야할 툴 혹은 키워드들 공유해주시면 큰 도움이 될 것 같습니다.


후속글이 궁금하다면?

👉 학생 때 C++ D 받았었는데, AI 문과생으로 코딩이 너무 재미있어졌어요


#문과생도 AI 2주차

4
3개의 답글

👉 이 게시글도 읽어보세요

모집 중인 AI 스터디