1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-vision

Клонировать/Скачать
CONTRIBUTING.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 04.06.2025 16:46 158072f

Вклад в Torchvision

Мы хотим сделать вклад в этот проект как можно более простым и прозрачным.

TL;DR

Мы ценим все ваши вклады. Если вы заинтересованы в вкладе в Torchvision, есть много способов помочь.

Ваши вклады могут относиться к следующим категориям:

  • Если вы столкнулись с проблемами, пожалуйста, сообщите об этом.

  • Поддержите проблемы, которые другие пользователи сообщили, если они вам важны.

  • Ответы на вопросы на трекере проблем, исследование багов — это очень ценные вклады в проект.

  • Вы хотите улучшить документацию. Это не менее важно, чем улучшение самой библиотеки! Если вы заметили опечатку в документации, не стесняйтесь отправить pull request на GitHub.

  • Если вы хотите исправить баг

  • Если вы планируете вносить новые функции, утилиты или расширения, пожалуйста, сначала откройте проблему и обсудите функцию с нами.

Проблемы

Мы используем GitHub issues для отслеживания публичных багов. Пожалуйста, убедитесь, что ваше описание ясное и содержит достаточно инструкций для воспроизведения проблемы.## Установка для разработки

Зависимости

Начните с установки nightly сборки PyTorch, следуя официальным инструкциям. Обратите внимание, что официальные инструкции могут попросить вас установить torchvision. Если вы работаете над разработкой torchvision, вы не должны устанавливать предварительно скомпилированные пакеты torchvision.

Опционально, установите libpng и libjpeg-turbo, если вы хотите включить поддержку для нативного кодирования / декодирования форматов PNG и JPEG в torchvision.io:

conda install libpng libjpeg-turbo -c pytorch

Примечание: вы можете использовать переменные окружения TORCHVISION_INCLUDE и TORCHVISION_LIBRARY для указания системы сборки, где находятся эти библиотеки, если они находятся в определенных местах. Посмотрите setup.py для более подробной информации.

Клонирование и установка torchvision

git clone https://github.com/pytorch/vision.git
cd vision
python setup.py develop  # используйте install вместо develop, если вам не нужно участие в разработке.
# или, для macOS
# MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py develop
# для отладки C++, используйте DEBUG=1
# DEBUG=1 python setup.py develop

По умолчанию поддержка GPU включается, если CUDA найдена и torch.cuda.is_available() возвращает true. Можно заставить сборщик включать поддержку GPU, установив переменную окружения FORCE_CUDA=1, что полезно при сборке образа Docker.Официально мы не поддерживаем сборку из исходного кода с помощью pip, но если вы всё же решите это сделать, вам потребуется использовать флаг --no-build-isolation.

Другие зависимости для разработки (некоторые из них необходимы для запуска тестов):

pip install expecttest flake8 typing mypy pytest pytest-mock scipy requests

Процесс разработки

Если вы планируете изменить код или документацию, пожалуйста, следуйте шагам ниже:

  1. Создайте форк репозитория и создайте свой ветвь от main.
  2. Если вы изменили код (новая функциональность или исправление ошибки), пожалуйста, добавьте unit-тесты.
  3. Если вы изменили API, обновите документацию. Убедитесь, что документация собирается.
  4. Убедитесь, что тестовый набор проходит.
  5. Убедитесь, что ваш код проходит проверку форматирования (см. ниже).

Для получения дополнительной информации о pull requests, пожалуйста, прочитайте руководства GitHub.

Если вы хотите внести новый архитектурный элемент или улучшить веса модели, пожалуйста, посмотрите здесь.

Если вы хотите внести новый набор данных, пожалуйста, посмотрите здесь.

Форматирование кода и типизация

ФорматированиеКод torchvision форматируется с помощью black,

и проверяется на соответствие PEP8 с помощью flake8. Вместо прямого использования black, мы используем ufmt для совместимости с внутренней инфраструктурой Facebook.Чтобы форматировать ваш код, установите ufmt с помощью pip install ufmt==1.3.3 black==22.3.0 usort==1.0.2 и используйте, например:

ufmt format torchvision

Для большинства случаев это всё, что вам потребуется. Чтобы ускорить форматирование, вы можете выбрать применение ufmt только к файлам, которые были изменены в вашем pull request, например:```bash ufmt format git diff main --name-only


Аналогично, вы можете проверить ошибки `flake8` с помощью `flake8 torchvision`, хотя
они должны быть довольно редкими, учитывая, что большинство ошибок автоматически устраняются с помощью `ufmt`.

##### Прес-коммит хуки

Для удобства и **строго по желанию**, вы можете использовать [прес-коммит хуки](https://pre-commit.com/), которые будут запускать как `ufmt`, так и `flake8` перед каждым коммитом.

Сначала установите пакет `pre-commit` с помощью `pip install pre-commit`, а затем запустите `pre-commit install` в корне репозитория для настройки хуков - и всё.

Пожалуйста, ознакомьтесь с [документацией прес-коммит](https://pre-commit.com/#usage), чтобы узнать больше и улучшить ваш рабочий процесс. Вы заметите, например, что `pre-commit run --all-files` запустит как `ufmt`, так и `flake8` без необходимости делать коммит, и что флаг `--no-verify` можно добавить к `git commit`, чтобы временно деактивировать хуки.

#### Типовые аннотации

Кодовая база имеет типовые аннотации, поэтому убедитесь, что вы добавляете аннотации типов, если это необходимо. Мы используем инструмент `mypy` для проверки типов:
```bash
mypy --config-file mypy.ini
```### Единичные тесты

Перед запуском тестов убедитесь, что вы установили [зависимости для тестирования](#другие-разработочные-зависимости-некоторые-из-них-необходимы-для-запуска-тестов).

Если вы изменили код, добавив новую функциональность или исправив ошибку, пожалуйста, добавьте единичные тесты для этого. Чтобы запустить конкретный тест:
```bash
pytest test/<test-module.py> -vvv -k <test_myfunc>
# например pytest test/test_transforms.py -vvv -k test_center_crop

Если вы хотите запустить все тесты:

pytest test -vvv

Тесты, которые требуют доступа в интернет, должны быть в test/test_internet.py.

Документация

Torchvision использует стиль Google для форматирования docstrings. Длина строки внутри блока docstrings должна быть ограничена 120 символами.

Пожалуйста, следуйте инструкциям по сборке и развертыванию документации локально.

Установка требуемых пакетов

cd docs
pip install -r requirements.txt

Сборка

cd docs
make html-noplot

Затем откройте docs/build/html/index.html в вашем любимом браузере.

Документация также автоматически собирается при отправке PR. Задача, которая собирает документацию, называется build_docs. Вы можете получить доступ к отрендеренной документации, нажав на эту задачу и затем перейдя на вкладку "Artifacts". Вы можете очистить построенные документы и перезапустить сборку с нуля, выполнив make clean.#### Сборка примеров галереи - или нет

В большинстве случаев выполнение make html-noplot достаточно для сборки документов для вашего конкретного сценария. Часть noplot говорит Sphinx не собирать примеры в галерее, что экономит много времени сборки.

Если вам нужно собрать все примеры в галерее, вы можете использовать make html.

Вы также можете выбрать только сборку подмножества примеров, используя переменную окружения EXAMPLES_PATTERN, которая принимает регулярное выражение. Например, EXAMPLES_PATTERN="transforms" make html соберет только примеры с "transforms" в их названии.

Новая архитектура или улучшенные веса модели

Пожалуйста, обратитесь к руководствам в Конtribution к Torchvision - Модели.

Новый набор данных

Пожалуйста, не отправляйте PR с новым набором данных без обсуждения его в задаче, так как, вероятно, он не будет принят.

Pull Request

Если все предыдущие проверки (flake8, mypy, unit tests) проходят успешно, пожалуйста, отправьте PR. Отправленные PR пройдут другие тесты на различных операционных системах, версиях Python и аппаратном обеспечении.

Для получения более подробной информации о рабочем процессе pull requests, пожалуйста, прочитайте руководства GitHub.## Лицензия

Участвуя в Torchvision, вы соглашаетесь, что ваши вклады будут лицензированы под LICENSE файлом в корневом каталоге этого дерева исходного кода.

Участники также обязаны подписать нашу лицензию на вклад участников.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-vision.git
git@api.gitlife.ru:oschina-mirror/mirrors-vision.git
oschina-mirror
mirrors-vision
mirrors-vision
main