Automaatne piltide kärpimine Amazon Rekognitioniga

Automaatne piltide kärpimine Amazon Rekognitioniga

Digitaalsed kirjastajad otsivad pidevalt võimalusi oma meedia töövoogude sujuvamaks muutmiseks ja automatiseerimiseks, et luua ja avaldada uut sisu nii kiiresti kui võimalik.

Paljudel väljaandjatel on suur hulk pilte, mida nad oma artiklite jaoks kasutavad. Neid pilte saab erinevate lugude jaoks korduvalt kasutada, eriti kui väljaandjal on pilte kuulsustest. Üsna sageli võib ajakirjanikul olla vaja pildilt soovitud kuulsus välja lõigata, et seda oma tulevase loo jaoks kasutada. See on käsitsi tehtav korduv ülesanne, mis tuleks automatiseerida. Mõnikord võib autor soovida kasutada kuulsuse kujutist, kuid see sisaldab kahte inimest ja peamine kuulsus tuleb pildilt kärpida. Muul ajal võib olla vaja kuulsuste pilte ümber vormindada, et neid avaldada erinevatel platvormidel, nagu mobiil, sotsiaalmeedia või digitaalsed uudised. Lisaks võib autor vajada muutma pildi kuvasuhet või asetama kuulsuse teravalt fookusesse.

Selles postituses näitame, kuidas seda kasutada Amazon Rekognitsioon pildianalüüsi tegemiseks. Amazon Rekognition muudab selle funktsiooni hõlpsaks lisamise teie rakendustele ilma masinõppe (ML) teadmisteta ning kaasas on erinevad API-d, et täita selliseid kasutusjuhtumeid nagu objektide tuvastamine, sisu modereerimine, näotuvastus ja analüüs ning teksti- ja kuulsuste tuvastamine. kasutada selles näites.

. kuulsuste äratundmise funktsioon in Amazon Rekognitsioon tunneb piltidel ja videotel ML abil automaatselt ära kümned tuhanded tuntud isiksused. Kuulsuste tuvastamine ei suuda tuvastada mitte ainult antud kuulsuse kohalolekut, vaid ka asukohta pildil.

Ülevaade lahendusest

Selles postituses demonstreerime, kuidas saame edastada väljastatavale pildile foto, kuulsuse nime ja kuvasuhte, et genereerida kärbitud kujutis antud kuulsusest, kes jäädvustab tema näo keskel.

Kui töötate Amazon Rekognitioni kuulsuste tuvastamise API, tagastatakse vastuses palju elemente. Järgmised on mõned peamised vastuseelemendid.

  • MatchConfidence – vaste usaldusväärsuse skoor, mida saab kasutada API käitumise juhtimiseks. Soovitame eelistatud tööpunkti valimiseks rakendada oma rakenduses sellele skoorile sobivat läve. Näiteks kui määrate läveks 99%, saate kõrvaldada valepositiivsed tulemused, kuid võite jätta vahele mõned potentsiaalsed vasted.
  • Nimi, ID ja URL-id – Lisateabe saamiseks kuulsuse nimi, ainulaadne Amazon Rekognitioni ID ja URL-ide loend, nagu näiteks kuulsuse IMDb või Wikipedia link.
  • Ümbritsev kast – Ristkülikukujulise piirdekasti asukoha koordinaadid iga tuvastatud kuulsuse näo jaoks.
  • KnownGender – Iga tunnustatud kuulsuse teadaolev sooline identiteet.
  • Emotsioonid – Kuulsuse näol väljendatud emotsioon, näiteks rõõmus, kurb või vihane.
  • poseerima – Kuulsuse näo poos, kasutades kolme telge: veeremine, kaldenurk ja lengerdus.
  • naeratus – Olenemata sellest, kas kuulsus naeratab või mitte.

Osa Amazon Rekognitioni API vastusest sisaldab järgmist koodi:

{ "CelebrityFaces": [ { "Urls": [ "www.wikidata.org/wiki/Q2536951" ], "Name": "Werner Vogels", "Id": "23iZ1oP", "Face": { "BoundingBox": { "Width": 0.10331031680107117, "Height": 0.20054641366004944, "Left": 0.5003396272659302, "Top": 0.07391933351755142 }, "Confidence": 99.99765014648438,
...

Selles harjutuses demonstreerime, kuidas kasutada piirdekasti elementi näo asukoha tuvastamiseks, nagu on näidatud järgmisel näitepildil. Kõik mõõtmed on esitatud kujutise üldsuuruse suhetena, seega on vastuse numbrid vahemikus 0–1. Näiteks näidis API vastuses on piirdekasti laius 0.1, mis tähendab, et näo laius on 10% pildi kogulaiusest.

Werner Vogels Piirituskast

Selle piirdekastiga saame nüüd loogika abil tagada, et nägu jääks meie loodud uue pildi servadesse. Võime selle piirdekasti ümber polsterdada, et nägu jääks keskele.

Järgmistes jaotistes näitame, kuidas luua terava fookusega Werner Vogelsiga järgmine kärbitud pildiväljund.

Käivitame an Amazon SageMaker märkmik, mis pakub Pythoni keskkonda, kus saate käivitada koodi, et edastada pilt Amazon Rekognitionile ja seejärel pilti automaatselt muuta kuulsusega fookuses.

Werner Vogels kärbitud

Kood teostab järgmisi kõrgetasemelisi samme:

  1. Esitage taotlus aadressile recognize_celebrities API antud pildi ja kuulsuse nimega.
  2. Filtreerige vastus piirdekasti teabe jaoks.
  3. Lisage piirdekasti polsterdus, nii et jäädvustame osa taustast.

Eeldused

Selle ülevaate jaoks peaksid teil olema järgmised eeltingimused.

Laadige üles näidispilt

Laadige oma S3 ämbrisse üles kuulsuse näidispilt.

Käivitage kood

Koodi käitamiseks kasutame SageMakeri sülearvutit, kuid mis tahes IDE töötab ka pärast Pythoni, padja ja Boto3 installimist. Loome nii SageMakeri märkmiku kui ka AWS-i identiteedi- ja juurdepääsuhaldus (IAM) rolli koos nõutavate õigustega. Tehke järgmised sammud.

  1. Loo märkmik ja nimetage see automatic-cropping-celebrity.

Vaikimisi täitmispoliitikal, mis loodi SageMakeri märkmiku loomisel, on lihtne reegel, mis annab rollile õigused Amazon S3-ga suhtlemiseks.

  1. Uuenda Resource piirang S3 ämbri nimega:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3::: # your-s3-bucket-name " ] } ]
}

  1. Looge SageMakeri märkmiku IAM-i rolli lisamiseks veel üks reegel, et saaksite helistada Tunne ära kuulsused API-d:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rekognition:RecognizeCelebrities", "Resource": "*" } ]
}

IAM-i load

  1. Valige SageMakeri konsoolil Märkmiku eksemplarid navigeerimispaanil.
  2. Leidke automatic-cropping-celebrity märkmik ja vali Avage Jupyter.
  3. Vali Uus ja conda_python3 teie märkmiku tuumaks.

Jupyteri märkmik

Järgmiste toimingute jaoks kopeerige koodiplokid oma Jupyteri sülearvutisse ja käivitage need valides jooks.

  1. Esiteks impordime abifunktsioonid ja teegid:
import boto3
from PIL import Image

  1. Määra muutujad
bucket = '<YOUR_BUCKET_NAME>' file = '<YOUR_FILE_NAME>'
celeb = '<CELEBRITY_NAME>'
aspect_ratio = <ASPECT_RATIO_OF_OUTPUT_IMAGE, e.g. 1 for square>

  1. Looge teenindusklient
rek = boto3.client('rekognition')
s3 = boto3.client('s3')

  1. Funktsioon kuulsuste äratundmiseks
def recognize_celebrity(photo): with open(photo, 'rb') as image: response = rek.recognize_celebrities(Image={'Bytes': image.read()}) image=Image.open(photo) file_type=image.format.lower() path, ext=image.filename.rsplit(".", 1) celeb_faces = response['CelebrityFaces'] print(f'Detected {len(celeb_faces)} faces for {photo}') return celeb_faces, image, path, file_type 

  1. Funktsioon antud kuulsuse piirdekasti saamiseks:
def get_bounding_box(celeb_faces, img_width, img_height, celeb): bbox = None for celebrity in celeb_faces: if celebrity['Name'] == celeb: box = celebrity['Face']['BoundingBox'] left = img_width * box['Left'] top = img_height * box['Top'] width = img_width * box['Width'] height = img_height * box['Height'] print('Left: ' + '{0:.0f}'.format(left)) print('Top: ' + '{0:.0f}'.format(top)) print('Face Width: ' + "{0:.0f}".format(width)) print('Face Height: ' + "{0:.0f}".format(height)) #dimenions of famous face inside the bounding boxes x1=left y1=top x2=left+width y2=top+height bbox = [x1,y1,x2,y2] print(f'Bbox coordinates: {bbox}') if bbox == None: raise ValueError(f"{celeb} not found in results") return bbox

  1. Funktsioon piirdekasti polsterduse lisamiseks, nii et jäädvustame näo ümber tausta
def pad_bbox(bbox, pad_width=0.5, pad_height=0.3): x1, y1, x2, y2 = bbox width = x2 - x1 height = y2 - y1 #dimenions of new image with padding x1= max(x1 - (pad_width * width),0) y1= max(y1 - (pad_height * height),0) x2= max(x2 + (pad_width * width),0) y2= max(y2 + (pad_height * height),0) #dimenions of new image with aspect ratio, 1 is square, 1.5 is 6:4, 0.66 is 4:6 x1= max(x1-(max((y2-y1)*max(aspect_ratio,1)-(x2-x1),0)/2),0) y1= max(y1-(max((x2-x1)*1/(min((aspect_ratio),1))-(y2-y1),0)/2),0) x2= max(x2+(max((y2-y1)*max((aspect_ratio),1)-(x2-x1),0)/2),0) y2= max(y2+(max((x2-x1)*1/(min((aspect_ratio),1))-(y2-y1),0)/2),0) print('x1-coordinate after padding: ' + '{0:.0f}'.format(x1)) print('y1-coordinate after padding: ' + '{0:.0f}'.format(y1)) print('x2-coordinate after padding: ' + "{0:.0f}".format(x2)) print('y2-coordinate after padding: ' + "{0:.0f}".format(y2)) return [x1,y1,x2,y2]

  1. Funktsioon pildi salvestamiseks sülearvuti salvestusruumi ja Amazon S3-sse
def save_image(roi, image, path, file_type): x1, y1, x2, y2 = roi image = image.crop((x1,y1,x2,y2)) image.save(f'{path}-cropped.{file_type}') s3.upload_file(f'{path}-cropped.{file_type}', bucket, f'{path}-cropped.{file_type}') return image

  1. Kasutage Pythonit main() funktsioon eelmiste funktsioonide kombineerimiseks, et lõpetada meie kuulsuse uue kärbitud pildi salvestamise töövoog:
def main(): # Download S3 image to local s3.download_file(bucket, file, './'+file) #Load photo and recognize celebrity celeb_faces, img, file_name, file_type = recognize_celebrity(file) width, height = img.size #Get bounding box bbox = get_bounding_box(celeb_faces, width, height, celeb) #Get padded bounding box padded_bbox = pad_bbox(bbox) #Save result and display result = save_image(padded_bbox, img, file_name, file_type) display(result) if __name__ == "__main__": main()

Kui käivitate selle koodiploki, näete, et leidsime Werner Vogelsi ja lõime uue pildi, mille keskel on tema nägu.

Werner Vogels kärbitud

Pilt salvestatakse märkmikusse ja laaditakse üles ka S3 ämbrisse.

Jupyteri sülearvuti väljund

Võite lisada selle lahenduse a suurem töövoog; Näiteks võib kirjastusettevõte soovida avaldada selle võimaluse lõpp-punktina piltide ümbervormindamiseks ja nende suuruse muutmiseks, kui avaldab kuulsuste artikleid mitmel platvormil.

Koristamine

Edaspidiste tasude vältimiseks kustutage ressursid:

  1. Valige SageMakeri konsoolil oma märkmik ja Meetmete menüüst valige Peatus.
  2. Kui märkmik on peatatud, kuvatakse Meetmete menüüst valige kustutama.
  3. Kustutage IAM-konsoolis loodud SageMakeri täitmisroll.
  4. Kustutage Amazon S3 konsoolis sisendpilt ja kõik väljundfailid oma S3 ämbrist.

Järeldus

Selles postituses näitasime, kuidas saame kasutada Amazon Rekognitionit, et automatiseerida muidu käsitsi tehtud piltide muutmise ülesannet, et toetada meediumi töövooge. See on eriti oluline kirjastamistööstuses, kus värske sisu kiireks ja mitmele platvormile jõudmisel on oluline kiirus.

Meediavaradega töötamise kohta lisateabe saamiseks vaadake Media2Cloud 3.0 abil sai meedia intelligentsus just targemaks


Teave Autor

Automaatne piltide kärpimine Amazon Rekognition PlatoBlockchain Data Intelligence'iga. Vertikaalne otsing. Ai.

Mark Watkins on lahenduste arhitekt meedia- ja meelelahutusmeeskonnas. Ta aitab klientidel luua AI/ML-lahendusi, mis lahendavad AWS-i abil nende äriprobleeme. Ta on töötanud mitme AI/ML projekti kallal, mis on seotud arvutinägemise, loomuliku keele töötlemise, isikupärastamise, ML ääres ja muuga. Eemal tööelust meeldib talle perega aega veeta ja oma kahe pisikese kasvamist vaadata.

Ajatempel:

Veel alates AWS-i masinõpe