Мы хотим сделать вклад в этот проект как можно более простым и прозрачным.
Мы ценим все ваши вклады. Если вы заинтересованы в вкладе в 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 для более подробной информации.
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
Если вы планируете изменить код или документацию, пожалуйста, следуйте шагам ниже:
main
.Для получения дополнительной информации о pull requests, пожалуйста, прочитайте руководства GitHub.
Если вы хотите внести новый архитектурный элемент или улучшить веса модели, пожалуйста, посмотрите здесь.
Если вы хотите внести новый набор данных, пожалуйста, посмотрите здесь.
и проверяется на соответствие 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 с новым набором данных без обсуждения его в задаче, так как, вероятно, он не будет принят.
Если все предыдущие проверки (flake8, mypy, unit tests) проходят успешно, пожалуйста, отправьте PR. Отправленные PR пройдут другие тесты на различных операционных системах, версиях Python и аппаратном обеспечении.
Для получения более подробной информации о рабочем процессе pull requests, пожалуйста, прочитайте руководства GitHub.## Лицензия
Участвуя в Torchvision, вы соглашаетесь, что ваши вклады будут лицензированы под LICENSE файлом в корневом каталоге этого дерева исходного кода.
Участники также обязаны подписать нашу лицензию на вклад участников.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )