Rumah > pembangunan bahagian belakang > Tutorial Python > ROBOFLOW - latih & uji dengan ular sawa

ROBOFLOW - latih & uji dengan ular sawa

WBOY
Lepaskan: 2024-08-27 06:01:32
asal
958 orang telah melayarinya

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


I - Set Data

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.

ROBOFLOW - train & test with python

Anda sudah boleh menggunakan set data roboflow awam, untuk semakan ini https://universe.roboflow.com/

II - Latihan

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
Salin selepas log masuk

Untuk mencipta model, anda perlu menggunakan algoritma YOLO, yang boleh anda import dengan pustaka ultralytics.

pip install ultralytics
Salin selepas log masuk

Dalam skrip saya, saya menggunakan arahan berikut :

py train.py api-key project-workspace project-name project-version nb-epoch size_model
Salin selepas log masuk

Anda mesti mendapatkan :

  • kunci akses
  • ruang kerja
  • nama projek roboflow
  • versi set data projek
  • bilangan zaman untuk melatih model
  • saiz rangkaian saraf

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()
Salin selepas log masuk

III - Paparan

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()
Salin selepas log masuk

Untuk menganalisis ramalan, anda boleh mendapatkan model json seperti berikut.

 results = model.track(frame, persist=True)
 results_json = json.loads(results[0].tojson())
Salin selepas log masuk

Atas ialah kandungan terperinci ROBOFLOW - latih & uji dengan ular sawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan