A tecnoloxía de detección de obxectos da visión por ordenador é esencial para numerosas aplicacións. Usámolo en robótica, equipos de vixilancia, automóbiles de condución autónoma e moitas máis áreas. Polo tanto, podemos atopar e recoñecer certas cousas nunha imaxe ou vídeo.
Un dos máis coñecidos algoritmos de identificación de obxectos é o YOLO (Só miras unha vez) conxunto de modelos. Estes modelos son creados por Ultralytics LLC.
A versión máis recente desta serie é YOLOv5. Ademais, é o modelo de identificación de obxectos máis rápido e preciso do mercado. Mellorouse moito a capacidade do modelo para xeneralizar a novos datos. Ademais, contén moitas funcións que fan que funcione mellor que as iteracións anteriores.
YOLOv5 é ideal para aplicacións en tempo real xa que pode procesar imaxes a unha velocidade de ata 1000 cadros por segundo nunha única GPU.
Neste artigo, presentaremos YOLOv5 e repasaremos os detalles das súas áreas de aplicación.
Viaxe de YOLO: De YOLO a YOLOv5
Joseph Redmon et al. introduciu orixinalmente o YOLO, un conxunto de modelos de identificación de obxectos, en 2016. O modelo inicial YOLO podía identificar obxectos en tempo real. Non obstante, tiña unha precisión baixa en comparación con outros modelos daquela época.
Varias versións actualizadas de YOLO foron lanzadas ao longo dos anos. E, finalmente, Ultralytics LLC creou a nova edición da serie YOLO, YOLOv5.
YOLOv5 é o modelo de identificación de obxectos máis preciso e rápido dispoñible actualmente.
Características importantes
Caixas de ancoraxe
YOLOv5 predice caixas delimitadoras para obxectos nunha imaxe usando caixas de ancoraxe. O modelo predice cal das moitas caixas predefinidas con varias relacións de aspecto se corresponde mellor co elemento da imaxe usando caixas de ancoraxe. Son caixas predefinidas.
Ademais, permiten a YOLOv5 recoñecer e atopar elementos nunha imaxe con precisión.
Aumento de datos de mosaico
Cando se adestra, YOLOv5 emprega un método coñecido como mosaico aumento de datos. Para desenvolver novas imaxes de adestramento, o noso modelo combina aleatoriamente parches de varias fotos. Como resultado, o modelo faise máis resistente e fiable. Polo tanto, conséguese xeneralizar a novos datos e diminuír o sobreajuste.
Un canal de formación único
Unha canalización de formación única que mestura supervisada e aprendizaxe sen supervisión úsase.
Así, o modelo aprende dunha mostra máis pequena e utiliza a entrada sen etiqueta de forma eficaz. Isto aumenta o rendemento do modelo e mellora a súa capacidade de xeneralización a novas entradas.
Capas que son residuais e non residuais
A arquitectura de YOLOv5 combina capas que son residuais e non residuais. Ao permitir que os gradientes fluyan a través das capas, as capas residuais axudan ao modelo a aprender características difíciles. Ademais, as capas non residuais proporcionan ao modelo unha comprensión máis completa da imaxe de entrada. Como resultado, YOLOv5 pode funcionar con máis precisión e eficacia.
Como usar YOLOv5
instalación
A instalación de YOLOv5 pódese completar rapidamente usando pip. Pip é un xestor de paquetes de Python. Os procedementos xerais para instalar YOLOv5 son os seguintes:
1- Instalar PyTorch: Como YOLOv5 está baseado no framework PyTorch, primeiro debes instalar PyTorch.
pip install torch torchvision
2. Instalar CUDA: debes instalar CUDA se queres executar YOLOv5 nunha GPU.
3. Instale YOLOv5: despois de configurar PyTorch e CUDA, use o seguinte comando para descargar YOLOv5.
pip install yolov5
4-Tras a instalación de YOLOv5, debes descargar os pesos preadestrados. Os pesos adestrados previamente están dispoñibles no repositorio de Ultralytics GitHub.
Vaia á parte "pesos" do sitio web desprazando cara abaixo. Podes descargar pesos adestrados previamente da lista que podes atopar aquí.
5. Seleccione os pesos que xa estean adestrados e que mellor se adapten ao seu caso de uso. O conxunto de datos ou a versión particular de YOLOv5 na que se aprenderon os pesos pódense utilizar para restrinxir a lista.
6- Despois de escoller os pesos adecuados, escolla o peso facendo clic no botón "Descargar" ao lado. Os pesos estarán dispoñibles para descargar como. ficheiros pt.
7- Transferir os pesos descargados ao directorio. Aquí é onde estará operando o seu script de detección.
8- Neste punto, pode executar a detección de obxectos nas súas fotos ou vídeos usando os pesos adestrados previamente no seu script de detección.
Preparar os datos
Debes realizar as seguintes accións para preparar os datos para o seu uso con YOLOv5:
1. Reúna os datos: o primeiro paso é reunir os datos de imaxe ou vídeo que necesitarás detección de obxectos. As cousas que desexa detectar deben estar presentes nas fotos ou vídeos.
2- Formatear os datos: pode importar fotos no seu script se as utiliza. Debes converter un vídeo nunha serie de fotos se pensas usar unha. Podes extraer os fotogramas dunha película usando unha biblioteca como OpenCV.
import cv2
img = cv2.imread('path/to/image')
Coa biblioteca OpenCV, pode usar o seguinte comando para converter un vídeo nunha serie de imaxes:
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. Etiqueta os datos: debes etiquetar os datos se estás a usar o teu conxunto de datos. Debuxando caixas delimitadoras arredor dos elementos que desexa identificar en cada cadro dunha imaxe. É o proceso de etiquetar os datos. Podes usar varias ferramentas para axudarche con esta operación, incluíndo LabelImg e RectLabel.
4- Debes dividir os datos en conxuntos de adestramento e probas despois de etiquetalos. Isto é fundamental para avaliar o bo rendemento do teu modelo.
5. Finalmente, quizais necesites preprocesar os datos antes de adestrar ou probar. Isto pode implicar escalar as imaxes ou vídeos, estandarizar os valores de píxeles ou usar métodos para aumentar os datos.
Despois de completar estes pasos, os teus datos están listos.
Executar o script de detección
Aquí tes unha ilustración dun script de detección que analiza unha imaxe e atopa obxectos.
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))
Post-procesamento
A supresión non máxima é unha das técnicas de postprocesamento máis frecuentes empregadas na detección de obxectos (NMS). Usamos NMS para eliminar caixas delimitadoras superpostas para o mesmo obxecto. Para executar NMS nas deteccións, podemos usar o método cv2.dnn.NMSBoxes() da biblioteca OpenCV.
Aquí tes un exemplo de como posprocesar as deteccións usando NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
índices = cv2.dnn.NMSBoxes (deteccións, confidencias, conf_thres, nms_thres)
Visualización
No caso da visualización, podemos volver utilizar unha biblioteca como OpenCV. Podemos mostrar os cadros delimitadores arredor dos obxectos descubertos na imaxe ou vídeo de orixe. Para debuxar os cadros delimitadores da imaxe, use o método cv2.rectangle(). Aquí tes como ver as deteccións na imaxe orixinal:
importar cv2
# Draw the bounding boxes on the image
para I en índices:
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
aplicacións
YOLOv5 é un modelo de identificación de obxectos forte. Polo tanto, podemos facer uso del en moitos escenarios do mundo real. Un dos usos máis destacados é nos coches autónomos. YOLOv5 pode identificar elementos en tempo real, como automóbiles e semáforos.
Nos sistemas de vixilancia, podemos usar YOLOv5 para recoñecer e rastrexar obxectos en emisións de vídeo en directo. Ademais, YOLOv5 pode ser un gran activo en robótica. Pode axudar aos robots a detectar e comprender o seu entorno. Isto é moi importante para actividades como a navegación e a manipulación.
YOLOv5 tamén se pode utilizar en calquera industria que requira detección de obxectos, como venda polo miúdo, deportes, medicina e seguridade.
Conclusión
Finalmente, YOLOv5 é a versión máis recente e sofisticada da familia YOLO de detección de obxectos modelos
. Ademais, é xusto dicir que é o modelo de detección de obxectos máis preciso dispoñible. Grazas á súa alta precisión e velocidade, pode elixilo con seguridade para os seus proxectos de detección de obxectos.
Resky Agus
Fago un primeiro diario sobre vehículos de detección con yolov5 e esta web axúdame a buscar información sobre iso.
Interésame moito a IA.
se podes, teño moitas preguntas sobre a IA, quizais poidas axudarme
Grazas