YOLOv8s bildigenkänning är enastående, men att träna modellen är en viktig uppgift som du inte bör förbise.
YOLOv8 är en objektdetekteringsalgoritm i realtid som används flitigt inom området för objektdetektering. Det är en del av You Only Look Once (YOLO)-serien utvecklad av Ultralytics. Algoritmen spårar, upptäcker, segmenterar instanser, uppskattar poser och klassificerar objekt i bilder och videor. Det syftar till att vara snabbare och mer exakt än sina föregångare algoritmer.
Att använda YOLOv8 på experimentella datauppsättningar som CIFAR-10 och CIFAR-100 är ofta lättare för Proof-of-Concept-projekt (POC) än på verkliga datauppsättningar som kräver anpassade datauppsättningar.
Denna handledning kommer att leda dig genom stegen som är involverade i att träna YOLOv8 på anpassade data.
Konfigurera Python-miljön
Börja med att installera utvecklingsmiljön för projektet, följ instruktionerna nedan.
- Gå till terminalen och skapa en ny katalog med namnet yolov8projekt:
mkdir yolov8project
- Navigera till projektkatalogen och skapa en virtuell miljö:
cd yolov8project
python -m venv env - Aktivera sedan den virtuella miljön.
För att köra din kod måste du installera Ultralytics, ett bibliotek för objektdetektering och bildsegmentering. Det är också ett YOLOv8-beroende. Installera den använder pip genom att köra kommandot nedan.# På Windows
env/Scripts/activate# På Linux/macOS
source env/bin/activatepip installera ultralytics
- Detta kommando installerar YOLOv8:s förutbildade modell, yolov8n.pt. Testa modellen genom att köra kommandona nedan för att göra en upptäckt med förtränade vikter på din valda bild respektive video med YOLOv8.
Om allt fungerar perfekt kommer resultaten att finnas tillgängliga i yolov8projekt katalogen i körs/upptäcka/exp underkatalog.#bilddetektering
yolo task=detect mode=predict model=yolov8n.pt source="path/to/image.png"#videodetektering
yolo task=detect mode=predict model=yolov8n.pt source="path/to/video.mp4"
Förbereder din anpassade datamängd
Stegen för att förbereda din anpassade datauppsättning inkluderar datainsamling, datamärkning och datauppdelning (utbildning, testning, validering).
Datainsamling
Detta är processen att samla in en uppsättning bilder som har de objekt du vill upptäcka. Se till att använda högkvalitativa bilder, i fokus, och objekten är tydligt synliga. Du kan använda en mängd olika verktyg för att samla in bilder, till exempel Google Bilder, Flickr eller din egen kamera. Om du inte har en bilddatauppsättning, använd datauppsättningen från öppna bilder databas. Den här artikeln kommer att använda säkerhetsbilden för byggarbetsplatsen dataset från Kaggle.
Datamärkning
När du har samlat in dina bilder måste du märka dem. Detta innebär att man identifierar objekten i varje bild och deras begränsningsrutor. Det finns flera tillgängliga verktyg som hjälper dig att märka dina data, till exempel LabelImg, CVAT och Roboflow. Dessa verktyg är alla gratis att använda.
Dela upp data
För att träna maskininlärningsmodeller måste du dela upp din data i tränings- och testset. Försök att använda en delning på 70-30 % när du använder stora mängder data. Annars, håll dig till 80%-20% för att undvika att din modell över- eller underpassar.
Använda sig av delade mappar, för att slumpmässigt dela upp dina data i tåg-, test- och valideringsuppsättningarna med önskat uppdelningsförhållande.
Konfigurera YOLOv8 för din datamängd
Efter att ha märkt dina data, fortsätt att konfigurera YOLOv8 för din anpassade datauppsättning. Detta innebär att skapa en konfigurationsfil som anger följande:
- Vägen till dina träningsdata.
- Sökvägen till din valideringsdata.
- Antalet klasser du vill upptäcka.
Skapa en config.yaml-fil för att lagra konfigurationen:
väg:(datauppsättningkatalogväg)
tåg:(tågdatasetmappväg)
testa:(testadatasetmappväg)
giltig:(godkännandedatasetmappväg)# Klasser
nc:5# ersätt baserat på din datauppsättnings antal klasser
# Klassnamn
# ersätt alla klassnamn med dina egna klassnamn
namn:['klass1','klass2',"klass 3","klass 4",'klass 5']
Att skapa konfigurationsfilen är ett användbart sätt att strukturera och lagra de avgörande parametrarna för din datorseendemodell. Se till att uppdatera filen config.yaml enligt din datauppsättnings natur och struktur.
Se till att använda rätt sökvägar för dina datauppsättningar eftersom träning av modellen helt bygger på konfigurationsfilen.
Utbildning YOLOv8 om anpassade data
När du har skapat konfigurationsfilen, börja träna YOLOv8. Använd kommandoradsverktyget YOLOv8 för att träna din modell. Kommandoradsverktyget tar flera parametrar, såsom sökvägen till konfigurationsfilen, antalet epoker och bildstorleken enligt följande:
yolo task=detect mode=train model=yolov8n.pt data=path/to/config.yaml epochs=10 imgsz=640
Det finns flera delar till detta kommando.
uppgift anger typen av uppgift: detektera, segmentera eller klassificera. läge representerar en åtgärd: tåg, förutsäg, val, export, spår eller benchmark. modell är modellen att använda, i det här fallet, yolov8n.pt. Du kan också använda yolov8s/yolov8l/yolov8x.
epoker representerar antalet träningsomgångar (10). imgsz representerar bildstorleken (640). Bildstorleken ska alltid ställas in på en multipel av 32.
Här är ett exempel på resultatet du kan förvänta dig:
Tiden som används för träning beror på storleken på din datauppsättning, antalet epoker och antalet klasser du vill upptäcka. När träningsprocessen är klar kommer du att ha en tränad YOLOv8-modell som du kommer att använda för att upptäcka objekt i bilder och videor.
När träningen är klar, gör slutsatser med de nya vikterna, best.pt
yolo task=detect mode=predict model="runs/train/weights/best.pt" source="image.png"
Navigera till runs/train/exp/weights/bästa.pt katalog för att komma åt de specialtränade vikterna. YOLOv8 kommer att ha lagrat den förutsagda bilden i körs/upptäcka/exp underkatalog.
Utvärdera modellens prestanda
Du kan utvärdera prestandan för YOLOv8-modellen med hjälp av följande kommando som utvärderar modellen på en uppsättning testbilder:
yolo val model=yolov8n.pt data=path/to/config.yaml batch=1 imgsz=640
De förväntade resultaten är följande:
Utvärderingsprocessen kommer att generera olika mätvärden, såsom precision, återkallelse och F1-poäng. Precisionsmåttet mäter procentandelen objekt som är korrekt detekterade. Återkallningsmåttet mäter procentandelen objekt som YOLOv8 upptäcker. F1-poängen är ett viktat medelvärde av precisions- och återkallningsmåtten.
Distribuera din anpassade YOLOv8-modell
Testa prestandan för din YOLOv8-modell.
yolo detect predict model=path/to/best.pt source='path/to/image.jpg'
Utgången är som följer:
Spara sedan modellens vikter i en fil.
yolo export model=path/to/bästa.pt format=onnx
Använd filen för att ladda modellen i din applikation och använd den för att upptäcka objekt i realtid. Om du distribuerar modellen till en molntjänst, använd molntjänsten för att upptäcka objekt i bilder och videor som finns på tjänsten.
YOLOv8 Takeaway
Ultralytics-teamet har kontinuerligt förbättrat YOLO-seriens modeller. Detta har gjort dem till branschledare inom teknik för objektdetektering och datorseende.
YOLOv8 är en förbättrad modell som du kan använda för att hantera många typer av datorseendeprojekt.