Roboflow ialah platform untuk menganotasi imej untuk digunakan dalam AI pengesanan objek.
Saya menggunakan platform ini untuk C2SMR c2smr.fr, persatuan penglihatan komputer saya untuk menyelamat maritim.
Dalam artikel ini saya menunjukkan kepada anda cara menggunakan platform ini dan melatih model anda dengan python.
Anda boleh mendapatkan lebih banyak kod sampel pada github saya : https://github.com/C2SMR/detector
Untuk membuat set data anda, pergi ke https://app.roboflow.com/ dan mula menganotasi imej anda seperti yang ditunjukkan dalam imej berikut.
Dalam contoh ini, saya melencongkan semua perenang untuk meramalkan kedudukan mereka dalam imej masa hadapan.
Untuk mendapatkan hasil yang baik, pangkas semua perenang dan letakkan kotak pembatas tepat selepas objek untuk mengelilinginya dengan betul.
Anda sudah boleh menggunakan set data roboflow awam, untuk semakan ini https://universe.roboflow.com/
Untuk peringkat latihan, anda boleh menggunakan roboflow terus, tetapi pada kali ketiga anda perlu membayar, itulah sebabnya saya menunjukkan kepada anda cara melakukannya dengan komputer riba anda.
Langkah pertama ialah mengimport set data anda. Untuk melakukan ini, anda boleh mengimport pustaka Roboflow.
pip install roboflow
Untuk mencipta model, anda perlu menggunakan algoritma YOLO, yang boleh anda import dengan pustaka ultralytics.
pip install ultralytics
Dalam skrip saya, saya menggunakan arahan berikut :
py train.py api-key project-workspace project-name project-version nb-epoch size_model
Anda mesti mendapatkan :
Pada mulanya, skrip memuat turun yolov8-obb.pt, berat yolo lalai dengan data pra-senaman, untuk memudahkan latihan.
import sys import os import random from roboflow import Roboflow from ultralytics import YOLO import yaml import time class Main: rf: Roboflow project: object dataset: object model: object results: object model_size: str def __init__(self): self.model_size = sys.argv[6] self.import_dataset() self.train() def import_dataset(self): self.rf = Roboflow(api_key=sys.argv[1]) self.project = self.rf.workspace(sys.argv[2]).project(sys.argv[3]) self.dataset = self.project.version(sys.argv[4]).download("yolov8-obb") with open(f'{self.dataset.location}/data.yaml', 'r') as file: data = yaml.safe_load(file) data['path'] = self.dataset.location with open(f'{self.dataset.location}/data.yaml', 'w') as file: yaml.dump(data, file, sort_keys=False) def train(self): list_of_models = ["n", "s", "m", "l", "x"] if self.model_size != "ALL" and self.model_size in list_of_models: self.model = YOLO(f"yolov8{self.model_size}-obb.pt") self.results = self.model.train(data=f"{self.dataset.location}/" f"yolov8-obb.yaml", epochs=int(sys.argv[5]), imgsz=640) elif self.model_size == "ALL": for model_size in list_of_models: self.model = YOLO(f"yolov8{model_size}.pt") self.results = self.model.train(data=f"{self.dataset.location}" f"/yolov8-obb.yaml", epochs=int(sys.argv[5]), imgsz=640) else: print("Invalid model size") if __name__ == '__main__': Main()
Selepas melatih model, anda mendapat fail best.py dan last.py, yang sepadan dengan berat.
Dengan pustaka ultralytics, anda juga boleh mengimport YOLO dan memuatkan berat anda dan kemudian video ujian anda.
Dalam contoh ini, saya menggunakan fungsi penjejakan untuk mendapatkan ID bagi setiap perenang.
import cv2 from ultralytics import YOLO import sys def main(): cap = cv2.VideoCapture(sys.argv[1]) model = YOLO(sys.argv[2]) while True: ret, frame = cap.read() results = model.track(frame, persist=True) res_plotted = results[0].plot() cv2.imshow("frame", res_plotted) if cv2.waitKey(1) == 27: break cap.release() cv2.destroyAllWindows() if __name__ == "__main__": main()
Untuk menganalisis ramalan, anda boleh mendapatkan model json seperti berikut.
results = model.track(frame, persist=True) results_json = json.loads(results[0].tojson())
Atas ialah kandungan terperinci ROBOFLOW - latih & uji dengan ular sawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!