Best False Acceptance Reduction Strategy: New Satellite Image Detection API

I am creating a new Google Object Detection API to find small objects in large areas of satellite imagery. It works pretty well - it finds all 10 objects that I want, but also get 50-100 false positives [things that look a bit like the target, but are not).

I use the sample configuration from the 'pets' tutorial to customize the model faster_rcnn_resnet101_cocothey offer. I started a small, only 100 training examples of my objects (only 1 class). 50 examples in my validation set. Each example is a 200x200 pixel image with a marked object (~ 40x40) in the center. I train until my plateau of accuracy and loss.

I am relatively new to using deep learning to detect objects. What is the best strategy to improve my accuracy? e.g. Tough Negative Prey? Increase my training kit size? I have not tried the most accurate model that they offer faster_rcnn_inception_resnet_v2_atrous_coco, because I would like to maintain some speed, but if necessary I will do it.

Hard-negative mining seems like a logical move. If you agree on how I implement it, does wrt configure the tfrecord file for my training dataset? Let's say I make 200x200 images for each of 50-100 false positives:

  • Am I creating annotation xml files for each, without an object element?
  • ... or do I label these hard negatives as second grade?
  • 100 100 - ? ?
+6
1

API Tensorflow. , , .

, : Hard Hard Mining

3.1 :

RoIs. (bg), IoU [bg lo, 0,5). bg lo = 0,1 FRCN, SPPnet, [14] ; , , . 5.4 , , , , . bg lo.

, Tensorflow loss.py :

class HardExampleMiner(object):
"""Hard example mining for regions in a list of images.
Implements hard example mining to select a subset of regions to be
back-propagated. For each image, selects the regions with highest losses,
subject to the condition that a newly selected region cannot have
an IOU > iou_threshold with any of the previously selected regions.
This can be achieved by re-using a greedy non-maximum suppression algorithm.
A constraint on the number of negatives mined per positive region can also be
enforced.
Reference papers: "Training Region-based Object Detectors with Online
Hard Example Mining" (CVPR 2016) by Srivastava et al., and
"SSD: Single Shot MultiBox Detector" (ECCV 2016) by Liu et al.
"""

HardMinerObject loss_builder.py :

def build_hard_example_miner(config,
                            classification_weight,
                            localization_weight):
"""Builds hard example miner based on the config.
Args:
    config: A losses_pb2.HardExampleMiner object.
    classification_weight: Classification loss weight.
    localization_weight: Localization loss weight.
Returns:
    Hard example miner.
"""
loss_type = None
if config.loss_type == losses_pb2.HardExampleMiner.BOTH:
    loss_type = 'both'
if config.loss_type == losses_pb2.HardExampleMiner.CLASSIFICATION:
    loss_type = 'cls'
if config.loss_type == losses_pb2.HardExampleMiner.LOCALIZATION:
    loss_type = 'loc'

max_negatives_per_positive = None
num_hard_examples = None
if config.max_negatives_per_positive > 0:
    max_negatives_per_positive = config.max_negatives_per_positive
if config.num_hard_examples > 0:
    num_hard_examples = config.num_hard_examples
hard_example_miner = losses.HardExampleMiner(
    num_hard_examples=num_hard_examples,
    iou_threshold=config.iou_threshold,
    loss_type=loss_type,
    cls_loss_weight=classification_weight,
    loc_loss_weight=localization_weight,
    max_negatives_per_positive=max_negatives_per_positive,
    min_negatives_per_image=config.min_negatives_per_image)
return hard_example_miner

model_builder.py train.py. , ( , LabelImg RectLabel), , . . , - .

, (.. ), , , - , . PASCAL VOC "" ID 0, , 0, .

, , , , . !

0

All Articles