회의 내용
- 라바콘, 박스 등의 아이콘으로 지도에 나타낼 수 있겠음
- 오늘 보여준 웹 UI를 바탕으로 일단 개발해 보는 것으로 함 → 개발하다가 아이디어가 있으면 추가하면 될 듯
- aws 를 서버로 이용하기로 함 → 조사를 해서 발표하기(저장소 쓰는 법, 모델학습하는 방법 등등…)
- 최소한으로 비용이 발생할 수 있는 방법을 조사하기 - 이미지는 클라우드 말고 로컬에 저장해서 불러오는 것으로 → 폴더 안에 max file 숫자를 정해야함
- 폴더 안에는 이미지를 200개 이상 저장할 때 못 담는다, 200개가 넘으면 새로운 폴더를 만들도록 → 저장할 때 logic을 이렇게 짜면 됨
- 200개씩 짤라서 폴더를 만들면, 속도가 느려지지는 않음
- 이미지를 순차적으로 가져와서 달리는 것 같은 영상처럼 보이게 하는 코드 작성하기 → 웹캠보다는 sequential한 이미지를 띄워서 detecting 하는 코드 작성해 주세요 (프로토타입 용인것 같음)
이미지를 순차적으로 가져와서 달리는 것 같은 영상처럼 보이게 하는 코드
(local 환경 너무 느려서 colab 환경에서 진행)
import os
os.chdir('/content/drive/MyDrive/finalproject')
os.getcwd()
ultralytics 설치
!pip install ultralytics
모델 지정
- 지금은 미리 코드 작성을 위해 yolo모델을 썼지만 나중에 웹에 올라갈 모델은 커스텀모델을 사용
from ultralytics import YOLO
# 모델 생성
model = YOLO("yolov8n.pt") # 객체 생성시 pretrained 모델파일의 경로를 지정. (없으면 다운로드)
# task => 설정한 모델 파일에 따라서 결정.
사진 디렉토리 안에 사진 개수 확인
# 디렉토리 내의 파일 개수 확인
folder_path = "/content/drive/MyDrive/finalproject/sequential img inference/sequential image" # sequential image들의 개수
file_list = os.listdir(folder_path)
file_count = len(file_list)
print(file_count)
이미지들을 리스트로 묶기
# /* -> sequential image 디렉토리 안의 모든 jpg파일을 지정
from glob import glob
img_list = glob("/content/drive/MyDrive/finalproject/sequential img inference/sequential image/*.jpg")
img_list
리스트로 묶인 이미지들 inference
# 리스트로 여러장 추론
r = model(img_list, save=True)
결과 sequential image들을 화면에 출력
import cv2
import os
from google.colab.patches import cv2_imshow
# 이미지가 저장된 디렉토리 경로
image_folder_path = "/content/drive/MyDrive/finalproject/runs/detect/predict"
# 디렉토리 내의 모든 이미지 파일 가져오기
image_files = [os.path.join(image_folder_path, file) for file in os.listdir(image_folder_path) if file.lower().endswith(('.png', '.jpg', '.jpeg'))]
# 이미지를 순차적으로 읽어들이고 화면에 표시
for image_file in image_files:
# 이미지 읽기
img = cv2.imread(image_file)
# 이미지 표시
cv2_imshow(img)
cv2.waitKey(500) # 500 milliseconds (adjust as needed)
cv2.destroyAllWindows()
-> 웹 UI에 올라가려면 사진이 영상처럼 출력되어야 할텐데 지금 위의 코드는 여러장의 사진이 같은 틀에서 영상처럼 움직이는게 아니라 한 장마다 스크롤이 내려가며 생성됨
Sequential_Image2Video
import cv2
import os
# 이미지가 저장된 디렉토리 경로
image_folder_path = "/content/drive/MyDrive/finalproject/runs/detect/predict"
# 디렉토리 내의 모든 이미지 파일 가져오기
image_files = [os.path.join(image_folder_path, file) for file in os.listdir(image_folder_path) if file.lower().endswith(('.png', '.jpg', '.jpeg'))]
# 첫 번째 이미지를 기준으로 비디오 프레임 크기 설정
first_image = cv2.imread(image_files[0])
height, width, layers = first_image.shape
video_path = "Sequential_img_inference_video.avi"
video_writer = cv2.VideoWriter(video_path, cv2.VideoWriter_fourcc(*"DIVX"), 10, (width, height)) # 10 -> FPS
# 이미지를 순차적으로 읽어들여 비디오로 저장
for image_file in image_files:
img = cv2.imread(image_file)
video_writer.write(img)
video_writer.release()
# # 저장된 비디오 파일 재생
# cap = cv2.VideoCapture(video_path)
# while True:
# ret, frame = cap.read()
# if not ret:
# break
# cv2_imshow(frame)
# if cv2.waitKey(500) & 0xFF == 27: # 500 milliseconds (adjust as needed), ESC to exit
# break
# cap.release()
# cv2.destroyAllWindows()
# 저장된 비디오 파일 삭제 (선택 사항)
# os.remove(video_path)'프로젝트 > Data_Analysis_Track_33_FinalProject' 카테고리의 다른 글
| FinalProject_08(개별 Action 수행, webcam detect + tracking) (0) | 2024.01.18 |
|---|---|
| FinalProject_07(개별 Action 수행, AWS 학습) (0) | 2024.01.16 |
| FinalProject_05(개별 Action 수행, Modeling) (2) | 2024.01.11 |
| FinalProject_04(개별 Action 수행) (0) | 2024.01.10 |
| FinalProject_03(개별 Action 수행, 모델링 webcam FPS 측정 코드) (1) | 2024.01.08 |