Przejdź do treści
AENEIA SIGNAL
Audit / Signal

AI wskazała obiekt. Po przeliczeniu ramka trafiła obok

Jak odebrać współrzędne obiektu z AI: kolejność osi, skalę, wycinek i obrót. Własny rachunek pokazuje drogę ramki od wejścia modelu do podglądu.

Ilustracja: obserwatorium nad doliną i jasny horyzont.
W tym artykule

Na zdjęciu stoi kilka pudełek. Model wskazuje właściwe niebieskie, lecz ramka na podglądzie otacza jego sąsiada. W raporcie nazwa się zgadza, cztery liczby są poprawnymi liczbami, a pracownik nadal patrzy na złe pudełko. Zanim poprawisz polecenie dla AI, prześledź drogę tych współrzędnych.

Rozpoznanie obiektu i pokazanie jego położenia to dwa odrębne wyniki. Pomiędzy nimi aplikacja może zmniejszyć zdjęcie, wyciąć fragment, obrócić obraz albo dodać marginesy. Poprawna lokalizacja w jednym z tych widoków nie musi być poprawną lokalizacją w drugim.

Przyjrzyjmy się fikcyjnej pracowni, która oznacza pudełka z próbkami papieru. Nie sterujemy urządzeniem ani robotem. Chodzi o zaznaczenie obiektu w narzędziu do przeglądania fotografii. Przykład przeliczenia poniżej został sprawdzony rachunkowo na sztucznych danych; nie jest wynikiem analizy zdjęcia przez model.

Te same cztery liczby mogą znaczyć co innego

Ramka ograniczająca, często nazywana bounding box, opisuje prostokąt otaczający wskazany obiekt. Do jej narysowania potrzebujemy wiedzieć, skąd liczone są odległości, jak zapisano położenie i jakiej wielkości jest obraz odniesienia. Sama lista czterech wartości tego nie wyjaśnia.

Ustal również, co ma obejmować prostokąt. W pracowni chodzi o widoczne pudełko, bez cienia i bez papierów wystających z sąsiedniego pojemnika. W naszym zadaniu do pudełka zaliczamy także jego widoczne otwarte wieko. To proponowana zasada pracowni, a nie właściwość każdego modelu. Jeżeli jedna osoba oznaczy sam korpus, a druga doda wieko, dostaniesz dwa różne wzorce. Przed oceną odpowiedzi rozstrzygnij tę różnicę, inaczej spór o ramkę zacznie się jeszcze przed przeliczeniem.

W przykładzie detekcji obiektów Gemini ramka ma kolejność ymin, xmin, ymax, xmax, a współrzędne są przeskalowane do zakresu 0–1000 względem obrazu. Pierwsza wartość dotyczy więc osi pionowej. To kontrakt opisanej metody, nie uniwersalny zapis każdej odpowiedzi AI.

Referencja BoundingBox w Amazon Rekognition opisuje natomiast położenie lewego górnego narożnika oraz szerokość i wysokość jako proporcje wymiarów obrazu. Początek znajduje się u góry po lewej. Wartości oznaczające rozmiar prostokąta nie są współrzędnymi przeciwległego narożnika. Referencja dopuszcza także wyjście współrzędnych poza granice obrazu, na przykład przy częściowo widocznej twarzy.

Jeśli aplikacja zamieni te dwa opisy, może narysować ramkę bez zgłoszenia błędu. Dlatego poprawny JSON nie wystarcza do potwierdzenia znaczenia danych. Odbiór powinien obejmować nazwy pól, kolejność osi i jednostki, a nie tylko obecność czterech liczb.

Dla konkretnej integracji zapisz prosty opis wejścia i wyjścia: który plik trafił do modelu, jakie miał wymiary, jak rozumieć zwrócone wartości i na jakim obrazie zostaną użyte. Nie zostawiaj tego pod etykietą „standardowe współrzędne”. Standardowe dla jednego narzędzia nie znaczy znajome dla następnego.

Kontrolę zakresu wartości oprzyj na tym opisie. Przy odwróconych narożnikach lub niedopuszczalnym rozmiarze zatrzymaj użycie wyniku i pokaż przyczynę. Przy ramce dopuszczalnie wychodzącej poza zdjęcie odróżnij surowy wynik od części rzeczywiście widocznej na ekranie. Przycięcie narysowanego obramowania do widoku nie powinno po cichu podmieniać danych przeznaczonych do dalszego etapu. Reguła przycinania jest częścią odbioru, nie kosmetyką.

Zanim dojdziemy do rachunku, oddziel trafność wskazania od przeliczenia. Ramka może otaczać właściwe pudełko na obrazie wejściowym, lecz przesunąć się na podglądzie. Może też być bezbłędnie przeniesiona z wejścia, na którym model wskazał niewłaściwy przedmiot. Pierwsza usterka dotyczy przekazania lokalizacji, druga rozpoznania. Poprawianie obu naraz utrudnia sprawdzenie, co rzeczywiście zadziałało.

Prześledź jeden prostokąt przez trzy obrazy

Przyjmijmy zdjęcie o szerokości 2400 i wysokości 1600 pikseli. Aplikacja wycina z niego fragment zaczynający się 600 pikseli od lewej i 200 od góry. Wycinek ma 1200 na 800 pikseli, po czym zostaje zmniejszony do 600 na 400 i dopiero ten obraz trafia do modelu.

Załóżmy zwróconą ramkę w opisanej kolejności ymin, xmin, ymax, xmax: 250, 200, 750, 800. Są to wymyślone wartości do rachunku, nie pomiar jakości modelu. Pary punktów poniżej podajemy już w kolejności x, y: najpierw odległość od lewej, potem od góry. Przeliczenie wyniku wygląda następująco:

  • Na wejściu 600 na 400 pikseli lewa krawędź leży na 120, prawa na 480, górna na 100, a dolna na 300 pikseli. Wartości osi poziomej mnożymy przez szerokość, pionowej przez wysokość, po podzieleniu przez 1000.
  • Powrót do wycinka 1200 na 800 oznacza w tym przykładzie podwojenie odległości. Ramka rozciąga się od punktu 240, 200 do punktu 960, 600, licząc od początku wycinka.
  • Powrót do całego zdjęcia wymaga dodania przesunięcia wycinka: 600 w poziomie i 200 w pionie. Otrzymujemy narożniki 840, 400 oraz 1560, 800 względem oryginału.

Ten rachunek można sprawdzić niezależnie od AI. Wykonałem go w krótkim skrypcie dla powyższych sztucznych danych, wraz ze sprawdzeniem dalszego podglądu i obrotu. Nie tworzono obrazu ani nie wykonywano wywołania modelu. Taka próba pozwala odizolować geometrię od trafności rozpoznania.

Samo przemnożenie wyniku przez wymiary oryginału pominęłoby wycinek. Ramka zostałaby przeliczona tak, jakby model widział całe zdjęcie. To rodzaj pomyłki, którą warto ujawnić przed ocenianiem kolejnego wariantu polecenia. Więcej szczegółów na wejściu nie naprawi utraconego przesunięcia.

Dokumentacja canvas drawImage rozdziela prostokąt źródłowy wycinany z obrazu i prostokąt docelowy, w którym zostaje narysowany. To użyteczny przykład tego, dlaczego rozmiar i położenie widoczne w podglądzie nie muszą odpowiadać współrzędnym źródła. Parametry obu etapów mają osobne znaczenie.

Zużyty drewniany wzorzec z mosiężnymi zawiasami i czerwoną nicią na próbkach materiału.
Fotografia koncepcyjna AeneiaDobry pierwowzór

Doprowadźmy rachunek do podglądu. Gdy cały oryginał zmniejszamy czterokrotnie do 600 na 400 pikseli, ramka biegnie od 210, 100 do 390, 200. Jeżeli obraz umieścimy na większym płótnie z marginesem 100 pikseli z lewej i 50 z góry, narożniki obramowania na tym płótnie znajdą się w punktach 310, 150 i 490, 250. Ten wariant również sprawdziłem w rachunku. Pominięcie marginesu przesunie poprawnie przeskalowaną ramkę.

Przy innej szerokości okna podgląd może dostać inny rozmiar i inne marginesy. Wówczas przeliczenie musi dotyczyć bieżącego sposobu wyświetlenia. W proponowanej próbie zmień wielkość widoku już po otrzymaniu odpowiedzi. Nie wystarczy pokazać poprawnego prostokąta raz, w początkowym układzie ekranu.

Obrót także zmienia układ odniesienia. W naszym rachunku obrót całego oryginału o 90 stopni zgodnie z ruchem wskazówek zegara daje obraz 1600 na 2400 pikseli. Po przeliczeniu narożników ta sama ramka rozciąga się od 800, 840 do 1200, 1560. Nie wystarczy zamienić ze sobą szerokości i wysokości zdjęcia, pozostawiając stare położenie.

W tym przykładzie liczymy ciągłe położenie krawędzi, nie numery pojedynczych pikseli. Przeliczamy wszystkie narożniki, a następnie wybieramy skrajne położenia tworzące nowy prostokąt. Regułę zaokrąglania przy wycinaniu obrazu wykonawca powinien zapisać osobno. Zaokrąglenie zbyt wcześnie, przed kolejnymi zmianami skali, może wpłynąć na końcowy brzeg. Sprawdź faktycznie zapisany plik, a nie wyłącznie wartości przed zaokrągleniem.

Dokumentacja orientacji w Rekognition, w zakresie opisanych operacji analizy twarzy, wskazuje również przypadek ramek już skorygowanych według orientacji Exif. Nie należy wtedy ponownie wykonywać tej samej korekty. Własna integracja musi określać, do którego obrazu odnosi się jej rzeczywisty wynik.

Zapisana orientacja i fizycznie obrócone piksele wymagają rozróżnienia. Nie zakładaj, że każdy etap obiegu zdjęcia wykonał tę samą operację. W odbiorze potrzebne są obrazy z kolejnych etapów oraz ich wymiary. Rozmowa przy zrzucie ekranu bez ustalenia, który plik na nim widać, łatwo kończy się zgodą na dwa różne stany.

Ramka musi działać tam, gdzie ktoś jej użyje

W pracowni podgląd może służyć do wyboru pudełka, a kolejny etap do wycięcia jego fotografii. Obejrzyj oba wyniki. Ramka na ekranie może wyglądać właściwie, mimo że funkcja wycinająca dostała liczby odnoszące się do innego rozmiaru. Odbiór samego obramowania nie potwierdza poprawności pliku wynikowego.

Przy zapisie wycinka wybierz ponownie oryginalne zdjęcie i pokaż, z którego miejsca pobrano zawartość. Jeżeli ramkę poprawiał pracownik, zachowaj jego zatwierdzoną wersję osobno od surowej odpowiedzi modelu. Dzięki temu kolejna analiza nie nadpisze ręcznej korekty bez ostrzeżenia. Raport nadal powinien pozwalać odróżnić trafne wskazanie AI od wyniku doprowadzonego do poprawności przez człowieka.

Jeżeli zaznaczenie wyznacza zakres edycji zdjęcia produktu przez AI, poprawne położenie jest dopiero początkiem odbioru. Osobno określ, co wolno zmienić wewnątrz tego obszaru i co ma zostać zachowane. Ramka nie udziela zgody na przeprojektowanie produktu.

Jeśli oznaczenie staje się klikalnym obszarem, sprawdź również samo kliknięcie. W interaktywnym planie miejsca z listą i strefami wskazanie obszaru powinno prowadzić do właściwej informacji. Podobna odpowiedzialność powstaje przy zdjęciu: wizualna ramka i aktywny obszar muszą dotyczyć tego samego elementu, również po zmianie wielkości widoku.

Przy przygotowaniu obrazu przed modelem zachowaj więc dane potrzebne do powrotu. Nie wystarczy przechować wyłącznie finalnych liczb i nazwę pudełka. Po zmianie kadru stare współrzędne bez związku z plikiem nie staną się aktualne tylko dlatego, że dotyczą nadal niebieskiego przedmiotu.

Uwzględnij odpowiedź, która przyjdzie z opóźnieniem. Pracownik może już otworzyć kolejne zdjęcie, kiedy zakończy się analiza poprzedniego. Powiąż odpowiedź z konkretnym wejściem i jego wersją, zamiast nakładać ją na aktualnie widoczny obraz. W próbie odbioru odwróć kolejność nadejścia dwóch wyników. Każda ramka powinna pozostać przy swoim zdjęciu. Szybsza animacja nie zastępuje tego powiązania.

W przeglądzie użycia AI w Aeneia Audit taki proces można rozłożyć na obrazy, wyniki i decyzje odbioru. Do rozmowy przygotuj oryginał, materiał rzeczywiście przekazany do analizy, surową odpowiedź oraz końcowy podgląd lub wycinek. Pozwalają ustalić, na którym etapie zmieniło się znaczenie lokalizacji.

Wyszukiwanie wizualne produktu odpowiada na inne pytanie: czy znaleziono właściwy model lub wariant. Trafna ramka nie dowodzi tożsamości pudełka w katalogu. Jeżeli zaznaczony obiekt ma prowadzić do karty produktu, również to przejście wymaga sprawdzenia.

Dopuszczalną różnicę położenia ustal według dalszego zastosowania. Przy podglądzie można dopuścić niewielki odstęp wokół pudełka; przy wycinaniu nie powinno zniknąć jego wieko. W obu przypadkach objęcie sąsiedniego przedmiotu pozostaje innym błędem niż drobne przesunięcie brzegu. Porównuj końcowy wynik z uzgodnionym oznaczeniem na tym samym obrazie. Nie wyliczaj tolerancji w pikselach bez podania rozmiaru, do którego się odnosi.

Na koniec poproś o wskazanie jednego przedmiotu i przejście całej drogi do używanego wyniku. Nazwa, prostokąt i końcowy plik mają opisywać ten sam obiekt na właściwej wersji obrazu. Jeśli ramka nadal obejmuje sąsiada, nie poprawiaj podpisu sąsiadowi. Wróć do pierwszego miejsca, w którym rozeszły się układy odniesienia.

Aeneia / Redakcja Aeneia

Tekst redakcyjny. Linki do źródeł znajdziesz w treści.

Źródła sprawdzone: .

O Aeneia
Aeneia / Initium

Od wiedzy do decyzji

Opowiedz nam, co chcesz uporządkować. Ustalimy, od czego zacząć.

Przejdź do kontaktu