utils.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import os
  2. from typing import List, Dict
  3. from pathlib import Path
  4. from modules import shared, scripts
  5. from preload import default_ddp_path
  6. from tagger.preset import Preset
  7. from tagger.interrogator import Interrogator, DeepDanbooruInterrogator, WaifuDiffusionInterrogator
  8. preset = Preset(Path(scripts.basedir(), 'presets'))
  9. interrogators: Dict[str, Interrogator] = {}
  10. def refresh_interrogators() -> List[str]:
  11. global interrogators
  12. interrogators = {
  13. 'wd14-convnextv2-v2': WaifuDiffusionInterrogator(
  14. 'wd14-convnextv2-v2',
  15. repo_id='SmilingWolf/wd-v1-4-convnextv2-tagger-v2',
  16. revision='v2.0'
  17. ),
  18. 'wd14-vit-v2': WaifuDiffusionInterrogator(
  19. 'wd14-vit-v2',
  20. repo_id='SmilingWolf/wd-v1-4-vit-tagger-v2',
  21. revision='v2.0'
  22. ),
  23. 'wd14-convnext-v2': WaifuDiffusionInterrogator(
  24. 'wd14-convnext-v2',
  25. repo_id='SmilingWolf/wd-v1-4-convnext-tagger-v2',
  26. revision='v2.0'
  27. ),
  28. 'wd14-swinv2-v2': WaifuDiffusionInterrogator(
  29. 'wd14-swinv2-v2',
  30. repo_id='SmilingWolf/wd-v1-4-swinv2-tagger-v2',
  31. revision='v2.0'
  32. ),
  33. 'wd14-convnextv2-v2-git': WaifuDiffusionInterrogator(
  34. 'wd14-convnextv2-v2',
  35. repo_id='SmilingWolf/wd-v1-4-convnextv2-tagger-v2',
  36. ),
  37. 'wd14-vit-v2-git': WaifuDiffusionInterrogator(
  38. 'wd14-vit-v2-git',
  39. repo_id='SmilingWolf/wd-v1-4-vit-tagger-v2'
  40. ),
  41. 'wd14-convnext-v2-git': WaifuDiffusionInterrogator(
  42. 'wd14-convnext-v2-git',
  43. repo_id='SmilingWolf/wd-v1-4-convnext-tagger-v2'
  44. ),
  45. 'wd14-swinv2-v2-git': WaifuDiffusionInterrogator(
  46. 'wd14-swinv2-v2-git',
  47. repo_id='SmilingWolf/wd-v1-4-swinv2-tagger-v2'
  48. ),
  49. 'wd14-vit': WaifuDiffusionInterrogator(
  50. 'wd14-vit',
  51. repo_id='SmilingWolf/wd-v1-4-vit-tagger'),
  52. 'wd14-convnext': WaifuDiffusionInterrogator(
  53. 'wd14-convnext',
  54. repo_id='SmilingWolf/wd-v1-4-convnext-tagger'
  55. ),
  56. }
  57. # load deepdanbooru project
  58. os.makedirs(
  59. getattr(shared.cmd_opts, 'deepdanbooru_projects_path', default_ddp_path),
  60. exist_ok=True
  61. )
  62. for path in os.scandir(shared.cmd_opts.deepdanbooru_projects_path):
  63. if not path.is_dir():
  64. continue
  65. if not Path(path, 'project.json').is_file():
  66. continue
  67. interrogators[path.name] = DeepDanbooruInterrogator(path.name, path)
  68. return sorted(interrogators.keys())
  69. def split_str(s: str, separator=',') -> List[str]:
  70. return [x.strip() for x in s.split(separator) if x]