目的
這次主題是要使用 YOLO 8 來建立基本圖片辨識, 並且產出 csv 的資料檔案。
步驟
進入 COLAB
首先需要先進入 google 的 colab, 就可以省掉安裝 python 的環境, 全部的內容皆在雲端跑, 也不會吃電腦太多的資源。
安裝 YOLO 8
!pip install ultralytics這個指令主要是用來安裝 YOLO 的套件, 可以看見執行後會 import 很多套件, 用於之後圖片分類辨識的基礎
Import 需要的資源
from ultralytics import YOLO
import cv2
from matplotlib import pyplot as pyplot
讀取圖片
將圖片內容放入左邊的檔案當中


並且跑以下這段程式碼, 記得在前面加入 /content/ 才可以順利抓取到圖片路徑
street_image = '/content/Street.jpg'
載入模型 顯示結果
# 載入 YOLO 模型
model = YOLO('yolov8n.pt')
# 偵測圖片
results = model(street_image)
# 顯示結果
results[0].show()

其中可以看見, 在模型的會標示出 motorcycle 和 person 或者 car 還有 bicycle 幾種類別, 旁邊分別為信心指數, 指數越高, 代表模型對於該判斷越有信心!
匯出 csv 檔案
圖片中可以發現所有的分類都是透過框框來顯示, 所以 csv 檔案的結果也會是四個邊框的邊框的相對位置分別為 x1, y1, x2, y2 還有 condifence, 跟分類的標籤和名稱 class_id, class_name
import pandas as pd
# 提取邊界框資訊
boxes = result[0].boxes
# 將邊界框轉換成更容易處理的格式
bounding_box_data = []
for box in boxes:
x1, y1, x2, y2 = [round(float(val), 2) for val in box.xyxy[0]] # 取得邊界框座標
confidence = round(float(box.conf[0], 2) # 取得信心分數
class_id = int(box.cls[0]) # 取得類別 ID
class_name = model.names[class.id] # 取得類別名稱
bounding_box_data.append({
'x1': x1,
'y1': y1,
'x2': x2,
'y2': y2,
'confience': confidence,
'class_id': class_id,
'class_name': class_name
})
# 創建 DataFrame
df_detections = pd.DataFrame(bounding_box_data)
# 顯示在下方資訊
display(df_detections)
# 取得提取速度資訊
speed_data = results[0].speed

最後是匯出 csv 檔案, 則是會顯示在左邊的位置, 可以提供下載並使用。
# 如果您想將偵測結果儲存為 CSV 檔案:
df_detections.to_csv('yolo_detections.csv', index=False)
print("偵測結果已儲存到 yolo_detections.csv")
# 如果您想將速度資訊儲存為 JSON 或其他格式,可以自行處理
import json
with open('yolo_speed.json', 'w') as f:
json.dump(speed_data, f)
print("處理速度已儲存到 yolo_speed.json")
總結
這邊為簡單透過 YOLO 8 來分類台灣街景內的分類, 雖然模型具有泛化通用的分類, 但若想要提升精確度則需要做個別的訓練, 才能達到更高的水準。
















