La tecnologia de detecció d'objectes de la visió per ordinador és essencial per a nombroses aplicacions. L'utilitzem en robòtica, equips de vigilància, automòbils amb conducció autònoma i moltes més àrees. Per tant, podem trobar i reconèixer certes coses en una imatge o vídeo.
Un dels més coneguts algorismes d'identificació d'objectes és el YOLO (Només mires una vegada) conjunt de models. Aquests models estan creats per Ultralytics LLC.
La versió més recent d'aquesta sèrie és YOLOv5. A més, és el model d'identificació d'objectes més ràpid i precís del mercat. S'ha millorat molt la capacitat del model de generalitzar-se a noves dades. A més, conté moltes característiques que fan que funcioni millor que les iteracions anteriors.
YOLOv5 és ideal per a aplicacions en temps real, ja que pot processar imatges a una velocitat de fins a 1000 fotogrames per segon en una única GPU.
En aquest article, presentarem YOLOv5 i repassarem els detalls de les seves àrees d'aplicació.
Viatge de YOLO: De YOLO a YOLOv5
Joseph Redmon et al. va introduir originalment el YOLO, un conjunt de models d'identificació d'objectes, el 2016. El model YOLO inicial podria identificar objectes en temps real. Tanmateix, tenia una precisió baixa en comparació amb altres models en aquell moment.
Al llarg dels anys es van publicar diverses versions actualitzades de YOLO. I finalment, Ultralytics LLC va crear la nova edició de la sèrie YOLO, YOLOv5.
YOLOv5 és el model d'identificació d'objectes més precís i ràpid disponible actualment.
Característiques importants
Caixes d'àncora
YOLOv5 prediu quadres delimitadors per als objectes d'una imatge mitjançant quadres d'ancoratge. El model prediu quina de les moltes caixes predefinides amb diferents proporcions d'aspecte coincideix millor amb l'element de la imatge utilitzant caixes d'ancoratge. Són caixes predefinides.
A més, permeten a YOLOv5 reconèixer i trobar elements en una imatge amb precisió.
Augment de dades de mosaic
Quan s'entrena, YOLOv5 utilitza un mètode conegut com a mosaic augment de dades. Per desenvolupar imatges d'entrenament noves, el nostre model combina aleatòriament pegats de diverses fotos. Com a resultat, el model es torna més resistent i fiable. Per tant, s'arriba a generalitzar a noves dades i reduir el sobreajust.
Un canal d'entrenament únic
Un canal d'entrenament únic que barreja supervisat i aprenentatge sense supervisió s'utilitza.
Així, el model aprèn d'una mostra més petita i utilitza de manera eficaç l'entrada sense etiquetar. Això augmenta el rendiment del model i millora la seva capacitat de generalització a noves entrades.
Capes que són residuals i no residuals
L'arquitectura de YOLOv5 combina capes que són residuals i no residuals. En permetre que els gradients flueixin a través de les capes, les capes residuals ajuden el model a aprendre característiques difícils. A més, les capes no residuals proporcionen al model una comprensió més completa de la imatge d'entrada. Com a resultat, YOLOv5 pot funcionar amb més precisió i eficàcia.
Com utilitzar YOLOv5
instal·lació
La instal·lació de YOLOv5 es pot completar ràpidament amb pip. Pip és un gestor de paquets Python. Els procediments generals per instal·lar YOLOv5 són els següents:
1- Instal·leu PyTorch: com que YOLOv5 es basa en el framework PyTorch, primer heu d'instal·lar PyTorch.
pip install torch torchvision
2. Instal·leu CUDA: heu d'instal·lar CUDA si voleu executar YOLOv5 en una GPU.
3. Instal·leu YOLOv5: després de configurar PyTorch i CUDA, utilitzeu l'ordre següent per descarregar YOLOv5.
pip install yolov5
4-Després de la instal·lació de YOLOv5, heu de descarregar els pesos preentrenats. Els pesos entrenats prèviament estan disponibles al repositori Ultralytics GitHub.
Aneu a la part "pesos" del lloc web desplaçant-vos cap avall. Podeu descarregar peses prèviament entrenadas de la llista que podeu trobar aquí.
5. Seleccioneu els pesos que ja estiguin entrenats i que s'adaptin millor al vostre cas d'ús. El conjunt de dades o la versió particular de YOLOv5 que es van aprendre els pesos es poden utilitzar per restringir la llista.
6- Després d'escollir els pesos adequats, trieu el pes fent clic al botó "Descarrega" al costat. Els pesos es podran descarregar com a. fitxers pt.
7- Transfereix els pesos descarregats al directori. Aquí és on funcionarà el vostre script de detecció.
8- En aquest punt, podeu executar la detecció d'objectes a les vostres fotos o vídeos mitjançant els pesos entrenats prèviament al vostre script de detecció.
Preparar les dades
Heu de fer les accions següents per preparar les dades per utilitzar-les amb YOLOv5:
1. Recolliu les dades: el primer pas és recopilar les dades d'imatge o de vídeo que necessiteu detecció d'objectes. Les coses que voleu detectar han d'estar presents a les fotos o vídeos.
2- Formateu les dades: podeu importar fotos al vostre script si les feu servir. Heu de convertir un vídeo en una sèrie de fotos si teniu previst utilitzar-ne una. Podeu extreure els fotogrames d'una pel·lícula utilitzant una biblioteca com OpenCV.
import cv2
img = cv2.imread('path/to/image')
Amb la biblioteca OpenCV, podeu utilitzar l'ordre següent per convertir un vídeo en una sèrie d'imatges:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. Etiqueteu les dades: heu d'etiquetar les dades si feu servir el vostre conjunt de dades. Dibuixar quadres delimitadors al voltant dels elements que voleu identificar a cada fotograma d'una imatge. És el procés d'etiquetatge de les dades. Podeu utilitzar diverses eines per ajudar-vos amb aquesta operació, com ara LabelImg i RectLabel.
4- Heu de dividir les dades en conjunts d'entrenament i de proves després d'haver-les etiquetat. Això és crucial per avaluar el rendiment del vostre model.
5. Finalment, és possible que hàgiu de preprocessar les dades abans d'entrenar o provar. Això pot implicar escalar les imatges o vídeos, estandarditzar els valors de píxels o utilitzar mètodes per augmentar les dades.
Després de completar aquests passos, les vostres dades ja estan a punt.
Executeu l'script de detecció
Aquí hi ha una il·lustració d'un script de detecció que analitza una imatge i troba objectes.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
Processament posterior
La supressió no màxima és una de les tècniques de postprocessament més freqüents utilitzades en la detecció d'objectes (NMS). Utilitzem NMS per eliminar els quadres delimitadors superposats per al mateix objecte. Per executar NMS a les deteccions, podem utilitzar el mètode cv2.dnn.NMSBoxes() de la biblioteca OpenCV.
A continuació, es mostra un exemple de com es poden postprocessar les deteccions mitjançant NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
índexs = cv2.dnn.NMSBoxes (deteccions, confidències, conf_thres, nms_thres)
Visualització
En el cas de la visualització, podem tornar a utilitzar una biblioteca com OpenCV. Podem mostrar els quadres delimitadors al voltant dels objectes descoberts a la imatge o al vídeo d'origen. Per dibuixar els quadres delimitadors de la imatge, utilitzeu el mètode cv2.rectangle(). A continuació s'explica com veure les deteccions a la imatge original:
importar cv2
# Draw the bounding boxes on the image
per I als índexs:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
Aplicacions
YOLOv5 és un model fort d'identificació d'objectes. Per tant, podem utilitzar-lo en molts escenaris del món real. Un dels usos més destacats és en cotxes autònoms. YOLOv5 pot identificar elements en temps real com ara automòbils i semàfors.
En sistemes de vigilància, podem utilitzar YOLOv5 per reconèixer i fer un seguiment d'objectes en fluxos de vídeo en directe. A més, YOLOv5 pot ser un gran actiu en robòtica. Pot ajudar els robots a detectar i comprendre el seu entorn. Això és extremadament important per a activitats com la navegació i la manipulació.
YOLOv5 també es pot utilitzar en qualsevol indústria que requereixi detecció d'objectes, com ara la venda al detall, els esports, la medicina i la seguretat.
Conclusió
Finalment, YOLOv5 és la versió més recent i sofisticada de la família YOLO de detecció d'objectes models
. A més, és just dir que és el model de detecció d'objectes més precís disponible. Gràcies a la seva alta precisió i velocitat, podeu triar-lo amb seguretat per als vostres projectes de detecció d'objectes.
Resky Agus
Faig un primer diari sobre vehicle de detecció amb yolov5 i aquesta web m'ajuda a buscar informació sobre això.
M'interessa molt la IA.
si podeu, tinc moltes preguntes sobre la IA, potser em podeu ajudar
Gràcies