6. Caixes de delimitació inclinades
1. OBB Oriented Bounding Box
Ja varem veure que YOLO és capaç de fer una detecció en imatges d'objectes, retornant un bounding box (caixa delimitadora) al voltant de cada objecte detectat. Aquest bounding box és un rectangle que s'alinea amb els eixos de la imatge, i es defineix per les coordenades del seu centre, la seva amplada i alçada.
Però que passa si els objectes no estàn alineats amb els eixos de la imatge? En aquest cas, el bounding box tradicional pot no ser suficient per capturar l'objecte de manera precisa. Aquí és on entra en joc l'OBB (Oriented Bounding Box), que és una caixa delimitadora orientada que pot rotar-se per ajustar-se millor a l'objecte detectat.


Aquestes OBBs es defineixen per les coordenades del seu centre, la seva amplada, alçada i un angle de rotació que indica com està orientada la caixa respecte als eixos de la imatge. Això permet que l'OBB s'ajusti millor a l'objecte detectat, especialment quan aquest està rotat o té una forma irregular.
2. Implementació de OBB a YOLO
Com sempre necessitarem carregar un model preentrenat de YOLO i la imatge a processar:
| Python | |
|---|---|
Com sempre el nom del model segueix en el patro de yolo{version}{size}-obb.pt, on version és la versió de YOLO que estem utilitzant (en aquest cas, la 26) i size és la mida del model (en aquest cas, n per nano).
Per a realitzar la detecció amb OBB, simplement cridem al mètode predict com abans, però ara el model retornarà les coordenades de les OBBs en lloc dels bounding boxes tradicionals:
| Python | |
|---|---|
Com sempre, podem accedir als resultats i veure les OBBs detectades. L'objecte results conte les OBBs detectades, que son altra llista dins de la llista, i podem accedir a les seves coordenades, noms de classe i puntuacions de confiança de la següent manera:
Per un costat els noms i per altre, dins de
- xywhr ens dona les coordenades de la OBB en format center-x, center-y, width, height i angle de rotació en radians.
- xyxyxyxy ens dona les coordenades dels 4 punts del polígon que forma la OBB.
- names ens dona el nom de la classe de cada caixa detectada.
- confs ens dona la puntuació de confiança de cada caixa detectada,
Les classe (results[i].names) que es reconeixen estan preparades per a traballar sobretot en imatges aèrees, on els objectes poden estar orientats de qualsevol manera. Per exemple, en la detecció de vehicles en imatges aèrees, els cotxes poden estar orientats en diferents direccions, i l'OBB pot ajudar a capturar-los de manera més precisa.
{
0: 'plane',
1: 'ship',
2: 'storage tank',
3: 'baseball diamond',
4: 'tennis court',
5: 'basketball court',
6: 'ground track field',
7: 'harbor',
8: 'bridge',
9: 'large vehicle',
10: 'small vehicle',
11: 'helicopter',
12: 'roundabout',
13: 'soccer ball field',
14: 'swimming pool'
}