I am Charmie

メモとログ

yolov8 with anaconda

YOLOv8をAnacondaの仮想環境で使う

conda create -n yolov8 python=3.11
conda activate yolov8
mkdir yolov8
cd yolov8
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics/
pip install -r requirements.txt
pip install ultralytics
cd ..

sample code

import numpy as np

import plotly.express as px
import plotly.graph_objects as go

from ultralytics import YOLO


# モデルの読み込み
model = YOLO('yolov8n-seg.pt')
number_of_classes = len(model.names)
colors = px.colors.sample_colorscale("hsv", [n/(number_of_classes-1) for n in range(number_of_classes)])

# テスト
filename = 'https://ultralytics.com/images/bus.jpg'
results = model(
    filename,
    save=True,
    save_txt=True,
    save_conf=True
)
# テスト結果の描画
for i, result in enumerate(results):
    image = result.orig_img[..., ::-1]
    fig = px.imshow(image, color_continuous_scale='gray')
    fig.update_layout(coloraxis_showscale=False)

    # 検出結果の取得
    number_of_objects = len(result.masks.xy)
    print(f'検出した物体の総数: {number_of_objects}')
    object_classes = result.boxes.cls.int().tolist()
    object_confidences = result.boxes.conf.tolist()

    # 検出した物体一つ一つをプロット
    for j, mask in enumerate(result.masks.xy):
        print(f'  {j}番目の検出物体')
        print(f'    クラス: {model.names[object_classes[j]]}')
        print(f'    信頼度: {object_confidences[j]}')
        fig.add_trace(
            go.Scatter(
                x=mask[:, 0],
                y=mask[:, 1],
                marker=dict(
                    color=colors[object_classes[j]],
                ),
                name=f'{model.names[object_classes[j]]}: {object_confidences[j]}',
                mode='lines',
            )
        )
    fig.show()