Инженер с помощью ИИ автоматически сбрасывает панамы из окна на головы жителям Нью-Йорка

от автора

Инженер из Нью-Йорка презентовал необычный проект DropofaHat.zone. Он применил ИИ, чтобы сбрасывать из окна своей квартиры панамы прямо на головы проходящих внизу пешеходов. 

По словам автора проекта, любой желающий может выбрать удобное ему время, оплатить панаму и задержаться на 3 секунды под его окном, чтобы получить товар. Головные уборы вылетают из окна с 5-минутным интервалом.

Энтузиаст использовал Raspberry Pi, двигатель Adafruit, а также онлайн-инструмент для маркировки изображений Roboflow. Он остановился на лёгких панамках с пропеллерами.

Чтобы механизм спуска панам через окно работал, пришлось использовать немного пряжи. Она обёрнута вокруг шагового двигателя.

Когда ИИ определяет, что кто-то стоит под окном, запускается отдельный файл Python «dropHat.py» на Raspberry Pi.

import time     import board     import digitalio      enable_pin = digitalio.DigitalInOut(board.D18)     coil_A_1_pin = digitalio.DigitalInOut(board.D4)     coil_A_2_pin = digitalio.DigitalInOut(board.D17)     coil_B_1_pin = digitalio.DigitalInOut(board.D23)     coil_B_2_pin = digitalio.DigitalInOut(board.D24)      enable_pin.direction = digitalio.Direction.OUTPUT     coil_A_1_pin.direction = digitalio.Direction.OUTPUT     coil_A_2_pin.direction = digitalio.Direction.OUTPUT     coil_B_1_pin.direction = digitalio.Direction.OUTPUT     coil_B_2_pin.direction = digitalio.Direction.OUTPUT      enable_pin.value = True      def forward(delay, steps):         i = 0         while i in range(0, steps):             setStep(1, 0, 1, 0)             time.sleep(delay)             setStep(0, 1, 1, 0)             time.sleep(delay)             setStep(0, 1, 0, 1)             time.sleep(delay)             setStep(1, 0, 0, 1)             time.sleep(delay)             i += 1      def setStep(w1, w2, w3, w4):         coil_A_1_pin.value = w1         coil_A_2_pin.value = w2         coil_B_1_pin.value = w3         coil_B_2_pin.value = w4      # Run a full rotation (512 steps) with a 5 millsecond delay     forward(5, int(512))                 

Отдельной задачей стало обучение ИИ. Энтузиаст записал на камеру несколько минут видео со своего окна, чтобы научить инструмент выявлять пешеходов без головных уборов. Он опубликовал обучающий датасет из 133 аннотированных изображений и уже работающую модель

Программа Python на компьютере распознаёт, когда кто-то стоит в обозначенном месте под окном 3 секунды подряд. Спустя этот период на Raspberry Pi запускается функция dropHat.py.

import cv2 import time import paramiko  from inference_sdk import InferenceHTTPClient  CLIENT = InferenceHTTPClient(     api_url="https://detect.roboflow.com",     api_key="API_KEY" )  def ssh_execute(host, port, username, password, command):     client = paramiko.SSHClient()     client.load_system_host_keys()     client.set_missing_host_key_policy(paramiko.WarningPolicy)      try:         client.connect(host, port=port, username=username, password=password)         stdin, stdout, stderr = client.exec_command(command)                  # Print command output         print(stdout.read().decode().strip())                  if stderr.read().decode().strip():             print('Error:', stderr)     finally:         client.close()  video = cv2.VideoCapture(0)  # 0 usually refers to the webcam  consec_detections = 0 while True:     ret, frame = video.read()      # Directly pass the frames to the Roboflow model     result = CLIENT.infer(frame, model_id="drop-of-a-a-hat/2")      # Check if a prediction is made     if 'predictions' in result and len(result['predictions'])>0:         consec_detections += 1     else:         consec_detections = 0      # If there are three consecutive detections, perform an action (like printing a message)     if consec_detections >= 3:         # DROP THE HAT         ssh_execute('raspberry.local', 22, 'pi', 'raspberry', 'python3 dropHat.py')         # Reset counter         consec_detections = 0      # Delay before the next frame for 1 second     time.sleep(1) 


ссылка на оригинал статьи https://habr.com/ru/articles/823880/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *