вопрос 1: Как взять произвольное количество ограничивающих рамок для изображения? рекомендуется взять 1 ограничивающую рамку для изображения и сделать то же самое для всей ограничительной рамки?
проблема 2: я борюсь с пользовательской функцией потерь, до сих пор я пришел, это
def assymetric_loss(bboxes):
def custom_loss(input_images,recons_images):
batch_size=input_images.get_shape().as_list()[0]
bbox_size=input_images.get_shape().as_list()[1]
losses=[]
for i in range(20):
input_image=input_images[i]
recons_image=recons_images[i]
bbox=bboxes[i]
#condition = tf.placeholder(tf.int32, shape=[], name="condition")
if bbox_size != None:
bbarea_input_image=create_mask_from_bounding_boxes(input_image, bbox)
bbarea_recons_image=create_mask_from_bounding_boxes(recons_image, bbox)
square = tf.square(tf.subtract(bbarea_input_image, bbarea_recons_image))
reconstruction_error_bbarea=tf.reduce_sum(square)
nonbbx_area_input_image = create_inverse_mask_from_bounding_boxes(input_image, bbox)
nonbbx_area_recons_image = create_inverse_mask_from_bounding_boxes(recons_image, bbox)
square2 = tf.square(tf.subtract(nonbbx_area_input_image, nonbbx_area_recons_image))
reconstruction_error_nonbbx=tf.reduce_sum(square2)
total_loss=tf.add(reconstruction_error_bbarea,reconstruction_error_nonbbx)
#loss=reconstruction_error_bbarea+reconstruction_error_nonbbx
losses.append(tota_loss)
else:
square3 = tf.square(tf.subtract(input_image,recons_image))
reconstruction_loss=tf.reduce_sum(square3)
losses.append(reconstruction_loss)
loss = tf.stack(losses)
return loss
return custom_loss
Примечание: я предполагаю, что размер партии равен 20
некоторые рекомендации помогут Спасибо