2017-11-16 28 views
5

Tôi đang cố gắng sử dụng data_augmentation_options trong tệp .config để đào tạo mạng, cụ thể là ssd_mobilenet_v1, nhưng khi tôi kích hoạt tùy chọn random_adjust_brightness, tôi nhận được thông báo lỗi được dán bên dưới một cách nhanh chóng (tôi kích hoạt tùy chọn sau bước 110000).Lỗi khi sử dụng tùy chọn tăng cường dữ liệu trong API phát hiện đối tượng

tôi đã cố gắng làm giảm giá trị mặc định:

optional float max_delta=1 [default=0.2]; 

Nhưng kết quả là như nhau.

Bất kỳ ý tưởng nào tại sao? Hình ảnh là RGB từ các tệp png (từ Bosch Small Traffic Lights Dataset).

INFO:tensorflow:global step 110011: loss = 22.7990 (0.357 sec/step) 
INFO:tensorflow:global step 110012: loss = 47.8811 (0.401 sec/step) 
2017-11-16 11:02:29.114785: W tensorflow/core/framework/op_kernel.cc:1192] Invalid argument: LossTensor is inf or nan. : Tensor had NaN values 
    [[Node: CheckNumerics = CheckNumerics[T=DT_FLOAT, message="LossTensor is inf or nan.", _device="/job:localhost/replica:0/task:0/device:CPU:0"](total_loss)]] 
2017-11-16 11:02:29.114895: W tensorflow/core/framework/op_kernel.cc:1192] Invalid argument: LossTensor is inf or nan. : Tensor had NaN values 
    [[Node: CheckNumerics = CheckNumerics[T=DT_FLOAT, message="LossTensor is inf or nan.", _device="/job:localhost/replica:0/task:0/device:CPU:0"](total_loss)]] 
2017-11-16 11:02:29.114969: W tensorflow/core/framework/op_kernel.cc:1192] Invalid argument: LossTensor is inf or nan. : Tensor had NaN values 
    [[Node: CheckNumerics = CheckNumerics[T=DT_FLOAT, message="LossTensor is inf or nan.", _device="/job:localhost/replica:0/task:0/device:CPU:0"](total_loss)]] 
2017-11-16 11:02:29.115043: W tensorflow/core/framework/op_kernel.cc:1192] Invalid argument: LossTensor is inf or nan. : Tensor had NaN values 
    [[Node: CheckNumerics = CheckNumerics[T=DT_FLOAT, message="LossTensor is inf or nan.", _device="/job:localhost/replica:0/task:0/device:CPU:0"](total_loss)]] 
2017-11-16 11:02:29.115112: W tensorflow/core/framework/op_kernel.cc:1192] Invalid argument: LossTensor is inf or nan. : Tensor had NaN values 
... 

Chỉnh sửa: Cách khắc phục mà tôi tìm thấy là điều này. Các inf hoặc nan là trong sự mất mát, vì vậy kiểm tra các chức năng trong /object_detection/core/preprocessor.py làm ngẫu nhiên độ sáng:

def random_adjust_brightness(image, max_delta=0.2): 
    """Randomly adjusts brightness. 

    Makes sure the output image is still between 0 and 1. 

    Args: 
    image: rank 3 float32 tensor contains 1 image -> [height, width, channels] 
      with pixel values varying between [0, 1]. 
    max_delta: how much to change the brightness. A value between [0, 1). 

    Returns: 
    image: image which is the same shape as input image. 
    boxes: boxes which is the same shape as input boxes. 
    """ 
    with tf.name_scope('RandomAdjustBrightness', values=[image]): 
    image = tf.image.random_brightness(image, max_delta) 
    image = tf.clip_by_value(image, clip_value_min=0.0, clip_value_max=1.0) 
    return image 

Đó là giả định rằng các giá trị hình ảnh phải từ 0.0 và 1.0. Có thể là những hình ảnh thực sự đến với 0 có nghĩa là và thậm chí một phạm vi khác nhau? Trong trường hợp đó, clipping đang làm hỏng chúng và dẫn đến thất bại. Câu chuyện dài ngắn: Tôi nhận xét ra dòng cắt và nó đang làm việc (chúng ta sẽ thấy kết quả).

Trả lời

1

Thông thường, việc nhận LossTensor is inf or nan. : Tensor had NaN values là do lỗi trong hộp/chú thích giới hạn (Nguồn: https://github.com/tensorflow/models/issues/1881).

Tôi biết rằng Tập dữ liệu ánh sáng giao thông nhỏ của Bosch có một số chú thích mở rộng ra ngoài kích thước hình ảnh. Ví dụ: chiều cao của hình ảnh trong tập dữ liệu đó là 720 pixel, nhưng một số hộp giới hạn có toạ độ chiều cao lớn hơn 720. Điều này là phổ biến bởi vì bất cứ khi nào ô tô ghi lại chuỗi đều dưới đèn giao thông, một số đèn giao thông hiển thị và một số bị cắt.

Tôi biết đây không phải là câu trả lời chính xác cho câu hỏi của bạn, nhưng hy vọng nó cung cấp thông tin chi tiết về lý do có thể khiến bạn gặp sự cố. Có lẽ việc xóa chú thích mở rộng ra ngoài kích thước hình ảnh sẽ giúp giải quyết vấn đề; tuy nhiên, tôi đang xử lý cùng một vấn đề, ngoại trừ việc tôi không sử dụng xử lý trước hình ảnh. Trên cùng một tập dữ liệu, tôi gặp phải lỗi LossTensor is inf or nan. : Tensor had NaN values mỗi ~ 8000 bước.

0

bổ sung chú thích kéo dài bên ngoài kích thước hình ảnh, Bosch Traffic Light đào tạo phát hiện dữ liệu cũng có một hình ảnh nơi x_max < x_min và y_max < y_min gây ra một chiều rộng tiêu cực và chiều cao. Điều này gây ra "LossTensor là inf hoặc nan.: Tensor có giá trị NaN" lỗi mỗi ~ 8000 bước. Tôi đã có những lỗi giống nhau; loại bỏ các mục có vấn đề đã giải quyết được vấn đề.

0

Tôi cũng chạy vào điều này, tôi đã kết thúc bằng văn bản một kịch bản nhanh chóng và bẩn để tìm thấy những quả trứng xấu. Tôi không biết liệu hình ảnh có thay đổi theo thời gian hay không, nhưng tập hợp tôi đã tải xuống có ba hình ảnh có chú thích xấu.
./rgb/train/2015-10-05-11-26-32_bag/105870.png

./rgb/train/2015-10-05-11-26-32_bag/108372.png

./rgb/train/2015-10-05-14-40-46_bag/462350.png

và cho những người quan tâm, heres kịch bản của tôi:

import yaml 
import os 

INPUT_YAML = "train.yaml" 
examples = yaml.load(open(INPUT_YAML, 'rb').read()) 
len_examples = len(examples) 
print("Loaded ", len(examples), "examples") 
for example in examples: 
    for box in example['boxes']: 
    xmin = float(box['x_min']) 
    xmax = float(box['x_max']) 
    ymin = float(box['y_min']) 
    ymax = float(box['y_max']) 
    if xmax < xmin or xmax > 1280 or xmin > 1280: 
     print("INVALID IMAGE: ", example['path'], " X_MAX = ", float(box['x_max'])) 
    if ymax < ymin or ymax > 720 or ymin > 720: 
     print("INVALID IMAGE: ", example['path'], " Y_MAX = ", float(box['y_max'])) 
Các vấn đề liên quan