tensorflow::ops::SampleDistortedBoundingBox
#include <image_ops.h>Générer un cadre de délimitation unique et déformé aléatoirement pour une image.
Résumé
Dans les tâches de reconnaissance d'images ou de localisation d'objets, les annotations de boîtes englobantes sont souvent fournies en complément des étiquettes de vérité terrain. Une technique courante pour l'entraînement d'un tel système consiste à déformer aléatoirement une image tout en préservant son contenu ( augmentation de données) . Cette opération produit une localisation d'un objet déformée aléatoirement (boîte englobante) à partir d'une image_size , de bounding_boxes et d'une série de contraintes.
Le résultat de cette opération est un cadre de délimitation unique qui peut servir à recadrer l'image originale. Ce résultat est renvoyé sous forme de trois tenseurs : begin , size et bboxes . Les deux premiers peuvent être utilisés directement avec tf.slice pour recadrer l'image. Le dernier peut être fourni à tf.image.draw_bounding_boxes pour visualiser le cadre de délimitation.
Les boîtes englobantes sont fournies et renvoyées sous la forme [y_min, x_min, y_max, x_max] . Les coordonnées de la boîte englobante sont des nombres flottants compris entre [0.0, 1.0] par rapport à la largeur et à la hauteur de l'image sous-jacente.
Par exemple,
# Generate a single distorted bounding box.
begin, size, bbox_for_draw = tf.image.sample_distorted_bounding_box(
tf.shape(image),
bounding_boxes=bounding_boxes) # Draw the bounding box in an image summary.
image_with_box = tf.image.draw_bounding_boxes(tf.expand_dims(image, 0),
bbox_for_draw)
tf.summary.image('images_with_box', image_with_box) # Employ the bounding box to distort the image.
distorted_image = tf.slice(image, begin, size) Notez que si aucune information de cadre de délimitation n'est disponible, définir use_image_if_no_bounding_boxes = true supposera l'existence d'un seul cadre de délimitation implicite couvrant l'intégralité de l'image. Si use_image_if_no_bounding_boxes est défini sur `false` et qu'aucun cadre de délimitation n'est fourni, une erreur sera générée.
Arguments :
- portée : un objet Scope
- taille_image : 1-D, contenant
[height, width, channels]. - bounding_boxes : 3D avec forme
[batch, N, 4]décrivant les N boîtes englobantes associées à l'image.
Attributs optionnels (voir Attrs ) :
- Graine : Si l’une
seedouseed2est différente de zéro, le générateur de nombres aléatoires est initialisé avec laseedfournie. Sinon, il est initialisé avec une graine aléatoire. - seed2 : Une deuxième graine pour éviter les collisions entre les graines.
- min_object_covered : La zone recadrée de l’image doit contenir au moins cette fraction de chaque cadre de délimitation fourni. La valeur de ce paramètre doit être non négative. Si la valeur est 0, la zone recadrée ne doit chevaucher aucun des cadres de délimitation fournis.
- aspect_ratio_range : La zone recadrée de l’image doit avoir un rapport hauteur/largeur compris dans cette plage.
- area_range : La zone recadrée de l’image doit contenir une fraction de l’image fournie comprise dans cette plage.
- max_attempts : Nombre de tentatives de génération d'une zone recadrée de l'image selon les contraintes spécifiées. Après
max_attemptséchecs, l'image entière est renvoyée. - use_image_if_no_bounding_boxes : détermine le comportement en l’absence de cadres de délimitation. Si la valeur est « true », un cadre de délimitation implicite couvre l’ensemble de l’image. Si la valeur est « false », une erreur est générée.
Retours :
- Début
Output: 1-D, contenant[offset_height, offset_width, 0]. Fournir comme entrée àtf.slice. - Taille
Output: 1D, contenant[target_height, target_width, -1]. À fournir comme entrée àtf.slice. - Boîtes
Output: 3D de forme[1, 1, 4]contenant la boîte englobante déformée. À fournir en entrée àtf.image.draw_bounding_boxes.
Constructeurs et destructeurs | |
|---|---|
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes) | |
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs) |
attributs publics | |
|---|---|
bboxes | |
begin | |
operation | |
size | |
fonctions statiques publiques | |
|---|---|
AreaRange (const gtl::ArraySlice< float > & x) | |
AspectRatioRange (const gtl::ArraySlice< float > & x) | |
MaxAttempts (int64 x) | |
MinObjectCovered (float x) | |
Seed (int64 x) | |
Seed2 (int64 x) | |
UseImageIfNoBoundingBoxes (bool x) | |
Structures | |
|---|---|
| tensorflow::ops::SampleDistortedBoundingBox::Attrs | Définiteurs d'attributs optionnels pour SampleDistortedBoundingBox . |
attributs publics
boîtes bboxes
::tensorflow::Output bboxes
commencer
::tensorflow::Output begin
opération
Operation operation
taille
::tensorflow::Output size
fonctions publiques
Boîte englobante déformée d'échantillon
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes )
Boîte englobante déformée d'échantillon
SampleDistortedBoundingBox( const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs )
fonctions statiques publiques
Plage de zones
Attrs AreaRange( const gtl::ArraySlice< float > & x )
Plage de rapport d'aspect
Attrs AspectRatioRange( const gtl::ArraySlice< float > & x )
Nombre maximal de tentatives
Attrs MaxAttempts( int64 x )
MinObjectCovered
Attrs MinObjectCovered( float x )
Graine
Attrs Seed( int64 x )
Graine2
Attrs Seed2( int64 x )
UtiliserImageSiPasDeBoîtesDeDélimitation
Attrs UseImageIfNoBoundingBoxes( bool x )