Wykrywaj zmienność populacji zagrożonych gatunków za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wykryj wariancję populacji zagrożonych gatunków za pomocą Amazon Rekognition

Nasza planeta stoi w obliczu globalnego kryzysu wymierania. Raport ONZ pokazuje oszałamiającą liczbę ponad miliona gatunków zagrożonych wyginięciem. Najczęstsze przyczyny wyginięcia to utrata siedlisk, kłusownictwo i gatunki inwazyjne. Kilka fundacje ochrony przyrody, naukowcy, wolontariusze i strażnicy przeciw kłusownictwu niestrudzenie pracowały nad rozwiązaniem tego kryzysu. Posiadanie dokładnych i regularnych informacji o zagrożonych zwierzętach na wolności poprawi zdolność ekologów do badania i ochrony zagrożonych gatunków. Naukowcy zajmujący się dziką przyrodą i personel terenowy używają kamer wyposażonych w wyzwalacze podczerwieni, zwanych fotopułapki, i umieść je w najbardziej efektywnych miejscach w lasach, aby uchwycić obrazy dzikiej przyrody. Obrazy te są następnie ręcznie przeglądane, co jest bardzo czasochłonnym procesem.

W tym poście prezentujemy rozwiązanie wykorzystujące Etykiety niestandardowe Amazon Rekognition wraz z fotopułapkami z czujnikami ruchu, aby zautomatyzować ten proces w celu rozpoznawania gatunków i badania ich. Rekognition Custom Labels to w pełni zarządzana usługa wizji komputerowej, która umożliwia programistom tworzenie niestandardowych modeli do klasyfikowania i identyfikowania obiektów na obrazach, które są specyficzne i unikalne dla ich przypadku użycia. Szczegółowo opisujemy, jak rozpoznawać zagrożone gatunki zwierząt na podstawie zdjęć zebranych z fotopułapek, wyciągać wgląd w ich populację i wykrywać otaczających je ludzi. Informacje te będą pomocne dla ekologów, którzy mogą podejmować proaktywne decyzje o ich ratowaniu.

Omówienie rozwiązania

Poniższy schemat ilustruje architekturę rozwiązania.

To rozwiązanie wykorzystuje następujące usługi AI, technologie bezserwerowe i usługi zarządzane w celu wdrożenia skalowalnej i opłacalnej architektury:

  • Amazonka Atena – Bezserwerowa interaktywna usługa zapytań, która ułatwia analizę danych w Amazon S3 przy użyciu standardowego SQL
  • Amazon Cloud Watch – Usługa monitorowania i obserwowalności, która zbiera dane monitorujące i operacyjne w postaci logów, metryk i zdarzeń
  • Amazon DynamoDB – Baza danych kluczowych wartości i dokumentów, która zapewnia jednocyfrową wydajność w milisekundach w dowolnej skali
  • AWS Lambda – Bezserwerowa usługa obliczeniowa, która umożliwia uruchamianie kodu w odpowiedzi na wyzwalacze, takie jak zmiany danych, zmiany stanu systemu lub działania użytkownika
  • Amazon QuickSight – Bezserwerowa usługa analizy biznesowej oparta na uczeniu maszynowym (ML), która zapewnia szczegółowe informacje, interaktywne pulpity nawigacyjne i zaawansowane analizy
  • Amazon Rekognition – Wykorzystuje ML do identyfikacji obiektów, ludzi, tekstu, scen i działań na obrazach i filmach, a także do wykrywania wszelkich nieodpowiednich treści
  • Etykiety niestandardowe Amazon Rekognition – Wykorzystuje AutoML, aby pomóc w szkoleniu niestandardowych modeli w celu identyfikacji obiektów i scen na obrazach, które są specyficzne dla Twoich potrzeb biznesowych
  • Usługa prostej kolejki Amazon (Amazon SQS) – W pełni zarządzana usługa kolejkowania wiadomości, która umożliwia oddzielenie i skalowanie mikrousług, systemów rozproszonych i aplikacji bezserwerowych
  • Usługa Amazon Simple Storage (Amazon S3) – Służy jako magazyn obiektów dla dokumentów i umożliwia centralne zarządzanie z dopracowaną kontrolą dostępu.

Kroki wysokiego poziomu w tym rozwiązaniu są następujące:

  1. Trenuj i buduj niestandardowy model, korzystając z etykiet niestandardowych rozpoznawania, aby rozpoznawać zagrożone gatunki w okolicy. W tym poście szkolimy się na obrazach nosorożców.
  2. Obrazy przechwytywane przez fotopułapki z czujnikiem ruchu są przesyłane do zasobnika S3, który publikuje zdarzenie dla każdego przesłanego obrazu.
  3. Dla każdego opublikowanego zdarzenia wyzwalana jest funkcja Lambda, która pobiera obraz z wiaderka S3 i przekazuje go do niestandardowego modelu w celu wykrycia zagrożonego zwierzęcia.
  4. Funkcja Lambda wykorzystuje interfejs API Amazon Rekognition do identyfikacji zwierząt na obrazie.
  5. Jeśli obraz zawiera zagrożone gatunki nosorożców, funkcja aktualizuje bazę danych DynamoDB o liczbę zwierząt, datę przechwycenia obrazu i inne przydatne metadane, które można wydobyć z obrazu EXIF header.
  6. QuickSight służy do wizualizacji liczby zwierząt i danych o lokalizacji zebranych w bazie danych DynamoDB, aby zrozumieć zróżnicowanie populacji zwierząt w czasie. Regularnie zaglądając do pulpitów nawigacyjnych, grupy zajmujące się ochroną przyrody mogą identyfikować wzorce i izolować prawdopodobne przyczyny, takie jak choroby, klimat lub kłusownictwo, które mogą powodować tę rozbieżność, i proaktywnie podejmować kroki w celu rozwiązania problemu.

Wymagania wstępne

Dobry zestaw treningowy jest wymagany do zbudowania skutecznego modelu przy użyciu etykiet niestandardowych rozpoznawania. Wykorzystaliśmy obrazy z AWS Marketplace (Zestaw danych o zwierzętach i dzikiej przyrodzie z Shutterstock) i Kaggle zbudować model.

Zaimplementuj rozwiązanie

Nasz przepływ pracy obejmuje następujące kroki:

  1. Wytrenuj model niestandardowy, aby klasyfikować zagrożone gatunki (w naszym przykładzie nosorożce) przy użyciu funkcji AutoML w etykietach niestandardowych rozpoznawania.

Możesz również wykonać te kroki z konsoli Rekognition Custom Labels. Aby uzyskać instrukcje, zobacz Tworzenie projektu, Tworzenie treningowych i testowych zbiorów danych, Szkolenie modelu etykiet niestandardowych Amazon Rekognition.

W tym przykładzie używamy zestawu danych z Kaggle. W poniższej tabeli podsumowano zawartość zestawu danych.

Etykieta Zestaw treningowy Zestaw testowy
lew 625 156
Rhino 608 152
Słoń afrykański 368 92
  1. Prześlij zdjęcia zrobione z fotopułapek do wyznaczonego wiadra S3.
  2. Zdefiniuj powiadomienia o zdarzeniach w Uprawnienia sekcji zasobnika S3, aby wysłać powiadomienie do zdefiniowanej kolejki SQS, gdy obiekt zostanie dodany do zasobnika.

Zdefiniuj powiadomienie o zdarzeniu

Akcja przesyłania wyzwala zdarzenie, które jest umieszczane w kolejce w Amazon SQS przy użyciu powiadomienia o zdarzeniu Amazon S3.

  1. Dodaj odpowiednie uprawnienia za pośrednictwem zasad dostępu kolejki SQS, aby umożliwić zasobnikowi S3 wysyłanie powiadomienia do kolejki.

ML-9942-wydarzenie-nie

  1. Skonfiguruj wyzwalacz Lambda dla kolejki SQS, aby funkcja Lambda była wywoływana po odebraniu nowej wiadomości.

Wyzwalacz lambda

  1. Zmodyfikuj politykę dostępu, aby umożliwić funkcji Lambda dostęp do kolejki SQS.

Polityka dostępu do funkcji lambda

Funkcja Lambda powinna mieć teraz odpowiednie uprawnienia dostępu do kolejki SQS.

Uprawnienia funkcji lambda

  1. Skonfiguruj zmienne środowiskowe, aby można było uzyskać do nich dostęp w kodzie.

Zmienne środowiskowe

Kod funkcji lambda

Funkcja Lambda wykonuje następujące zadania po otrzymaniu powiadomienia z kolejki SNS:

  1. Wykonaj wywołanie API do Amazon Rekognition, aby wykryć etykiety z niestandardowego modelu, które identyfikują zagrożone gatunki:
exports.handler = async (event) => {
const id = AWS.util.uuid.v4();
const bucket = event.Records[0].s3.bucket.name;
const photo = decodeURIComponent(event.Records[0].s3.object.key.replace(/+/g, ' '));
const client = new AWS.Rekognition({ region: REGION });
const paramsCustomLabel = {
Image: {
S3Object: {
Bucket: bucket,
Name: photo
},
},
ProjectVersionArn: REK_CUSTOMMODEL,
MinConfidence: MIN_CONFIDENCE
}
let response = await client.detectCustomLabels(paramsCustomLabel).promise();
console.log("Rekognition customLabels response = ",response);

  1. Pobierz tagi EXIF ​​z obrazu, aby uzyskać datę wykonania zdjęcia i inne istotne dane EXIF. Poniższy kod wykorzystuje zależności (pakiet – wersja) exif-reader – ^1.0.3, sharp – ^0.30.7:
const getExifMetaData = async (bucket,key)=>{
return new Promise((resolve) => {
const s3 = new AWS.S3({ region: REGION });
const param = {
Bucket: bucket,
Key : key
};

s3.getObject(param, (error, data) => {
if (error) {
console.log("Error getting S3 file",error);
resolve({status:false,errorText: error.message});
} else {
sharp(data.Body)
.metadata()
.then(({ exif }) => {
const exifProperties = exifReader(exif);
resolve({status:true,exifProp: exifProperties});
}).catch(err => {console.log("Error Processing Exif ");resolve({status:false});})
}
});
});
}

var gpsData = "";
var createDate = "";
const imageS3 = await getExifMetaData(bucket, photo);
if(imageS3.status){
gpsData = imageS3.exifProp.gps;
createDate = imageS3.exifProp.image.CreateDate;
}else{
createDate = event.Records[0].eventTime;
console.log("No exif found in image, setting createDate as the date of event", createDate);
}

Przedstawione tutaj rozwiązanie jest asynchroniczne; obrazy są przechwytywane przez fotopułapki, a następnie w późniejszym czasie przesyłane do wiadra S3 w celu przetworzenia. Jeśli obrazy fotopułapek są przesyłane częściej, możesz rozszerzyć rozwiązanie o wykrywanie ludzi na monitorowanym obszarze i wysyłanie powiadomień do zaniepokojonych aktywistów, aby wskazać możliwe kłusownictwo w pobliżu tych zagrożonych zwierząt. Jest to realizowane za pomocą funkcji Lambda, która wywołuje API rozpoznawania Amazon w celu wykrycia etykiet obecności człowieka. W przypadku wykrycia człowieka w CloudWatch Logs zostanie zarejestrowany komunikat o błędzie. Przefiltrowana metryka w dzienniku błędów wyzwala alarm CloudWatch, który wysyła wiadomość e-mail do działaczy ochrony przyrody, którzy mogą następnie podjąć dalsze działania.

  1. Rozwiń rozwiązanie o następujący kod:
const paramHumanLabel = {
Image: {
S3Object: {
Bucket: bucket,
Name: photo
},
},
MinConfidence: MIN_CONFIDENCE
}

let humanLabel = await client.detectLabels(paramHumanLabel).promise();
let humanFound = humanLabel.Labels.filter(obj => obj.Name === HUMAN);
var humanDetected = false;
if(humanFound.length > 0){
console.error("Human Face Detected");
humanDetected = true;
}

  1. W przypadku wykrycia jakiegokolwiek zagrożonego gatunku funkcja Lambda aktualizuje DynamoDB o liczbę, datę i inne opcjonalne metadane, które są uzyskiwane ze znaczników EXIF ​​obrazu:
let dbresponse = await dynamo.putItem({
Item: {
id: { S: id },
type: { S: response.CustomLabels[0].Name },
image: {S : photo},
createDate: {S: createDate.toString()},
confidence: {S: response.CustomLabels[0].Confidence.toString()},
gps: {S: gpsData.toString()},
humanDetected: {BOOL: humanDetected}
},

TableName: ANIMAL_TABLENAME,
}).promise();

Zapytanie i wizualizacja danych

Możesz teraz używać Athena i QuickSight do wizualizacji danych.

  1. Ustaw tabelę DynamoDB jako źródło danych dla Ateny.Źródło danych DynamoDB
  1. Dodaj szczegóły źródła danych.

Kolejnym ważnym krokiem jest zdefiniowanie funkcji Lambda, która łączy się ze źródłem danych.

  1. Wybrałem Utwórz funkcję Lambda.

Funkcja Lambdy

  1. Wpisz nazwy dla AthenaNazwaKatalogu i Wiadro rozlania; reszta może być ustawieniami domyślnymi.
  2. Wdróż funkcję łącznika.

Złącze lambda

Po przetworzeniu wszystkich obrazów można użyć funkcji QuickSight do wizualizacji danych dotyczących wariancji populacji w czasie z systemu Athena.

  1. W konsoli Athena wybierz źródło danych i wprowadź szczegóły.
  2. Dodaj Utwórz funkcję Lambda aby zapewnić złącze do DynamoDB.

Utwórz funkcję Lambda

  1. Na pulpicie QuickSight wybierz Nowa analiza i Nowy zbiór danych.
  2. Wybierz Athena jako źródło danych.

Athena jako źródło danych

  1. Wprowadź katalog, bazę danych i tabelę, z którą chcesz się połączyć i wybierz Wybierz.

Katalog

  1. Kompletne tworzenie zbioru danych.

Katalog

Poniższy wykres przedstawia liczbę schwytanych gatunków zagrożonych w danym dniu.

Wykres QuickSight

Dane GPS są prezentowane jako część tagów EXIF ​​przechwyconego obrazu. Ze względu na czułość lokalizacji tych zagrożonych zwierząt nasz zbiór danych nie zawierał lokalizacji GPS. Stworzyliśmy jednak wykres geoprzestrzenny na podstawie symulowanych danych, aby pokazać, jak można wizualizować lokalizacje, gdy dostępne są dane GPS.

Wykres geoprzestrzenny

Sprzątać

Aby uniknąć nieoczekiwanych kosztów, pamiętaj o wyłączeniu usług AWS używanych w ramach tej demonstracji — zasobników S3, tabeli DynamoDB, QuickSight, Athena i wytrenowanego modelu etykiet niestandardowych Rekognition. Należy usunąć te zasoby bezpośrednio za pomocą odpowiednich konsol serwisowych, jeśli już ich nie potrzebujesz. Odnosić się do Usuwanie modelu etykiet niestandardowych Amazon Rekognition aby uzyskać więcej informacji na temat usuwania modelu.

Wnioski

W tym poście przedstawiliśmy zautomatyzowany system, który identyfikuje zagrożone gatunki, rejestruje ich liczebność i dostarcza wglądu w zróżnicowanie populacji w czasie. Możesz również rozszerzyć rozwiązanie, aby ostrzegać władze, gdy ludzie (potencjalni kłusownicy) znajdują się w pobliżu tych zagrożonych gatunków. Dzięki możliwościom AI/ML oferowanym przez Amazon Rekognition możemy wspierać wysiłki grup zajmujących się ochroną zagrożonych gatunków i ich ekosystemów.

Aby uzyskać więcej informacji na temat etykiet niestandardowych rozpoznawania, zobacz Pierwsze kroki z niestandardowymi etykietami Amazon Rekognition i Moderowanie treści. Jeśli dopiero zaczynasz korzystać z etykiet niestandardowych Rekognition, możesz skorzystać z naszego poziomu bezpłatnego, który trwa 3 miesiące i obejmuje 10 bezpłatnych godzin szkoleniowych miesięcznie i 4 bezpłatne godziny wnioskowania miesięcznie. Bezpłatna warstwa Amazon Rekognition obejmuje przetwarzanie 5,000 obrazów miesięcznie przez 12 miesięcy.


O autorach

autor-jyothiJyothi Goudar jest kierownikiem ds. architektów rozwiązań partnerskich w AWS. Ściśle współpracuje z globalnym partnerem integratora systemów, aby umożliwić i wspierać klientów przenoszących swoje obciążenia do AWS.

Wykrywaj zmienność populacji zagrożonych gatunków za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Jay'a Rao jest głównym architektem rozwiązań w AWS. Lubi udzielać klientom wskazówek technicznych i strategicznych oraz pomagać im w projektowaniu i wdrażaniu rozwiązań w AWS.

Znak czasu:

Więcej z Uczenie maszynowe AWS