/** * Train the annotator with the given data. The default implementation of * this method just calls {@link #train(Object)} on each data item. * Subclasses may override to do something more intelligent if necessary. * * @param data * the training data */ @Override public void train(Iterable<? extends Annotated<OBJECT, ANNOTATION>> data) { for (final Annotated<OBJECT, ANNOTATION> d : data) train(d); }
@Override public List<ScoredAnnotation<PERSON>> annotate(FACE object) { return annotator.annotate(object); }
@Override public Set<PERSON> getAnnotations() { return annotator.getAnnotations(); }
@Override public void reset() { annotator.reset(); }
/** * {@inheritDoc} * * @see org.openimaj.ml.training.IncrementalTrainer#reset() */ @Override public void reset() { this.getAnnotator().getAnnotator().reset(); }
@Override public void train(Annotated<FACE, PERSON> annotedImage) { annotator.train(annotedImage); }
@SuppressWarnings("unchecked") @Override public List<ScoredAnnotation<PERSON>> annotate(FACE object, Collection<PERSON> restrict) { if (annotator instanceof RestrictedAnnotator) { return ((RestrictedAnnotator<FACE, PERSON>) annotator).annotate(object, restrict); } final List<ScoredAnnotation<PERSON>> pot = annotator.annotate(object); if (pot == null || pot.size() == 0) return null; final List<ScoredAnnotation<PERSON>> toKeep = new ArrayList<ScoredAnnotation<PERSON>>(); for (final ScoredAnnotation<PERSON> p : pot) { if (restrict.contains(p.annotation)) toKeep.add(p); } return toKeep; }
/** * {@inheritDoc} * * @see org.openimaj.ml.training.IncrementalTrainer#reset() */ @Override public void reset() { this.getAnnotator().getAnnotator().reset(); }
/** * {@inheritDoc} * * @see org.openimaj.ml.annotation.Annotator#getAnnotations() */ @Override public Set<String> getAnnotations() { return this.getAnnotator().getAnnotator().getAnnotations(); }
@Override public void train(Iterable<? extends Annotated<FACE, PERSON>> data) { annotator.train(data); }
/** * {@inheritDoc} * * @see org.openimaj.ml.annotation.Annotator#annotate(java.lang.Object) */ @Override public List<ScoredAnnotation<String>> annotate(final DoubleFV object) { return this.getAnnotator().getAnnotator().annotate(object); }
/** * {@inheritDoc} * * @see org.openimaj.ml.annotation.Annotator#getAnnotations() */ @Override public Set<String> getAnnotations() { return this.getAnnotator().getAnnotator().getAnnotations(); }
/** * Train the annotator with the given grouped dataset. This method assumes * that each object can appear in multiple groups of the dataset (i.e. a * multi-label problem). Internally, the dataset is converted to a list * containing exactly one reference to each object in the dataset with * (potentially) multiple annotations. * <p> * If the dataset is actually multi-class (i.e. each object belongs to only * a single group), then calling this method is equivalent to calling * {@link #trainMultiClass(GroupedDataset)}, but is less efficient as the * dataset has to be converted into a list. * <p> * Some annotator implementations do not care whether the data is * multi-class or multi-label, and might choose to override this method to * just call {@link #trainMultiClass(GroupedDataset)} instead. * * @param dataset * the dataset to train on */ public void train(GroupedDataset<ANNOTATION, ? extends ListDataset<OBJECT>, OBJECT> dataset) { for (final AnnotatedObject<OBJECT, ANNOTATION> ao : AnnotatedObject.createList(dataset)) { train(ao); } } }
/** * {@inheritDoc} * * @see org.openimaj.ml.annotation.Annotator#annotate(java.lang.Object) */ @Override public List<ScoredAnnotation<String>> annotate(final DoubleFV object) { return this.getAnnotator().getAnnotator().annotate(object); }
/** * {@inheritDoc} * * @see org.openimaj.ml.training.IncrementalTrainer#train(java.lang.Object) */ @Override public void train(final Annotated<DoubleFV, String> annotated) { this.getAnnotator().getAnnotator().train(annotated); }
/** * {@inheritDoc} * * @see org.openimaj.ml.training.IncrementalTrainer#train(java.lang.Object) */ @Override public void train(final Annotated<DoubleFV, String> annotated) { this.getAnnotator().getAnnotator().train(annotated); }
/** * Train the annotator with the given grouped dataset. This method assumes * that each object only appears in a <b>single</b> group of the dataset * (i.e. a multi-class problem). Each group corresponds to the one single * annotation assigned to each object. * <p> * If your dataset contains multiple labels for each object (through an * object appearing in multiple groups) you should use * {@link #train(GroupedDataset)}. * * @param dataset * the dataset to train on */ public void trainMultiClass(GroupedDataset<ANNOTATION, ? extends ListDataset<OBJECT>, OBJECT> dataset) { for (final ANNOTATION grp : dataset.getGroups()) { for (final OBJECT inst : dataset.getInstances(grp)) { train(new AnnotatedObject<OBJECT, ANNOTATION>(inst, grp)); } } }