/** * Create a {@link Stage} from a trained ensemble. * * @param ensemble * the ensemble * @return the stage */ private Stage createStage(final List<ObjectFloatPair<StumpClassifier>> ensemble) { final HaarFeatureClassifier[] trees = new HaarFeatureClassifier[ensemble.size()]; for (int i = 0; i < trees.length; i++) { final ObjectFloatPair<StumpClassifier> wc = ensemble.get(i); final StumpClassifier c = wc.first; final float alpha = wc.second; final float threshold = c.threshold; final float leftValue = c.sign > 0 ? -alpha : alpha; final HaarFeature feature = features.get(c.dimension); final ValueClassifier left = new ValueClassifier(leftValue); final ValueClassifier right = new ValueClassifier(-leftValue); trees[i] = new HaarFeatureClassifier(feature, threshold, left, right); } final Stage root = new Stage(0, trees, null, null); return root; }
private static Classifier buildClassifier(final List<TreeNode> tree, TreeNode current) { final HaarFeatureClassifier fc = new HaarFeatureClassifier(current.feature, current.threshold, null, null); if (current.left_node == -1) { fc.left = new ValueClassifier(current.left_val); } else { fc.left = buildClassifier(tree, tree.get(current.left_node)); } if (current.right_node == -1) { fc.right = new ValueClassifier(current.right_val); } else { fc.right = buildClassifier(tree, tree.get(current.right_node)); } return fc; }
/** * Create a {@link Stage} from a trained ensemble. * * @param ensemble * the ensemble * @return the stage */ private Stage createStage(final List<ObjectFloatPair<StumpClassifier>> ensemble) { final HaarFeatureClassifier[] trees = new HaarFeatureClassifier[ensemble.size()]; for (int i = 0; i < trees.length; i++) { final ObjectFloatPair<StumpClassifier> wc = ensemble.get(i); final StumpClassifier c = wc.first; final float alpha = wc.second; final float threshold = c.threshold; final float leftValue = c.sign > 0 ? -alpha : alpha; final HaarFeature feature = features.get(c.dimension); final ValueClassifier left = new ValueClassifier(leftValue); final ValueClassifier right = new ValueClassifier(-leftValue); trees[i] = new HaarFeatureClassifier(feature, threshold, left, right); } final Stage root = new Stage(0, trees, null, null); return root; }
private static Classifier buildClassifier(final List<TreeNode> tree, TreeNode current) { final HaarFeatureClassifier fc = new HaarFeatureClassifier(current.feature, current.threshold, null, null); if (current.left_node == -1) { fc.left = new ValueClassifier(current.left_val); } else { fc.left = buildClassifier(tree, tree.get(current.left_node)); } if (current.right_node == -1) { fc.right = new ValueClassifier(current.right_val); } else { fc.right = buildClassifier(tree, tree.get(current.right_node)); } return fc; }