Технологія виявлення об’єктів комп’ютерного зору є необхідною для багатьох програм. Ми використовуємо його в робототехніці, обладнанні спостереження, безпілотних автомобілях і багатьох інших сферах. Таким чином, ми знаходимо та розпізнаємо певні речі на зображенні чи відео.
Один із найвідоміших алгоритм ідентифікації об'єктів - це YOLO Набір моделей (You Only Look Once). Ці моделі створені ТОВ «Ультралітика».
Остання версія цієї серії — YOLOv5. І це найшвидша та найточніша модель ідентифікації об’єктів на ринку. Здатність моделі узагальнювати нові дані була значно покращена. Крім того, він містить багато функцій, які роблять його ефективнішим, ніж попередні ітерації.
YOLOv5 чудово підходить для додатків у реальному часі, оскільки він може обробляти зображення зі швидкістю до 1000 кадрів на секунду на одному GPU.
У цій статті ми представимо YOLOv5 і детально розглянемо сфери його застосування.
Подорож YOLO: від YOLO до YOLOv5
Джозеф Редмон та ін. спочатку представив YOLO, набір моделей ідентифікації об’єктів, у 2016 році. Початкова модель YOLO могла ідентифікувати об’єкти в режимі реального часу. Однак він мав низьку точність порівняно з іншими моделями того часу.
Протягом багатьох років було випущено кілька оновлених версій YOLO. І, нарешті, компанія Ultralytics LLC створила найновіше видання серії YOLO, YOLOv5.
YOLOv5 — найточніша та найшвидша модель ідентифікації об’єктів, доступна на даний момент.
Важливі особливості
Анкерні коробки
YOLOv5 передбачає обмежувальні рамки для об’єктів на зображенні за допомогою опорних рамок. Модель передбачає, яка з багатьох попередньо визначених коробок із різними співвідношеннями сторін найкраще відповідає елементу на зображенні за допомогою опорних коробок. Це заздалегідь визначені поля.
Крім того, вони дозволяють YOLOv5 з точністю розпізнавати та знаходити предмети на зображенні.
Мозаїчне доповнення даних
Під час навчання YOLOv5 використовує метод, відомий як мозаїка збільшення даних. Щоб розробити свіжі тренувальні фотографії, наша модель випадковим чином поєднує фрагменти з кількох фотографій. В результаті модель стає більш витривалою і надійною. Таким чином, він отримує узагальнення для нових даних і зменшує переобладнання.
Унікальний навчальний конвеєр
Унікальний навчальний конвеєр, який поєднує контрольовані та непідконтрольне навчання використовується.
Таким чином, модель вивчає меншу вибірку та ефективно використовує немарковані вхідні дані. Це підвищує продуктивність моделі та покращує її здатність узагальнювати нові вхідні дані.
Шари залишкові та незалишкові
Архітектура YOLOv5 поєднує залишкові та незалишкові рівні. Дозволяючи градієнтам проходити через шари, залишкові шари допомагають моделі вивчати складні функції. Крім того, незалишкові шари забезпечують модель більш повним уявленням про вхідне зображення. В результаті YOLOv5 може працювати точніше та ефективніше.
Як використовувати YOLOv5
установка
Встановлення YOLOv5 можна швидко завершити за допомогою pip. Pip — це менеджер пакунків Python. Загальні процедури встановлення YOLOv5 такі:
1- Встановіть PyTorch: оскільки YOLOv5 базується на структурі PyTorch, ви повинні спочатку встановити PyTorch.
pip install torch torchvision
2. Встановіть CUDA: вам потрібно встановити CUDA, якщо ви збираєтеся запускати YOLOv5 на GPU.
3. Встановіть YOLOv5: після налаштування PyTorch і CUDA скористайтеся такою командою, щоб завантажити YOLOv5.
pip install yolov5
4-Після встановлення YOLOv5 ви повинні завантажити попередньо підготовлені ваги. Попередньо навчені ваги доступні в репозиторії Ultralytics GitHub.
Перейдіть до розділу «ваги» веб-сайту, прокрутивши вниз. Ви можете завантажити попередньо підготовлені ваги зі списку, який можна знайти тут.
5. Виберіть ваги, які вже навчені та найкраще відповідають вашому випадку використання. Щоб звузити список, можна використати набір даних або конкретну версію YOLOv5, для якої були отримані ваги.
6- Після вибору належної ваги виберіть вагу, натиснувши кнопку «Завантажити» поруч. Ваги будуть доступні для завантаження як. pt файли.
7- Перенесіть завантажені ваги до каталогу. Тут працюватиме ваш сценарій виявлення.
8- На цьому етапі ви можете запустити виявлення об’єктів на своїх фотографіях або відео, використовуючи попередньо навчені ваги у вашому сценарії виявлення.
Підготуйте дані
Ви повинні виконати такі дії, щоб підготувати дані для використання з YOLOv5:
1. Зберіть дані. Першим кроком є збір зображень або відеоданих, які вам знадобляться виявлення об'єкта. Те, що ви хочете виявити, має бути присутнім на фотографіях або відео.
2- Відформатуйте дані: ви можете просто імпортувати фотографії у свій сценарій, якщо ви їх використовуєте. Ви повинні перетворити відео на серію фотографій, якщо ви плануєте його використовувати. Ви можете витягнути кадри з фільму за допомогою бібліотеки, наприклад OpenCV.
import cv2
img = cv2.imread('path/to/image')
За допомогою бібліотеки OpenCV ви можете використовувати таку команду, щоб перетворити відео на серію зображень:
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. Позначте дані: Ви повинні позначити дані, якщо використовуєте свій набір даних. Намалюйте обмежувальні рамки навколо елементів, які ви хочете визначити в кожному кадрі зображення. Це процес маркування даних. Ви можете використовувати кілька інструментів, які допоможуть вам у цій операції, зокрема LabelImg і RectLabel.
4- Ви повинні розділити дані на навчальні та тестові набори після того, як ви їх позначили. Це має вирішальне значення для оцінки ефективності вашої моделі.
5. Нарешті, вам може знадобитися попередня обробка даних перед навчанням або тестуванням. Це може передбачати масштабування зображень або відео, стандартизацію значень пікселів або використання методів для збільшення даних.
Після виконання цих кроків ваші дані готові.
Запустіть сценарій виявлення
Ось ілюстрація сценарію виявлення, який аналізує зображення та знаходить об’єкти.
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))
Подальша обробка
Немаксимальне придушення є одним із найпоширеніших методів постобробки, які використовуються у виявленні об’єктів (NMS). Ми використовуємо NMS, щоб усунути рамки, що перекриваються, для того самого об’єкта. Щоб виконати NMS для виявлення, ми можемо використати метод cv2.dnn.NMSBoxes() бібліотеки OpenCV.
Ось приклад того, як виконати постобробку виявлень за допомогою NMS.
import cv2
# Perform Non-Maxima Suppression (NMS)
індекси = cv2.dnn.NMSBoxes(виявлення, конфіденції, conf_thres, nms_thres)
Візуалізація
У випадку візуалізації ми знову можемо використовувати бібліотеку на зразок OpenCV. Ми можемо відобразити обмежувальні рамки навколо виявлених об’єктів на вихідному зображенні чи відео. Щоб намалювати обмежувальні рамки зображення, використовуйте метод cv2.rectangle(). Ось як переглянути виявлення на вихідному зображенні:
імпорт cv2
# Draw the bounding boxes on the image
для I в індексах:
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
додатків
YOLOv5 — надійна модель ідентифікації об’єктів. Отже, ми можемо використовувати його в багатьох сценаріях реального світу. Одне з найпоширеніших застосувань — це безпілотні автомобілі. YOLOv5 може ідентифікувати об’єкти в реальному часі, наприклад автомобілі та світлофори.
У системах відеоспостереження ми можемо використовувати YOLOv5 для розпізнавання та відстеження об’єктів у потоках живого відео. Крім того, YOLOv5 може стати чудовим надбанням у робототехніці. Це може допомогти роботам виявляти та розуміти оточення. Це надзвичайно важливо для таких видів діяльності, як навігація та маніпуляції.
YOLOv5 також можна використовувати в будь-якій галузі, де потрібне виявлення об’єктів, як-от роздрібна торгівля, спорт, медицина та охорона.
Висновок
Нарешті, YOLOv5 — найновіша та вдосконалена версія сімейства YOLO виявлення об'єкта Моделі
. Крім того, можна сказати, що це найточніша модель виявлення об’єктів. Завдяки високій точності та швидкості ви можете сміливо вибирати його для своїх проектів з виявлення об’єктів.
Рескі Агус
Я веду перший журнал про транспортні засоби виявлення з yolov5, і цей веб-сайт допомагає мені шукати інформацію про це.
Мене дуже цікавить ШІ.
якщо ви можете, у мене є багато запитань про ШІ, можливо, ви можете мені допомогти
Дякую