2017-11-16 311 views
5

Özellikle random_image_scale olmak üzere nesne algılama API'sinin veri büyütme özelliklerini kullanmaya çalışıyorum.Nesne algılama API'sinde veri büyütme: random_image_scale

Biraz araştırma yapmak, onu uygulayan işlevi buldum (aşağıya yapıştırılmış). Bir şey özlüyorum ya da kutuların zemin gerçekliği burada tedavi edilmiyor mu? Etrafa baktım ve hiçbir şey bulamadım. Eğer zemin gerçekliği, görüntüye yapılan ölçeklendirmeye göre değiştirilmezse, eğitilmiş olan modelle karıştırılacak, değil mi?

Lütfen bir şeyi kaçırıyorsam veya ağımın eğitimini almak için bu özellikten kaçınmalıyım.

dosya

def random_image_scale(image, 
         masks=None, 
         min_scale_ratio=0.5, 
         max_scale_ratio=2.0, 
         seed=None): 
    """Scales the image size. 

    Args: 
    image: rank 3 float32 tensor contains 1 image -> [height, width, channels]. 
    masks: (optional) rank 3 float32 tensor containing masks with 
     size [height, width, num_masks]. The value is set to None if there are no 
     masks. 
    min_scale_ratio: minimum scaling ratio. 
    max_scale_ratio: maximum scaling ratio. 
    seed: random seed. 

    Returns: 
    image: image which is the same rank as input image. 
    masks: If masks is not none, resized masks which are the same rank as input 
     masks will be returned. 
    """ 
    with tf.name_scope('RandomImageScale', values=[image]): 
    result = [] 
    image_shape = tf.shape(image) 
    image_height = image_shape[0] 
    image_width = image_shape[1] 
    size_coef = tf.random_uniform([], 
            minval=min_scale_ratio, 
            maxval=max_scale_ratio, 
            dtype=tf.float32, seed=seed) 
    image_newysize = tf.to_int32(
     tf.multiply(tf.to_float(image_height), size_coef)) 
    image_newxsize = tf.to_int32(
     tf.multiply(tf.to_float(image_width), size_coef)) 
    image = tf.image.resize_images(
     image, [image_newysize, image_newxsize], align_corners=True) 
    result.append(image) 
    if masks: 
     masks = tf.image.resize_nearest_neighbor(
      masks, [image_newysize, image_newxsize], align_corners=True) 
     result.append(masks) 
    return tuple(result) 
+0

Farklı döndürmeler kullanarak verileri büyütmek için kod yok mu? –

cevap

1

Bir tfrecord dosyası kullanıyorsanız /object_detection/core/preprocessor.py olduğu, kutu sınırları mutlak piksel, ancak göreli yüzdeler değildir. Bu yüzden görüntüyü ölçeklerseniz, kutular aynı kalır.

Bunun için kullanılması iyi olmalıdır.

+0

Koduna göre, sadece ölçek, parlaklık ve bazı ped seçenekleri vardır. Rotasyondan ne haber? Veri büyütme için verileri girmeden önce el ile yapmayı tercih ederim (her bir örnek döndürülür, ölçekler daha fazla veri alır). –