Bu Yazıserisinde Yolo v5 Algoritmaının Test aşamalarıalınmıştır.Birönceki Yazıserilerimizde Yolo v5 Algoritmaıiçin nasıl veri seti hazırladığımızıve nasıl eğitim yaptığımızıöğrenmiştik.Şimdi ise test aşamasınıflask kütüphanesi ile beraber basit Bir web arayüzüzüzerinden göreceğiz.veri seti hazırladığımızı eğitim yaptığımızı
1.Veri Seti Hazırlama,Hazır Veri Setiİndirme
2.Eğ计划
3.测试
Birönceki YazımıZdan Hatırlayacağınızüzere Yolo v5Için Bir Klasör hazıRlamıştık.Bu Klasörde“Detect t.py”isimli dosya hazır test kodur。aşağıDakişekill erde Klasör yapısıbu检测到.py dosyasında yapıLMASıgerekenler gösterilmiştir.
Fonksiyon Hali的测试参数
检测ında fonksiyonlar消除hazırşekilde glmektedir,yapmamız gereken tekşey doğru parametreleri pars etmektir。
不是:Eğtim dosyasında olduğu gibi“STORE_TRUE”değERI‘FALSE“,”STORE_FALSE“değERI”TRUE“ANLAMıNDADır.
153. Satırda eğitim sonucu kaydedilen modelin klasör yolu verilmelidir.
154. Satırda test datasetinin klasör yolu, tek bir imgenin/videonun klasör yolu verilmelidir. 0 ile webcam üzerinden gerçek zamanlı nesne tespiti yapabilirsiniz.
155. Satırda imge boyutu verilmelidir(genelde train ile aynısını veriyorum). İmgeler dikdörtgen şeklindeyse uzun kenar verilen boyuta indirgenir ve aspect ratio bozulmaz.
156. Satır Tahmin edilen nesnenin güven skorudur. Bu skordan küçük olan tahminler gösterilmez.
157. Satır "intersection over union" nesne üstünde birden fazla prediction box çizilme(NMS) thresholdudur.
158. Satırda bir imgede en fazla kaç nesnenin tespit edileceği verilmelidir.
159. Satırda GPU / CPU seçimi yapılmalıdır. Default bırakırsanız GPU tanımlıysa GPU çalışır.
160. Satırda Tespit edilen imge/videoların gösterilip, gösterilmeyeceği verilmelidir.
161. Satırda tespit edilen nesnelerin txtye koordinatlarının ve sınıflarının girilip girilmeyeceği verilmelidir.
162. Satırda güven skorlarının txtye dahil olup olmayacağı verilmelidir.
163. Satırda tespit edilen nesnelerin kırpılıp kaydedilip, kaydedilmeyeceği verilmelidir.
164. Satırda test edilen imgenin kaydedilip, kaydedilmeyeceği verilmelidir.
165. Satırda birden fazla sınıflı eğitim yaptıysanız, test aşamasında bunları filtrelemek istediğiniz sayıları vermeniz gerekmektedir.
166. Satırda Non-Max Supression fonksiyonunun çalışıp çalışmayacağı verilmelidir. (Non-Max Supression fonksiyonu aynı nesne üzerinde birden fazla prediction box çizdirmez)
169. Satırda test sonrası imgelerin kaydedileceği klasör yolu verilmelidir.
170. Satırda 169. Satırda verilen klasör yolunun içine özel klasörün adı verilmelidir. Dilerseniz boş bırakabilirsiniz.
171. Satırda aynı özel klasör ismi varsa otomatik olarak klasörleri sıralama özelliğinin aktif olup olmayacağı verilmelidir. (Örneğin 170. satırda 'Exp' isimli özel klasör açarsanız ve 171. satır True kalırsa ve tekrar kodu aktif ederseniz otomatik olarak 'Exp2' klasörü açılır. Test etmek istediğiniz bütün imgeleri aynı klasöre kaydetmek istiyorsanız False olarak bırakmalısınız.
172. 173. 174. Satırlarda ise tespit eidlen nesnenin prediction box kalınlığı, prediction box üzerinde sınıf ismi ve güven skorununun gösterilip, gösterilmeyeceği verilmelidir.
Böylelkle test aşamasındaki bütün parametreleriöğrenmişolduk.Şimdi bunu flask ile web arayüzden nasıl yapılakağınıgörelim.İlkönce Detect.py kodunu dışardan Bir fonksiyon tanımlayabilmek için parsşeklinden kaldırıp,Normal Bir fonksiyon haline getirdim ve video için haz hazırlanan fonksiyonlarıkaldırdım.bu kodu hem aşağıağıdaşekil olarak gösteressğim hem de büt
import time
from pathlib import Path
import cv2
import torch
import torch.backends.cudnn as cudnn
from numpy import random
import os
from models.experimental import attempt_load
from utils.datasets import LoadStreams, LoadImages
from utils.general import check_img_size, check_requirements, check_imshow, non_max_suppression, apply_classifier, \
scale_coords, xyxy2xywh, strip_optimizer, set_logging, increment_path, save_one_box
from utils.plots import colors, plot_one_box
from utils.torch_utils import select_device, load_classifier, time_synchronized
BU fonksiyonu‘YOLO_DETECT’Isimli Bir py dosyasının Içine yerleştirdim.
烧瓶AŞ图像
Şimdiye kadar anlatılan Herşey flask uyulamasıiçin Bir hazırlıktıaslında.YOLO v5 parametreleriniöğrendik ve Detect t.py dosyasınıdışardan tanımlayabilmek Için isteğimize göre fonksiyon haline getirdik.
Flask bildiğiniz gibi python diinde web frameworküdür ve bu Yazıserisindeçok deayına Girmeyessğiz.AMACımız web servisine Bir imge yüklemek ve bu imge ile yolo v5 sonucunu web serbisiüzerinde görmektir.
pip install Flask
pip install Werkzeug
Kodlarıile gerekli kütüphaneleri Indirmelisiniz.
YOLO Için hazırladığımız Klasöre Bir python dosyası,‘Templates’Isimli Bir Klasör,‘静电’Isimli Bir Klasör açmamız Gerekmektedir.不是:‘Templates’ISMI sabittir。Kullanacağımız Bir fonksiyon html Yazılarınıbu Klasörün içinden otomatik aramaktadır.
本Klasik olsun diye‘app.py’isimli bir python dosyasıoluşturum.
from flask import Flask, flash, request, redirect, url_for, render_template
import os
import cv2
from werkzeug.utils import secure_filename
from YOLO_DETECT import wheel_detect ## Fonksiyon haline getirilen detect.py kodu
from models.experimental import attempt_load
烧瓶kodunu hazırladıktan sonra 2 tane basit html koduna ihtiyacımız kalıyor.Bir tanesi imgelerin yüklenessğI html(‘index.html’),diğeri görüntülerin gösterilessğI html(‘display.html’)olarak düşünebiliriz。İInternette hazır olarak Birçok‘Upload file’örneğI mevcuttur.他说:“ğşşeyi yerle tirebilirsiniz‘e Hmen’e Hmen‘e Hmen istedi Istedi Iiniz Her Eyi yerle Ttirebilirsiniz.https://mdbootstrap.com/docs/standard/forms/file/Linkinden“上传文件”örneklerini görebilirsiniz。https://mdbootstrap.com/docs/standard/forms/file/
Flask Koduçalıştırıldıktan sonra Bize localhost döndürecektir.BU LOCALHOST LINKILE SITEMIZE ERIşebiliriz.
index.html:
Flask ile Yolo Uygulaması
https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
Flask ile YOLO v5 Nesne Tespit Algoritması
Yüklenecek İmgeyi Giriniz
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
- {{ message }}
{% endfor %}
{% endif %}
{% endwith %}
display.html:
Yolo Uygulaması
SONUÇLAR
İnput İmgesi
Output İmgesi
![User Image]({{ orjinal_image }})
![User Image2]({{ process_image }})
卡伊纳克拉(KAYNAKLAR)
https://github.com/ultralytics/yolov5
https://flask.palletsprojects.com/en/2.0.x/patterns/fileuploads/
https://www.w3schools.com/html/html_tables.asp
https://www.w3schools.com/html/html_images.asp
https://www.youtube.com/watch?v=pNqtDpcPJm0&list=PLIHume2cwmHfDUQ2t6f-Q7VCBvNSEAMAS
索努·圣拉
SonYazıserimizde biraz farklılık olsun diye flask uyulamasınıBasit Birşekilde ele aldık.Dilerseniz Kendi istekleriniz doğrultusunda Bunu değiştirebilir da Geliştirebilirsiniz.
Bütün Yaz https://github.com/ecevit2804/Yolov5_Mediumıserileriyle ilgili kodlarılinkinden bulabilirsiniz.https://github.com/ecevit2804/Yolov5_Medium
Sevgilerimle…
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/30/yolo-v5%e7%ae%97%e6%b3%95iile-nesne-tesit-egitimi-3-2/