                                "help": "serializer for alignments file"})
          argument_list.append({"opts": ("-D", "--detector"),
                                "type": str,
                                # case sensitive because this is used to load a plugin.
                                "choices": ("hog", "cnn"),
                                "default": "hog",
                                "help": "Detector to use. 'cnn' detects many more angles but "
                                        "will be much more resource intensive and may fail "
                                        "on large files"})
          argument_list.append({"opts": ("-l", "--ref_threshold"),
 
</s> remove     exclude_names = [basename(Path(x).stem[:-2] + Path(x).suffix) for x in exclude]
 </s> add     exclude_names = [basename(Path(x).stem[:Path(x).stem.rfind('_')] +
        Path(x).suffix) for x in exclude] </s> remove         if self.have_alignments():
 </s> add         if self.have_alignments_file: </s> remove         alignfile = self.get_alignments_path()

 </s> add  </s> remove             faces_detected = self.load_skip_alignments(alignfile, faces_detected)
 </s> add             faces_detected = self.load_skip_alignments(self.alignments_path, faces_detected)
                              "choices": ("hog", "cnn", "all"),
                                "help": "serializer for alignments file"})
          argument_list.append({"opts": ("-D", "--detector"),
                                "type": str,
                                # case sensitive because this is used to load a plugin.
                              "choices": ("hog", "cnn", "all"),
                                "default": "hog",
                                "help": "Detector to use. 'cnn' detects many more angles but "
                                        "will be much more resource intensive and may fail "
                                        "on large files"})
          argument_list.append({"opts": ("-l", "--ref_threshold"),
keep keep keep keep replace keep keep keep keep keep
 Cli/Scripts Refactor (#374)

* Refactor for PEP 8 and split process function

* Remove backwards compatibility for skip frames

* Split optional functions into own class. Make functions more modular

* train.py - Fix write image bug. Make more modular

* convert.py: Extract alignments from frames if they don't exist

* BugFix: SkipExisting broken since face name refactor

* train.py - Semi-fix for hang on reaching target iteration. Now quits on preview mode
Make tensorflow / system warning less verbose

* Final bugfixes

* Add 'all' back in for selectable detectors

* Final minor tweaks 
lib/cli.py