[PYTHON] Haustierüberwachung mit Rekognition und Raspberry pi

Frohes neues Jahr. Ich bin Fujisaki, ein Hundeidiot. Ich habe gehört, dass Amazon Rekognition, ein Dienst, der Bilder erkennen kann, Ende letzten Jahres veröffentlicht wurde, also habe ich damit gespielt.

Motivation zur Schöpfung

Überwachungskameras, die einen menschlichen Sensor + Raspeltorte verwenden, werden seit langem hergestellt. Da jedoch viele Mülldaten mit wenig Bewegung aufgenommen werden, werden nur begrenzte Bilder wie Hunde und Familienmitglieder ausgewählt und belassen. Danach wünschte ich, ich könnte es löschen.

Vorbereitung

Machen Sie eine Überwachungskamera mit menschlichem Sensor & Raspberry Pi

Material

[[* Raspberry Pi *] Sommer! Von cigalecigales, wie man den Raspeltorte und den menschlichen Sensor verbindet und wie man den Betrieb des Sensors anpasst! Lassen Sie die Würmer mit dem menschlichen Sensor klingen](http://qiita.com/cigalecigales/items/4cf9c16f24d1de92ec7d) Ich durfte mich beziehen. Vielen Dank. KIMG1860.JPG

Verwenden Sie fswebcam, um Raspeye- und USB-Webcams zu verbinden. Ich habe hier auf die offizielle Seite verwiesen.

Verwenden Sie os.system, um dies von Python aus aufzurufen.

RekogDogCamera.py


import time
from time import gmtime,strftime
import RPi.GPIO as GPIO

INTERVAL = 3
SLEEPTIME = 5
SENSOR_PIN = 25

GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)

st = time.time()-INTERVAL
while True:
        if( GPIO.input(SENSOR_PIN) == GPIO.HIGH ) and (st + INTERVAL < time.time() ):
                st = time.time()
                strf = strftime("%Y%m%d-%H:%M:%S")
                strfile = strf + '.jpg'
                print("movement detected " + strf)
                os.system('fswebcam --no-banner /home/pi/myphoto/'+ strfile)
              
        time.sleep(SLEEPTIME)
GPIO.cleanup()

Geben Sie das aufgenommene Bild an S3 weiter

Ich habe [Boto3] verwendet (https://github.com/boto/boto3#quick-start). Fügen Sie nach dem Einstellen von ~ / .aws / credentials usw. gemäß dem Dokument den Teil hinzu, der in der Schleife des obigen Codes in S3 hochgeladen werden soll.

RekogDogCamera.py


import boto3
bucket_name = 'mybucket'
s3_client = boto3.client('s3')
s3_client.upload_file('/home/pi/myphoto/' + strfile ,bucket_name, strfile)

Jetzt können Sie loslegen.

Lass uns mit neuen spielen!

Verwenden Sie die Erkennung, um nur ein Bild von meinem Kind zu hinterlassen

Ich habe die Rekognition-Demo ausprobiert. Dieses Mal interessiere ich mich für die Objekt- und Szenenerkennung. rekognitiondemo.JPG

Folgen Sie dem Download SDK, um die Dokumentation zu lesen. Amazon Rekognition Developer Guide Auf der 28. Seite des PDF wollte ich etwas, also werde ich es einmal von der Konsole aus versuchen. Nachtrag: Die HTML-Version war hier. → [Übung 1: Beschriftungen in einem Bild erkennen (API)] (http://docs.aws.amazon.com/ja_jp/rekognition/latest/dg/get-started-exercise-detect-labels.html)

$ aws rekognition detect-labels --image '{"S3Object":{"Bucket":"mybucket", "Name":"mydog.jpg "}}' --region us-east-1 --profile default

Das Foto, das ich zuvor in der Demo verwendet habe, hat eine solche Antwort zurückgegeben.

result


 {
    "Labels": [
        {
            "Confidence": 98.25569915771484,
            "Name": "Animal"
        },
        {
            "Confidence": 98.25569915771484,
            "Name": "Canine"
        },
        {
            "Confidence": 98.25569915771484,
            "Name": "Dog"
        },
        {
            "Confidence": 98.25569915771484,
            "Name": "Husky"
        },
        {
            "Confidence": 98.25569915771484,
            "Name": "Mammal"
        },
        {
            "Confidence": 98.25569915771484,
            "Name": "Pet"
        },
        {
            "Confidence": 95.74263763427734,
            "Name": "Eskimo Dog"
        },

(* Nebenbei: Weder Eskimohund noch Husky, mein Kind ist Kishu-Hund ...)

Versuchen Sie, über den obigen Python-Code aufzurufen. Da os.system leicht zu bedienen ist, werde ich mein Bestes tun, um dem Zitat zu entkommen.

RekogDogCamera.py


result = os.system("aws rekognition detect-labels --image \'{\"S3Object\":{\"Bucket\":\""+bucket_name+"\", \"Name\":\""+ strfile +"\"}}\' --region us-east-1 --profile default > temp.json")
                

Schleifen Sie die Rückantwort und melden Sie "Canine found", wenn "Name" "Canine" hat und "Confidence" 55 oder höher ist. ..

RekogDogCamera.py


with open('temp.json') as json_data:
    data = json.load(json_data)
    for d in data["Labels"]:
        if (d["Name"] == "Canine" and d["Confidence"] > 55.0):
            print ("Canine found: " + str(d["Confidence"]))
        break
                     

(* Zuerst habe ich Confidence auf ungefähr 95 gesetzt, aber ich habe es auf 55 gesetzt, weil ich auf einem Foto in einem dunklen Raum nicht über 60 gehe.)

Dann werden die Fotos, auf denen der Hund nicht erkannt wird, von S3 ausgeschlossen.

RekogDogCamera.py


        else:
            s3_client.delete_object(Bucket=bucket_name, Key=strfile) 

Ich werde das machen. KIMG1858 (1).jpg

$ python3 RekogDogCamera.py --- Opening /dev/video0... Trying source module v4l2... /dev/video0 opened. No input was specified, using the first. Adjusting resolution from 384x288 to 352x288. --- Capturing frame... Captured frame in 0.00 seconds. --- Processing captured image... Disabling banner. Writing JPEG image to '/home/pi/myphoto/20170103-00:08:15.jpg'. Canine found: 71.327880859375 20170102-23-57-58.jpg

Ich konnte es nehmen!


Die endgültige Datei sieht so aus.

RekoDogCamera.py


import time
from time import gmtime,strftime
import RPi.GPIO as GPIO
import json
import os
import boto3

INTERVAL = 3
SLEEPTIME = 5
SENSOR_PIN = 25
#Geben Sie den zu verwendenden Bucket an
bucket_name = 'mybucket'

GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)

st = time.time()-INTERVAL
s3_client = boto3.client('s3')
while True:
         #Wenn Daten vom Hundegefühlssensor eingehen und das Zeitintervall länger ist als angegeben ...
        if( GPIO.input(SENSOR_PIN) == GPIO.HIGH ) and (st + INTERVAL < time.time() ):
                st = time.time()
                strf = strftime("%Y%m%d-%H:%M:%S")
                strfile = strf + '.jpg'
                #mach ein Foto
                os.system('fswebcam --no-banner /home/pi/myphoto/'+ strfile)
                #Verschieben Sie die aufgenommenen Fotos in den S3-Bucket.
                s3_client.upload_file('/home/pi/myphoto/' + strfile ,bucket_name, strfile)
                #Fragen Sie Rekognition, ob auf dem Bild ein Hund zu sehen ist.
                result = os.system("aws rekognition detect-labels --image \'{\"S3Object\":{\"Bucket\":\""+bucket_name+"\", \"Name\":\""+ strfile +"\"}}\' --region us-east-1 --profile default > temp.json")
                #Wenn die von Rekognition zurückgegebenen Json-Daten einen Hund enthalten ...
                with open('temp.json') as json_data:
                    data = json.load(json_data)
                    for d in data["Labels"]:
                        if (d["Name"] == "Canine" and d["Confidence"] > 55.0):
                                #Da war ein Hund! Und zuversichtlich
                                print ("Canine found: " + str(d["Confidence"]))
                                break
                        else:
                                
                                #Wenn nicht, wird es gnadenlos gelöscht.
                s3_client.delete_object(Bucket=bucket_name, Key=strfile)

        time.sleep(SLEEPTIME)
# Clean Up
GPIO.cleanup()
os.system('rm /home/pi/myphoto/* temp.json')

Recommended Posts

Haustierüberwachung mit Rekognition und Raspberry pi
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
MQTT Radicon Car mit Arduino und Himbeere
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Mutter pflanzt mit Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Python-Anfänger öffnet und schließt die ineinandergreifende Kamera mit Raspberry Pi
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Messen und vergleichen Sie Temperaturen mit Raspberry Pi und generieren Sie automatisch Diagramme
[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Servomotorsteuerung mit Raspberry Pi
MQTT auf Raspberry Pi und Mac
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
Messen Sie die SIM-Signalstärke mit Raspberry Pi
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verbesserter menschlicher Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Verkehrsüberwachung mit Kibana, ElasticSearch und Python
Den Servomotor SG-90 mit Himbeer-Pi betreiben
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Erfassen Sie den Sensorwert von Grove Pi + mit Raspberry Pi und speichern Sie ihn in Kintone
Rabbit MQ Nachrichtenbenachrichtigungs-App mit Growl in Python ~ mit Raspeye und Julius ~
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Einfacher VPN-Aufbau eines IPSec-Gateways mit Ubuntu 20.04 und Raspberry Pi ―― 1. StrongSwan eingeführt
Raspberry Pi 3 x Julius (Lese- und Grammatikdatei)