使用したGPU | 処理に要した時間 |
---|---|
GeForce RTX2080 | 2分41秒(161秒) |
GeForce GTX1050Ti | 3分38秒(218秒) |
import os import numpy as np import pandas as pd from tqdm import tqdm from sklearn.metrics import classification_report import torch # proxy os.environ["http_proxy"] = "http://ccproxyz.kanagawa-it.ac.jp:10080" os.environ["https_proxy"] = "http://ccproxyz.kanagawa-it.ac.jp:10080"
# GPUを使うかどうか USE_DEVICE = 'cuda:0' if torch.cuda.is_available() else 'cpu' device = torch.device(USE_DEVICE) # データがあるディレクトリ DATASET = 'forest-path-movie-dataset-main/forest-path-movie-dataset-main/'
# TorchHubからモデルを読み込む model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True) # モデルを推論用に設定する model.eval() model.to(device)
# データセットを読み込む df = pd.read_csv(DATASET + 'all_file.csv') df = df[df.when=='daytime'] # 昼間の画像のみ使う y_true, y_pred = [], [] with torch.no_grad(): for file, person in tqdm(zip(df.file,df.person), total=len(df)): filename = DATASET + file # 認識する画像ファイル名 results = model([filename], size=640) # 640pixelで認識する bbox = results.xyxy[0].detach().cpu().numpy() pred = 0 # 人物を認識したかどうか for preds in bbox: type = int(preds[5]) # 0~3が位置、4が可能性、5がクラス if type == 0: # type=0が'preson' pred = 1 # 人物を認識した break y_true.append(person) # 正しいタグ y_pred.append(pred) # 認識した、人物が写っているかどうかのタグ print(classification_report(y_true, y_pred)) # 分類スコアを表示