見出し画像

YOLOv8の情報(自分用)

YOLOv8ドキュメントサイト

YOLOv8 GitHub

YOLOv8推論結果内容

PyTochサポートバージョン

PyTorch 1.7以上をサポート、2.0.0以上もサポートしている。

推論結果のBounding Boxへのアクセス方法

OpenCVを使用して自分でBounding Boxを描画する場合は、model関数のパラメータのshowFalseにします。resultsには検出した物体のBounding Box情報があるのでそれをもとに描画します。

# YOLOv8 Track
results = model.track(source=img, show=False) 

# Bounding Box
bbox = results[0].boxes.xyxy.cpu().numpy().astype(int)

results[0].boxes.xyxyの部分でcpu()というメソッドが呼び出されています。これは、PyTorchのテンソル(Tensor)をCPUメモリに移動するためのメソッドです。

PyTorchでは、テンソルの計算を高速化するためにGPUを使用することが一般的です。results[0].boxes.xyxyはGPUメモリに格納されたテンソルであり、cpu()メソッドを呼び出すことでこのテンソルをCPUメモリに移動させています。

なぜこの操作が行われるのかというと、一般的にOpenCVの関数はCPUメモリに格納されたデータを処理するため、GPUメモリに格納されたテンソルをOpenCVの関数に直接渡すことはできません。そのため、GPUメモリ上のテンソルをCPUメモリに移動させてから、それをNumPy配列に変換してOpenCV関数に渡す必要があります。

cpu()メソッドの呼び出しにより、results[0].boxes.xyxyのテンソルはCPUメモリに移動され、その後.numpy()メソッドを使用してNumPy配列に変換されています。そして、.astype(int)を使用して配列内の要素を整数型に変換しています。

このようにして、GPUメモリからCPUメモリにデータを移動し、NumPy配列として扱えるようにしているのです。


この記事が気に入ったらサポートをしてみませんか?