lightly-train 0.2.4__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. {lightly_train-0.2.4 → lightly_train-0.3.0}/.github/pull_request_template.md +1 -1
  2. {lightly_train-0.2.4 → lightly_train-0.3.0}/.github/workflows/build_docker_image.yml +3 -3
  3. lightly_train-0.2.4/.github/workflows/test_code_format.yml → lightly_train-0.3.0/.github/workflows/check_code_format.yml +4 -4
  4. {lightly_train-0.2.4 → lightly_train-0.3.0}/.github/workflows/release_dockerhub.yml +8 -8
  5. {lightly_train-0.2.4 → lightly_train-0.3.0}/.github/workflows/release_pypi.yml +3 -3
  6. {lightly_train-0.2.4 → lightly_train-0.3.0}/.github/workflows/test_docker.yml +3 -3
  7. lightly_train-0.2.4/.github/workflows/test.yml → lightly_train-0.3.0/.github/workflows/test_unit.yml +4 -6
  8. lightly_train-0.2.4/.github/workflows/weekly_dependency_tests.yml → lightly_train-0.3.0/.github/workflows/test_unit_latest_dependencies.yml +5 -4
  9. lightly_train-0.2.4/.github/workflows/test_minimal_deps.yml → lightly_train-0.3.0/.github/workflows/test_unit_minimal_dependencies.yml +4 -6
  10. {lightly_train-0.2.4 → lightly_train-0.3.0}/.gitignore +5 -0
  11. lightly_train-0.3.0/CONTRIBUTING.md +48 -0
  12. {lightly_train-0.2.4 → lightly_train-0.3.0}/DOCS.md +26 -13
  13. lightly_train-0.3.0/MAINTAINING.md +19 -0
  14. {lightly_train-0.2.4 → lightly_train-0.3.0}/Makefile +27 -1
  15. {lightly_train-0.2.4/src/lightly_train.egg-info → lightly_train-0.3.0}/PKG-INFO +30 -20
  16. {lightly_train-0.2.4 → lightly_train-0.3.0}/README.md +14 -16
  17. {lightly_train-0.2.4 → lightly_train-0.3.0}/docker/README.md +9 -9
  18. lightly_train-0.3.0/docs/Makefile +41 -0
  19. lightly_train-0.3.0/docs/build.py +70 -0
  20. lightly_train-0.3.0/docs/source/_static/custom.css +11 -0
  21. lightly_train-0.3.0/docs/source/_static/lightly_train.svg +6 -0
  22. lightly_train-0.3.0/docs/source/_templates/sidebar/version.html +1 -0
  23. lightly_train-0.3.0/docs/source/conf.py +71 -0
  24. lightly_train-0.3.0/docs/source/index.md +11 -0
  25. lightly_train-0.3.0/docs/source/installation.md +5 -0
  26. lightly_train-0.3.0/docs/source/python_api/index.md +8 -0
  27. lightly_train-0.3.0/docs/source/python_api/lightly_train.md +10 -0
  28. {lightly_train-0.2.4 → lightly_train-0.3.0}/pyproject.toml +32 -4
  29. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/__init__.py +1 -1
  30. lightly_train-0.3.0/src/lightly_train/_callbacks/callback_args.py +40 -0
  31. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_callbacks/callback_helpers.py +14 -20
  32. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_callbacks/checkpoint.py +13 -10
  33. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_checkpoint.py +8 -1
  34. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_cli.py +33 -19
  35. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/common_helpers.py +17 -2
  36. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/embed.py +119 -87
  37. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/export.py +29 -22
  38. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/extract_video_frames.py +39 -32
  39. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/train.py +179 -96
  40. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/train_helpers.py +92 -33
  41. lightly_train-0.3.0/src/lightly_train/_configs/config.py +76 -0
  42. lightly_train-0.3.0/src/lightly_train/_configs/validate.py +171 -0
  43. lightly_train-0.3.0/src/lightly_train/_data/_serialize/memory_mapped_sequence.py +138 -0
  44. lightly_train-0.3.0/src/lightly_train/_data/image_dataset.py +72 -0
  45. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/embedding_transform.py +2 -2
  46. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_loggers/jsonl.py +2 -4
  47. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_loggers/logger_args.py +8 -8
  48. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_loggers/logger_helpers.py +8 -23
  49. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_loggers/tensorboard.py +5 -6
  50. lightly_train-0.3.0/src/lightly_train/_loggers/wandb.py +29 -0
  51. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_methods/densecl.py +63 -29
  52. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_methods/densecldino.py +26 -91
  53. lightly_train-0.3.0/src/lightly_train/_methods/dino.py +282 -0
  54. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_methods/method.py +24 -13
  55. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_methods/method_args.py +7 -4
  56. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_methods/simclr.py +32 -11
  57. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/package_helpers.py +2 -0
  58. lightly_train-0.3.0/src/lightly_train/_models/super_gradients/segmentation_module.py +59 -0
  59. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/super_gradients/super_gradients_package.py +7 -1
  60. lightly_train-0.3.0/src/lightly_train/_models/ultralytics/ultralytics.py +96 -0
  61. lightly_train-0.3.0/src/lightly_train/_models/ultralytics/ultralytics_package.py +98 -0
  62. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_optim/adamw_args.py +6 -10
  63. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_optim/optimizer_args.py +2 -4
  64. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_plot.py +3 -1
  65. lightly_train-0.2.4/src/lightly_train/_transforms.py → lightly_train-0.3.0/src/lightly_train/_transforms/to_tensor.py +1 -1
  66. lightly_train-0.3.0/src/lightly_train/_transforms/transform.py +100 -0
  67. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/errors.py +4 -0
  68. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/types.py +0 -11
  69. {lightly_train-0.2.4 → lightly_train-0.3.0/src/lightly_train.egg-info}/PKG-INFO +30 -20
  70. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train.egg-info/SOURCES.txt +38 -7
  71. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train.egg-info/requires.txt +16 -3
  72. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_callbacks/test_callback_helpers.py +15 -57
  73. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_commands/test_common_helpers.py +41 -3
  74. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_commands/test_embed.py +27 -10
  75. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_commands/test_export.py +18 -2
  76. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_commands/test_extract_video_frames.py +33 -3
  77. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_commands/test_train.py +114 -24
  78. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_commands/test_train_helpers.py +148 -22
  79. lightly_train-0.3.0/tests/_configs/test_config.py +56 -0
  80. lightly_train-0.3.0/tests/_configs/test_validate.py +144 -0
  81. lightly_train-0.3.0/tests/_data/_serialize/test_memory_mapped_sequence.py +119 -0
  82. lightly_train-0.3.0/tests/_data/test_image_dataset.py +166 -0
  83. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_loggers/test_logger_helpers.py +12 -32
  84. lightly_train-0.3.0/tests/_methods/test_densecl.py +18 -0
  85. lightly_train-0.3.0/tests/_methods/test_densecldino.py +17 -0
  86. lightly_train-0.3.0/tests/_methods/test_dino.py +20 -0
  87. lightly_train-0.3.0/tests/_methods/test_simclr.py +17 -0
  88. lightly_train-0.3.0/tests/_models/custom/__init__.py +7 -0
  89. lightly_train-0.3.0/tests/_models/super_gradients/test_segmentation_module.py +36 -0
  90. lightly_train-0.3.0/tests/_models/super_gradients/test_super_gradients_package.py +74 -0
  91. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_models/test_package_helpers.py +10 -1
  92. lightly_train-0.3.0/tests/_models/timm/__init__.py +7 -0
  93. lightly_train-0.3.0/tests/_models/ultralytics/test_ultralytics.py +65 -0
  94. lightly_train-0.3.0/tests/_models/ultralytics/test_ultralytics_package.py +56 -0
  95. lightly_train-0.3.0/tests/_optim/__init__.py +7 -0
  96. lightly_train-0.3.0/tests/_transforms/__init__.py +7 -0
  97. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/helpers.py +75 -1
  98. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/test__checkpoint.py +3 -0
  99. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/test__cli.py +30 -20
  100. lightly_train-0.2.4/CONTRIBUTE.md +0 -13
  101. lightly_train-0.2.4/src/lightly_train/_callbacks/callback_args.py +0 -45
  102. lightly_train-0.2.4/src/lightly_train/_configs/config.py +0 -12
  103. lightly_train-0.2.4/src/lightly_train/_configs/validate.py +0 -96
  104. lightly_train-0.2.4/src/lightly_train/_loggers/wandb.py +0 -32
  105. lightly_train-0.2.4/src/lightly_train/_methods/dino.py +0 -237
  106. lightly_train-0.2.4/tests/_configs/test_validate.py +0 -101
  107. lightly_train-0.2.4/tests/_models/super_gradients/test_super_gradients_package.py +0 -47
  108. {lightly_train-0.2.4 → lightly_train-0.3.0}/LICENSE +0 -0
  109. {lightly_train-0.2.4 → lightly_train-0.3.0}/dev_tools/licenseheader.tmpl +0 -0
  110. {lightly_train-0.2.4 → lightly_train-0.3.0}/docker/Dockerfile-amd64-cuda +0 -0
  111. {lightly_train-0.2.4 → lightly_train-0.3.0}/docker/Makefile +0 -0
  112. {lightly_train-0.2.4 → lightly_train-0.3.0}/setup.cfg +0 -0
  113. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_callbacks/__init__.py +0 -0
  114. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/__init__.py +0 -0
  115. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_commands/_warnings.py +0 -0
  116. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_configs/__init__.py +0 -0
  117. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_configs/omegaconf_utils.py +0 -0
  118. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_constants.py +0 -0
  119. {lightly_train-0.2.4/src/lightly_train/_embedding → lightly_train-0.3.0/src/lightly_train/_data}/__init__.py +0 -0
  120. {lightly_train-0.2.4/src/lightly_train/_embedding/writers → lightly_train-0.3.0/src/lightly_train/_data/_serialize}/__init__.py +0 -0
  121. {lightly_train-0.2.4/src/lightly_train/_loggers → lightly_train-0.3.0/src/lightly_train/_embedding}/__init__.py +0 -0
  122. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/embedding_format.py +0 -0
  123. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/embedding_predictor.py +0 -0
  124. {lightly_train-0.2.4/src/lightly_train/_methods → lightly_train-0.3.0/src/lightly_train/_embedding/writers}/__init__.py +0 -0
  125. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/writers/csv_writer.py +0 -0
  126. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/writers/embedding_writer.py +0 -0
  127. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/writers/torch_writer.py +0 -0
  128. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_embedding/writers/writer_helpers.py +0 -0
  129. {lightly_train-0.2.4/src/lightly_train/_models → lightly_train-0.3.0/src/lightly_train/_loggers}/__init__.py +0 -0
  130. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_logging.py +0 -0
  131. {lightly_train-0.2.4/src/lightly_train/_models/custom → lightly_train-0.3.0/src/lightly_train/_methods}/__init__.py +0 -0
  132. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_methods/method_helpers.py +0 -0
  133. {lightly_train-0.2.4/src/lightly_train/_models/embedding → lightly_train-0.3.0/src/lightly_train/_models}/__init__.py +0 -0
  134. {lightly_train-0.2.4/src/lightly_train/_models/super_gradients → lightly_train-0.3.0/src/lightly_train/_models/custom}/__init__.py +0 -0
  135. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/custom/custom.py +0 -0
  136. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/custom/custom_package.py +0 -0
  137. {lightly_train-0.2.4/src/lightly_train/_models/timm → lightly_train-0.3.0/src/lightly_train/_models/embedding}/__init__.py +0 -0
  138. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/embedding/base.py +0 -0
  139. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/embedding_model.py +0 -0
  140. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/feature_extractor.py +0 -0
  141. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/package.py +0 -0
  142. {lightly_train-0.2.4/src/lightly_train/_models/torchvision → lightly_train-0.3.0/src/lightly_train/_models/super_gradients}/__init__.py +0 -0
  143. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/super_gradients/customizable_detector.py +0 -0
  144. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/super_gradients/super_gradients.py +0 -0
  145. {lightly_train-0.2.4/src/lightly_train/_optim → lightly_train-0.3.0/src/lightly_train/_models/timm}/__init__.py +0 -0
  146. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/timm/timm.py +0 -0
  147. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/timm/timm_package.py +0 -0
  148. {lightly_train-0.2.4/tests → lightly_train-0.3.0/src/lightly_train/_models/torchvision}/__init__.py +0 -0
  149. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/torchvision/convnext.py +0 -0
  150. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/torchvision/resnet.py +0 -0
  151. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/torchvision/torchvision.py +0 -0
  152. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_models/torchvision/torchvision_package.py +0 -0
  153. {lightly_train-0.2.4/tests/_callbacks → lightly_train-0.3.0/src/lightly_train/_models/ultralytics}/__init__.py +0 -0
  154. {lightly_train-0.2.4/tests/_commands → lightly_train-0.3.0/src/lightly_train/_optim}/__init__.py +0 -0
  155. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_optim/optimizer.py +0 -0
  156. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_optim/optimizer_type.py +0 -0
  157. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_optim/trainable_modules.py +0 -0
  158. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train/_scaling.py +0 -0
  159. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train.egg-info/dependency_links.txt +0 -0
  160. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train.egg-info/entry_points.txt +0 -0
  161. {lightly_train-0.2.4 → lightly_train-0.3.0}/src/lightly_train.egg-info/top_level.txt +0 -0
  162. {lightly_train-0.2.4/tests/_configs → lightly_train-0.3.0/tests}/__init__.py +0 -0
  163. {lightly_train-0.2.4/tests/_embedding → lightly_train-0.3.0/tests/_callbacks}/__init__.py +0 -0
  164. {lightly_train-0.2.4/tests/_embedding/writers → lightly_train-0.3.0/tests/_commands}/__init__.py +0 -0
  165. {lightly_train-0.2.4/tests/_methods → lightly_train-0.3.0/tests/_configs}/__init__.py +0 -0
  166. {lightly_train-0.2.4/tests/_models → lightly_train-0.3.0/tests/_embedding}/__init__.py +0 -0
  167. {lightly_train-0.2.4/tests/_models/custom → lightly_train-0.3.0/tests/_embedding/writers}/__init__.py +0 -0
  168. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_embedding/writers/test_csv_writer.py +0 -0
  169. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_embedding/writers/test_torch_writer.py +0 -0
  170. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_embedding/writers/test_writer_helpers.py +0 -0
  171. {lightly_train-0.2.4/tests/_models/timm → lightly_train-0.3.0/tests/_methods}/__init__.py +0 -0
  172. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_methods/test_method_helpers.py +0 -0
  173. {lightly_train-0.2.4/tests/_optim → lightly_train-0.3.0/tests/_models}/__init__.py +0 -0
  174. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_models/custom/test_custom.py +0 -0
  175. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_models/custom/test_custom_package.py +0 -0
  176. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_models/timm/test_timm.py +0 -0
  177. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_models/timm/test_timm_package.py +0 -0
  178. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_models/torchvision/test_torchvision_package.py +0 -0
  179. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/_optim/test_optimizer.py +0 -0
  180. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/test__logging.py +0 -0
  181. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/test__plot.py +0 -0
  182. {lightly_train-0.2.4 → lightly_train-0.3.0}/tests/test__scaling.py +0 -0
@@ -4,4 +4,4 @@
4
4
 
5
5
  ## How has it been tested?
6
6
 
7
- (Delete this: Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration.)
7
+ (Delete this: Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration.)
@@ -1,4 +1,4 @@
1
- name: Docker image build and push to gcloud registry
1
+ name: Build Docker Image
2
2
 
3
3
  # Pushes a release candidate build to lightly-main/train after a merge into main
4
4
 
@@ -18,7 +18,7 @@ concurrency:
18
18
 
19
19
  jobs:
20
20
  build-docker-image:
21
- name: build docker image
21
+ name: Build Docker Image
22
22
  runs-on: cpu
23
23
  timeout-minutes: 60
24
24
  outputs:
@@ -41,7 +41,7 @@ jobs:
41
41
  cd ./docker && make main-deploy-amd64-cuda
42
42
 
43
43
  slack-notification:
44
- name: send slack notification
44
+ name: Send Slack Notification
45
45
  needs:
46
46
  - build-docker-image
47
47
  if: always()
@@ -1,4 +1,4 @@
1
- name: Code Format Check
1
+ name: Check Code Format
2
2
 
3
3
  on:
4
4
  push:
@@ -28,9 +28,9 @@ jobs:
28
28
  - '!docs/**'
29
29
  - '!docker/**'
30
30
  - '!.github/**'
31
- - '.github/workflows/test_code_format.yml'
32
- test:
33
- name: Check
31
+ - '.github/workflows/check_code_format.yml'
32
+ check-code-format:
33
+ name: Check Code Format
34
34
  runs-on: cpu
35
35
  strategy:
36
36
  matrix:
@@ -1,12 +1,12 @@
1
- name: Docker Hub Release
1
+ name: Release DockerHub
2
2
 
3
3
  on:
4
4
  workflow_call:
5
5
  workflow_dispatch:
6
6
 
7
7
  jobs:
8
- dockerhub-push:
9
- name: Push the latest main image to DockerHub
8
+ release-dockerhub:
9
+ name: Release DockerHub
10
10
  runs-on: cpu
11
11
  defaults:
12
12
  run:
@@ -23,15 +23,15 @@ jobs:
23
23
  docker login -u borislightly -p ${{ secrets.DOCKERHUB_PASSWORD_BORISLIGHTLY }}
24
24
  make release
25
25
  slack-notification:
26
- name: send slack notification
26
+ name: Send Slack Notification
27
27
  needs:
28
- - dockerhub-push
28
+ - release-dockerhub
29
29
  if: always()
30
30
  runs-on: cpu
31
31
  timeout-minutes: 5
32
32
  steps:
33
33
  - name: Slack Notification - Success
34
- if: ${{ needs.dockerhub-push.result == 'success' }}
34
+ if: ${{ needs.release-dockerhub.result == 'success' }}
35
35
  uses: rtCamp/action-slack-notify@v2
36
36
  env:
37
37
  SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_RELEASES }}
@@ -44,12 +44,12 @@ jobs:
44
44
 
45
45
  Pull it from the registry with:
46
46
  ```
47
- docker pull lighly/train:latest
47
+ docker pull lightly/train:latest
48
48
  ```
49
49
 
50
50
  See it in DockerHub at https://hub.docker.com/repository/docker/lightly/train/general
51
51
  - name: Slack Notification - Failure
52
- if: ${{ needs.dockerhub-push.result != 'success' }}
52
+ if: ${{ needs.release-dockerhub.result != 'success' }}
53
53
  uses: rtCamp/action-slack-notify@v2
54
54
  env:
55
55
  SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_RELEASES }}
@@ -1,4 +1,4 @@
1
- name: Build and release LightlyTrain package to PyPI
1
+ name: Release PyPI
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
@@ -7,8 +7,8 @@ on:
7
7
  # types: [published]
8
8
 
9
9
  jobs:
10
- build:
11
- name: Build and release
10
+ release-pypi:
11
+ name: Release PyPI
12
12
  runs-on: cpu
13
13
  steps:
14
14
  - name: Checkout code
@@ -1,4 +1,4 @@
1
- name: Docker Tests
1
+ name: Test Docker
2
2
 
3
3
  on:
4
4
  push:
@@ -28,8 +28,8 @@ jobs:
28
28
  - '!docs/**'
29
29
  - '!.github/**'
30
30
  - '.github/workflows/test_docker.yml'
31
- test:
32
- name: Test
31
+ test-docker:
32
+ name: Test Docker
33
33
  needs: detect-code-changes
34
34
  if: needs.detect-code-changes.outputs.run-tests == 'true'
35
35
  runs-on: cpu
@@ -1,4 +1,4 @@
1
- name: Unit Tests
1
+ name: Test Unit
2
2
 
3
3
  on:
4
4
  push:
@@ -28,9 +28,9 @@ jobs:
28
28
  - '!docs/**'
29
29
  - '!docker/**'
30
30
  - '!.github/**'
31
- - '.github/workflows/test.yml'
32
- test:
33
- name: Test
31
+ - '.github/workflows/test_unit.yml'
32
+ test-unit:
33
+ name: Test Unit
34
34
  needs: detect-code-changes
35
35
  if: needs.detect-code-changes.outputs.run-tests == 'true'
36
36
  runs-on: cpu
@@ -51,8 +51,6 @@ jobs:
51
51
  make install-pinned-${{ matrix.python }}
52
52
  make install-ffmpeg-ubuntu
53
53
  - name: Run Pytest
54
- env:
55
- CUDA_VISIBLE_DEVICES: ""
56
54
  run: |
57
55
  source .venv/bin/activate
58
56
  make test-ci
@@ -1,4 +1,4 @@
1
- name: Weekly Dependency Test
1
+ name: Test Unit Latest Dependencies
2
2
 
3
3
  on:
4
4
  workflow_dispatch:
@@ -26,9 +26,9 @@ jobs:
26
26
  - '!docs/**'
27
27
  - '!docker/**'
28
28
  - '!.github/**'
29
- - '.github/workflows/weekly_dependency_tests.yml'
30
- test:
31
- name: Test
29
+ - '.github/workflows/test_unit_latest_dependencies.yml'
30
+ test-unit-latest-dependencies:
31
+ name: Test Unit Latest Dependencies
32
32
  needs: detect-code-changes
33
33
  if: needs.detect-code-changes.outputs.run-tests == 'true'
34
34
  runs-on: cpu
@@ -49,6 +49,7 @@ jobs:
49
49
  make install-latest
50
50
  make install-ffmpeg-ubuntu
51
51
  - name: Run Pytest
52
+ # TODO(Philipp, 09/24): Remove CUDA_VISIBLE_DEVICES: "".
52
53
  env:
53
54
  CUDA_VISIBLE_DEVICES: ""
54
55
  run: |
@@ -1,4 +1,4 @@
1
- name: Minimal Dependency Tests
1
+ name: Test Unit Minimal Dependencies
2
2
 
3
3
  on:
4
4
  push:
@@ -28,9 +28,9 @@ jobs:
28
28
  - '!docs/**'
29
29
  - '!docker/**'
30
30
  - '!.github/**'
31
- - '.github/workflows/test_minimal_deps.yml'
32
- test:
33
- name: Test
31
+ - '.github/workflows/test_unit_minimal_dependencies.yml'
32
+ test-unit-minimal-dependencies:
33
+ name: Test Unit Minimal Dependencies
34
34
  needs: detect-code-changes
35
35
  if: needs.detect-code-changes.outputs.run-tests == 'true'
36
36
  runs-on: cpu
@@ -54,8 +54,6 @@ jobs:
54
54
  make install-ffmpeg-ubuntu
55
55
  fi
56
56
  - name: Run Pytest
57
- env:
58
- CUDA_VISIBLE_DEVICES: ""
59
57
  run: |
60
58
  source .venv/bin/activate
61
59
  make test-ci
@@ -2,6 +2,11 @@
2
2
  lightly_train_docker_test_data
3
3
  out
4
4
 
5
+ ### Ultralytics ###
6
+ # Ultralytics downloads files to the current work directory.
7
+ yolo*.pt
8
+ yolo*.yaml
9
+
5
10
  # Created by https://www.toptal.com/developers/gitignore/api/macos,windows,linux,python
6
11
  # Edit at https://www.toptal.com/developers/gitignore?templates=macos,windows,linux,python
7
12
 
@@ -0,0 +1,48 @@
1
+ # Contributing to LightlyTrain
2
+
3
+ ## Development
4
+
5
+ ```
6
+ git clone https://github.com/lightly-ai/lightly-train.git
7
+ make install-dev
8
+ ```
9
+
10
+ ```
11
+ make format
12
+ make static-checks
13
+ make test
14
+ ```
15
+
16
+ ### Documentation
17
+
18
+ Documentation is in the [docs](./docs) folder. To build the documentation, install
19
+ dev dependencies with `make install-dev`, then move to the `docs` folder and run:
20
+
21
+ ```
22
+ make docs
23
+ ```
24
+
25
+ This builds the documentation in the `docs/build/<version>` folder.
26
+
27
+ To build the documentation for the stable version, checkout the branch with the
28
+ stable version and run:
29
+
30
+ ```
31
+ make docs-stable
32
+ ```
33
+
34
+ This builds the documentaion in the `docs/build/stable` folder.
35
+
36
+ Docs can be served locally with:
37
+
38
+ ```
39
+ make serve
40
+ ```
41
+
42
+ #### Writing Documentation
43
+
44
+ The documentation source is in [docs/source](./docs/source). The documentation is
45
+ written in Markdown (MyST flavor). For more information regarding formatting, see:
46
+
47
+ - https://pradyunsg.me/furo/reference/
48
+ - https://myst-parser.readthedocs.io/en/latest/syntax/typography.html
@@ -9,6 +9,7 @@ pip install lightly-train[tensorboard,timm]
9
9
  ### Python
10
10
 
11
11
  #### Training
12
+
12
13
  ```python
13
14
  import lightly_train
14
15
 
@@ -28,20 +29,24 @@ lightly_train.train(
28
29
  In most cases you only have to specify `out`, `data`, and `model`. The rest is optional.
29
30
 
30
31
  You can monitor your training process with the help of `tensorboard` and `wandb` loggers:
32
+
31
33
  ```
32
34
  pip install "lightly-train[tensorboard, wandb]"
33
35
  ```
34
36
 
35
37
  Configure the loggers from Python:
36
- * `loggers={"tensorboard": True}`: Enable `tensorboard` logger with default arguments.
37
- * `loggers={"wandb": True}`: Enable `wandb` logger with default arguments.
38
- * `loggers={"wandb": {"project": "my-project"}}`: Configure `wandb` logger with custom arguments.
38
+
39
+ - `loggers={"tensorboard": True}`: Enable `tensorboard` logger with default arguments.
40
+ - `loggers={"wandb": True}`: Enable `wandb` logger with default arguments.
41
+ - `loggers={"wandb": {"project": "my-project"}}`: Configure `wandb` logger with custom arguments.
39
42
 
40
43
  LightlyTrain uses the PyTorchLightning loggers under the hood. Learn more about their configuration:
41
- * https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html
42
- * https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.tensorboard.html
44
+
45
+ - https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html
46
+ - https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.tensorboard.html
43
47
 
44
48
  #### Exporting
49
+
45
50
  ```python
46
51
  import lightly_train
47
52
 
@@ -54,6 +59,7 @@ lightly_train.export(
54
59
  ```
55
60
 
56
61
  #### Embedding
62
+
57
63
  ```python
58
64
  import lightly_train
59
65
 
@@ -66,27 +72,29 @@ lightly_train.embed(
66
72
  ```
67
73
 
68
74
  #### Supported Models
75
+
69
76
  ```python
70
77
  import lightly_train
71
78
  print(lightly_train.list_models())
72
79
  ```
73
80
 
74
81
  #### Supported Methods
82
+
75
83
  ```python
76
84
  import lightly_train
77
85
  print(lightly_train.list_methods())
78
86
  ```
79
87
 
80
-
81
-
82
88
  ### Command Line
83
89
 
84
90
  #### Help
91
+
85
92
  ```
86
93
  lightly-train help
87
94
  ```
88
95
 
89
96
  #### Training
97
+
90
98
  ```
91
99
  lightly-train train \
92
100
  out=my_output_dir \
@@ -103,25 +111,28 @@ lightly-train train \
103
111
  In most cases you only have to specify `out`, `data`, and `model`. The rest is optional.
104
112
 
105
113
  You can monitor your training process with the help of `tensorboard` and `wandb` loggers:
114
+
106
115
  ```
107
116
  pip install "lightly-train[tensorboard, wandb]"
108
117
  ```
109
118
 
110
119
  Configure the loggers from the command-line:
111
- * `loggers.tensorboard=True`: Enable `tensorboard` logger with default arguments.
112
- * `loggers.wandb=True`: Enable `wandb` logger with default arguments.
113
- * `loggers.wandb.project="my-project"`: Configure `wandb` logger with custom arguments.
120
+
121
+ - `loggers.tensorboard=True`: Enable `tensorboard` logger with default arguments.
122
+ - `loggers.wandb=True`: Enable `wandb` logger with default arguments.
123
+ - `loggers.wandb.project="my-project"`: Configure `wandb` logger with custom arguments.
114
124
 
115
125
  LightlyTrain uses the PyTorchLightning loggers under the hood. Learn more about their configuration:
116
- * https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html
117
- * https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.tensorboard.html
118
126
 
127
+ - https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.wandb.html
128
+ - https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.loggers.tensorboard.html
119
129
 
120
130
  ```
121
131
  tensorboard --logdir my_output_dir
122
132
  ```
123
133
 
124
134
  #### Embedding
135
+
125
136
  ```
126
137
  lightly-train embed \
127
138
  out=my_output_dir/embeddings.csv \
@@ -131,6 +142,7 @@ lightly-train embed \
131
142
  ```
132
143
 
133
144
  #### Exporting
145
+
134
146
  ```
135
147
  lightly-train export \
136
148
  out=my_output_dir/model_state_dict.pt \
@@ -139,13 +151,14 @@ lightly-train export \
139
151
  format=torch_state_dict
140
152
  ```
141
153
 
142
-
143
154
  #### Supported Models
155
+
144
156
  ```
145
157
  lightly-train list_models
146
158
  ```
147
159
 
148
160
  #### Supported Methods
161
+
149
162
  ```
150
163
  lightly-train list_methods
151
164
  ```
@@ -0,0 +1,19 @@
1
+ # Maintaining LightlyTrain
2
+
3
+ This document is intended for maintainers of LightlyTrain. If you would like to
4
+ contribute, please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) document.
5
+
6
+ ## Release
7
+
8
+ Follow these steps to release a new version of LightlyTrain:
9
+
10
+ 1. Bump the version in `lightly_train/__init__.py`. We use [Semantic Versioning](https://semver.org/). Note that we are still on major version 0 and therefore minor version
11
+ bumps are considered breaking changes.
12
+ 1. Once the version is bumped, create a new release on GitHub: https://github.com/lightly-ai/lightly-train/releases with a new tag that matches the version number. Make sure to
13
+ create release notes using the "Generate release notes" button.
14
+ 1. To release on PyPI, run the [PyPI Release action](https://github.com/lightly-ai/lightly-train/actions/workflows/release_pypi.yml) from the main branch.
15
+ 1. To release on DockerHub, run the [DockerHub Release action](https://github.com/lightly-ai/lightly-train/actions/workflows/release_dockerhub.yml) from the branch with the new
16
+ version tag.
17
+ 1. If the README was updated, make sure to copy the information to the DockerHub
18
+ description for LightlyTrain: https://hub.docker.com/r/lightly/ (you might have to ask
19
+ someone who is a member of the Lightly DockerHub organization to do this for you).
@@ -36,6 +36,11 @@ all-checks: static-checks test
36
36
  .PHONY: static-checks
37
37
  static-checks: format-check type-check
38
38
 
39
+ # Files to format with mdformat.
40
+ # This is needed to avoid formatting files in .venv. The mdformat command has an
41
+ # --exclude option but only on Python 3.13+.
42
+ MDFORMAT_FILES=.github docker docs src tests *.md
43
+
39
44
  # run formatter
40
45
  .PHONY: format
41
46
  format:
@@ -43,12 +48,16 @@ format:
43
48
  ruff format .
44
49
  # Fix linting issues and sort imports
45
50
  ruff check --fix .
51
+ # Format markdown files
52
+ mdformat ${MDFORMAT_FILES}
46
53
 
47
54
  # run format check
48
55
  .PHONY: format-check
49
56
  format-check:
50
57
  # Check code formatting
51
58
  ruff check .
59
+ # Check markdown formatting
60
+ mdformat --check ${MDFORMAT_FILES}
52
61
 
53
62
  # run type check
54
63
  .PHONY: type-check
@@ -105,12 +114,19 @@ endif
105
114
 
106
115
  # SuperGradients is not compatible with Python>=3.10. It is also not easy to install
107
116
  # on MacOS. Therefore we exclude it from the default extras.
108
- EXTRAS = [dev,tensorboard,timm,wandb]
117
+ EXTRAS = [dev,tensorboard,timm,ultralytics,wandb]
118
+ # Exclude ultralytics from docker extras as it has an AGPL license and we should not
119
+ # distribute it with the docker image.
109
120
  DOCKER_EXTRAS = --extra tensorboard --extra timm --extra wandb
110
121
 
111
122
  # Date until which dependencies installed with --exclude-newer must have been released.
112
123
  # Dependencies released after this date are ignored.
113
124
  EXCLUDE_NEWER_DATE="2024-08-28"
125
+ # Pinned versions for Torch and TorchVision to avoid issues with the CUDA version on the CI machine.
126
+ # These versions are compatible with CUDA 11.4 and Python 3.8. They are the latest versions
127
+ # available before 2024-08-28.
128
+ PINNED_TORCH_VERSION="2.4.0+cu118"
129
+ PINNED_TORCHVISION_VERSION="0.19.0+cu118"
114
130
 
115
131
  # Install ffmpeg on Ubuntu.
116
132
  . PHONY: install-ffmpeg-ubuntu
@@ -157,9 +173,16 @@ install-minimal-extras:
157
173
  # We have to differentiate between Python versions because SuperGradients is not
158
174
  # compatible with Python>=3.10. For 3.8 we install the package with all extras,
159
175
  # including SuperGradients.
176
+ #
177
+ # Torch and TorchVision are pinned to specific versions to avoid issues with the
178
+ # CUDA version on the CI machine. See PINNED_TORCH_VERSION and PINNED_TORCHVISION_VERSION
179
+ # for the pinned versions.
160
180
  .PHONY: install-pinned-3.8
161
181
  install-pinned-3.8:
162
182
  uv pip install --exclude-newer ${EXCLUDE_NEWER_DATE} --reinstall ${EDITABLE} . --all-extras --requirement pyproject.toml
183
+ uv pip install \
184
+ "torch==${PINNED_TORCH_VERSION}" "torchvision==${PINNED_TORCHVISION_VERSION}" \
185
+ --index-url https://download.pytorch.org/whl/cu118 --reinstall
163
186
 
164
187
  # Install package for Python 3.11 with dependencies pinned to the latest compatible
165
188
  # version available at EXCLUDE_NEWER_DATE.
@@ -168,6 +191,9 @@ install-pinned-3.8:
168
191
  .PHONY: install-pinned-3.11
169
192
  install-pinned-3.11:
170
193
  uv pip install --exclude-newer ${EXCLUDE_NEWER_DATE} --reinstall ${EDITABLE} ".${EXTRAS}"
194
+ uv pip install \
195
+ "torch==${PINNED_TORCH_VERSION}" "torchvision==${PINNED_TORCHVISION_VERSION}" \
196
+ --index-url https://download.pytorch.org/whl/cu118 --reinstall
171
197
 
172
198
  # Install package with the latest dependencies.
173
199
  .PHONY: install-latest
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lightly_train
3
- Version: 0.2.4
3
+ Version: 0.3.0
4
4
  Summary: Train models with self-supervised learning in a single command
5
5
  Author: Lightly Team
6
6
  License: AGPL-3.0
@@ -8,26 +8,38 @@ Keywords: machine-learning,computer-vision,deep-learning,self-supervised-learnin
8
8
  Requires-Python: >=3.8
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
+ Requires-Dist: eval-type-backport>=0.2
11
12
  Requires-Dist: lightly>=1.5.12
12
13
  Requires-Dist: omegaconf>=2.3
13
14
  Requires-Dist: psutil>=5.0
15
+ Requires-Dist: pyarrow>=15.0.0
14
16
  Requires-Dist: pytorch_lightning>=2.1
15
17
  Requires-Dist: torch>=2.0.0
16
18
  Requires-Dist: torchvision>=0.15.1
17
19
  Requires-Dist: tqdm>=4.0.0
18
20
  Provides-Extra: dev
19
- Requires-Dist: pytest>=8.0.0; extra == "dev"
21
+ Requires-Dist: licenseheaders>=0.8.8; extra == "dev"
22
+ Requires-Dist: mdformat>=0.7.17; extra == "dev"
23
+ Requires-Dist: mypy>=1.10.0; extra == "dev"
20
24
  Requires-Dist: pytest-mock>=3.14.0; extra == "dev"
25
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
21
26
  Requires-Dist: ruff>=0.4.0; extra == "dev"
22
- Requires-Dist: mypy>=1.10.0; extra == "dev"
27
+ Requires-Dist: types-pillow>=10.2.0; extra == "dev"
23
28
  Requires-Dist: types-tqdm>=4.0.0; extra == "dev"
24
- Requires-Dist: licenseheaders>=0.8.8; extra == "dev"
29
+ Requires-Dist: furo>=2024.04.27; extra == "dev"
30
+ Requires-Dist: myst_parser>=3.0; extra == "dev"
31
+ Requires-Dist: sphinx-autoapi>=3.0; extra == "dev"
32
+ Requires-Dist: sphinx-copybutton>=0.5.2; extra == "dev"
33
+ Requires-Dist: sphinx-inline-tabs>=2023.4.21; extra == "dev"
34
+ Requires-Dist: sphinx>=7.1; extra == "dev"
25
35
  Provides-Extra: super-gradients
26
36
  Requires-Dist: super-gradients>=3.7; extra == "super-gradients"
27
37
  Provides-Extra: tensorboard
28
38
  Requires-Dist: tensorboard>=2.10.0; extra == "tensorboard"
29
39
  Provides-Extra: timm
30
40
  Requires-Dist: timm>=1.0.3; extra == "timm"
41
+ Provides-Extra: ultralytics
42
+ Requires-Dist: ultralytics>=8.1.0; extra == "ultralytics"
31
43
  Provides-Extra: wandb
32
44
  Requires-Dist: wandb>=0.12.10; extra == "wandb"
33
45
 
@@ -35,13 +47,12 @@ Requires-Dist: wandb>=0.12.10; extra == "wandb"
35
47
 
36
48
  *Train models with self-supervised learning in a single command*
37
49
 
38
-
39
50
  ## Why LightlyTrain
40
51
 
41
52
  LightlyTrain uses self-supervised learning (SSL) to train models on large datasets
42
53
  without the need for labels. It provides simple Python, Command Line, and Docker
43
54
  interfaces to train models with popular SSL methods such as SimCLR or DINO. The trained
44
- models are ideal starting points for fine-tuning on downstream tasks such as image
55
+ models are ideal starting points for fine-tuning on downstream tasks such as image
45
56
  classification, object detection, and segmentation or for generating image embeddings.
46
57
  Models trained with LightlyTrain result in improved performance, faster convergence, and
47
58
  better generalization compared to models trained without SSL. Image embeddings created
@@ -51,19 +62,18 @@ and seamlessly extend to new classes due to the unsupervised nature of SSL.
51
62
  Lightly is the expert in SSL for computer vision and developed LightlyTrain to simplify
52
63
  model training for any task and dataset.
53
64
 
54
-
55
65
  ## Features
56
66
 
57
- * Train models on any image data without labels
58
- * Train models from popular libraries such as [torchvision](https://github.com/pytorch/vision), [TIMM](https://github.com/huggingface/pytorch-image-models), and [SuperGradients](https://github.com/Deci-AI/super-gradients)
59
- * Train custom models
60
- * No SSL expertise required
61
- * Automatic SSL method selection (soon!)
62
- * Python, Command Line, and Docker support
63
- * Multi-GPU and multi-node (soon!) support
64
- * Export models for fine-tuning or inference
65
- * Generate and export image embeddings
66
- * Monitor training progress with TensorBoard, Weights & Biases, Neptune, etc. (soon!)
67
+ - Train models on any image data without labels
68
+ - Train models from popular libraries such as [torchvision](https://github.com/pytorch/vision), [TIMM](https://github.com/huggingface/pytorch-image-models), [Ultralytics](https://github.com/ultralytics/ultralytics), and [SuperGradients](https://github.com/Deci-AI/super-gradients)
69
+ - Train custom models
70
+ - No SSL expertise required
71
+ - Automatic SSL method selection (soon!)
72
+ - Python, Command Line, and Docker support
73
+ - Multi-GPU and multi-node (soon!) support
74
+ - Export models for fine-tuning or inference
75
+ - Generate and export image embeddings
76
+ - Monitor training progress with TensorBoard, Weights & Biases, Neptune, etc. (soon!)
67
77
 
68
78
  ## License
69
79
 
@@ -72,6 +82,6 @@ at info@lightly.ai for more information.
72
82
 
73
83
  ## Contact
74
84
 
75
- * [**Email**](info@lightly.ai)
76
- * [**Website**](https://www.lightly.ai/lightlytrain)
77
- * [**Discord**](https://discord.gg/xvNJW94)
85
+ - [**Email**](info@lightly.ai)
86
+ - [**Website**](https://www.lightly.ai/lightlytrain)
87
+ - [**Discord**](https://discord.gg/xvNJW94)
@@ -2,13 +2,12 @@
2
2
 
3
3
  *Train models with self-supervised learning in a single command*
4
4
 
5
-
6
5
  ## Why LightlyTrain
7
6
 
8
7
  LightlyTrain uses self-supervised learning (SSL) to train models on large datasets
9
8
  without the need for labels. It provides simple Python, Command Line, and Docker
10
9
  interfaces to train models with popular SSL methods such as SimCLR or DINO. The trained
11
- models are ideal starting points for fine-tuning on downstream tasks such as image
10
+ models are ideal starting points for fine-tuning on downstream tasks such as image
12
11
  classification, object detection, and segmentation or for generating image embeddings.
13
12
  Models trained with LightlyTrain result in improved performance, faster convergence, and
14
13
  better generalization compared to models trained without SSL. Image embeddings created
@@ -18,19 +17,18 @@ and seamlessly extend to new classes due to the unsupervised nature of SSL.
18
17
  Lightly is the expert in SSL for computer vision and developed LightlyTrain to simplify
19
18
  model training for any task and dataset.
20
19
 
21
-
22
20
  ## Features
23
21
 
24
- * Train models on any image data without labels
25
- * Train models from popular libraries such as [torchvision](https://github.com/pytorch/vision), [TIMM](https://github.com/huggingface/pytorch-image-models), and [SuperGradients](https://github.com/Deci-AI/super-gradients)
26
- * Train custom models
27
- * No SSL expertise required
28
- * Automatic SSL method selection (soon!)
29
- * Python, Command Line, and Docker support
30
- * Multi-GPU and multi-node (soon!) support
31
- * Export models for fine-tuning or inference
32
- * Generate and export image embeddings
33
- * Monitor training progress with TensorBoard, Weights & Biases, Neptune, etc. (soon!)
22
+ - Train models on any image data without labels
23
+ - Train models from popular libraries such as [torchvision](https://github.com/pytorch/vision), [TIMM](https://github.com/huggingface/pytorch-image-models), [Ultralytics](https://github.com/ultralytics/ultralytics), and [SuperGradients](https://github.com/Deci-AI/super-gradients)
24
+ - Train custom models
25
+ - No SSL expertise required
26
+ - Automatic SSL method selection (soon!)
27
+ - Python, Command Line, and Docker support
28
+ - Multi-GPU and multi-node (soon!) support
29
+ - Export models for fine-tuning or inference
30
+ - Generate and export image embeddings
31
+ - Monitor training progress with TensorBoard, Weights & Biases, Neptune, etc. (soon!)
34
32
 
35
33
  ## License
36
34
 
@@ -39,6 +37,6 @@ at info@lightly.ai for more information.
39
37
 
40
38
  ## Contact
41
39
 
42
- * [**Email**](info@lightly.ai)
43
- * [**Website**](https://www.lightly.ai/lightlytrain)
44
- * [**Discord**](https://discord.gg/xvNJW94)
40
+ - [**Email**](info@lightly.ai)
41
+ - [**Website**](https://www.lightly.ai/lightlytrain)
42
+ - [**Discord**](https://discord.gg/xvNJW94)