๋ค์ด๋ฒ ๋ถ์บ ์์ ๋ฆฌ๋ทฐ ๊ฐ์ฑ ๋ถ๋ฅ ์ฑ๋ฆฐ์ง๋ฅผ ํ๋๋ฐ venv ๋์ uv๋ฅผ ์ฌ์ฉํด๋ณด๋ฉด ๋ ๋น ๋ฅด๊ณ ์ข๋ค๊ณ ํด์ ์ด๋ฒ ๊ธฐํ์ ์จ๋ณด๋ คํ๋ค
์ ํ ํ๋๋ผ ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ๋ค์ด ์๊ธฐ๊ธฐ๋ ํด์ ๊ทธ๋ฅ ์ ํ ๊ณผ์ ์ ๊ฐ๋จํ ๋ฉ๋ชจ๋ก ๋จ๊ฒจ๋๊ณ ๋์ค์ ์ฐธ๊ณ ํ๋ ค ๋์ ์ด๊ธฐ
์๋๋ ์ฐธ๊ณ ์๋ฃ๋ค
๐ป ๋ด๊ฐ ๋ณด๋ ค๊ณ ์์ฑํ UV ์๋ฒฝ ๊ฐ์ด๋
๐ป ๋ด๊ฐ ๋ณด๋ ค๊ณ ์์ฑํ UV ์๋ฒฝ ๊ฐ์ด๋
์ด ๊ฐ์ด๋์์๋ UV์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ์ค๋ฌด ์ ์ฉ ๋ฐฉ๋ฒ์ ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
velog.io
PIP๋ฅผ ๋์ฒดํ๋ UV ์ฌ์ฉ๋ฒ ๊ฐ์ด๋
PIP๋ฅผ ๋์ฒดํ๋ UV ์ฌ์ฉ๋ฒ ๊ฐ์ด๋
devocean.sk.com
Text Classification ๋ํ uv ์ ์
๋์ปค ์ปจํ ์ด๋ ํ๊ฒฝ์ผ๋ก ๋์ด ์๋ ์๋ฒ์ uv๋ก ํ๋ก์ ํธ ํ๊ฒฝ ์ ํ ํ๋ ค ํ๋ค
uv ์ค์น ์ ์ ์๋ฒ๋ ์์ ๊นกํต์ด๋๊น... ์ค์น ๋ช ๋ น์ด ์คํํ ์ ์๊ฒ๋ curl ๋จผ์ ์ค์นํด์ฃผ๊ธฐ
apt update
apt install curl -y
uv ์ค์น
curl -LsSf https://astral.sh/uv/install.sh | sh
root@instance-16554:~/project: curl -LsSf https://astral.sh/uv/install.sh | sh
downloading uv 0.9.5 x86_64-unknown-linux-gnu
no checksums to verify
installing to /data/ephemeral/home/.local/bin
uv
uvx
everything's installed!
To add $HOME/.local/bin to your PATH, either restart your shell or run:
source $HOME/.local/bin/env (sh, bash, zsh)
source $HOME/.local/bin/env.fish (fish)
ํจ์ค ์ค์ ํด์ฃผ๋ฉด ์ค์น ์๋ฃ
๋งค๋ฒ ํจ์ค๋ฅผ ๋จผ์ ์ก์์ค์ผ uv ๋ช ๋ น์ด๊ฐ ์ ๋๋ก ์ธ์๋๋๋ฐ ์๋์ฒ๋ผ bashrc์ ์ ์ฅํด๋๋ฉด ์๋ฒ ์ ์ํ ๋๋ง๋ค ์คํ๋์ด ๋งค๋ฒ ๋ค์ ํจ์ค๋ฅผ ์ก์์ค ํ์๊ฐ ์์ด์ง๋ค
# bash๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
echo 'export PATH=/data/ephemeral/home/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
root@instance-16554:~/project: export PATH=/data/ephemeral/home/.local/bin:$PATH
root@instance-16554:~/project: which uv
/data/ephemeral/home/.local/bin/uv
root@instance-16554:~/project: uv --version
uv 0.9.5
ํ์ด์ฌ 3.10 ๋ฒ์ ผ ์ค์น
root@instance-16554:~/project: uv python install 3.10
Installed Python 3.10.19 in 9.60s
+ cpython-3.10.19-linux-x86_64-gnu (python3.10)
ํ๋ก์ ํธ ์์ฑ
๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋ project ๋๋ ํ ๋ฆฌ์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ฒ๋ผ ํด๋น ๋๋ ํ ๋ฆฌ ์๋ ์ฌ๋ฌ ํ์ผ๋ค์ด ์์ฑ๋๋ค
root@instance-16554:~/project: uv init
Initialized project `project`

uv init์ผ๋ก๋ ์ด๋ฐ ์ด๊ธฐํ ์์ ๋ง ํด์ฃผ์ง ๊ฐ์ ํ๊ฒฝ์ ์์ฑํด์ฃผ์ง๋ ์๋๋ค๊ณ ํ๋ค
๊ฐ์ํ๊ฒฝ ์์ฑ
root@instance-16554:~/project: uv venv -p 3.10 .py310
Using CPython 3.10.19
Creating virtual environment at: .py310
Activate with: source .py310/bin/activate
root@instance-16554:~/project: uv sync
Using CPython 3.10.19
Creating virtual environment at: .venv
Resolved 1 package in 14ms
Audited in 0.00ms
uv venv๋ฅผ ํตํด ์ํ๋ ํ์ด์ฌ ๋ฒ์ ์ ๊ฐ์ํ๊ฒฝ ์์ฑํ๋ค
๊ทธ๋ฆฌ๊ณ requirements.txt๊ฐ ์์ ๊ฒฝ์ฐ
uv pip install -r requirements.txt
uv sync
์์ ํจ๊ณผ
- ํ์ฌ ํ๋ก์ ํธ์ ์ ์๋ ํจํค์ง ์ ๊ธ ํ์ผ(uv.lock) ๊ธฐ์ค์ผ๋ก venv๋ฅผ ๋๊ธฐํ
- uv.lock์ ์๋ ํจํค์ง๋ ์ญ์ , ์๋ ํจํค์ง๋ ์ค์น/์ ๋ฐ์ดํธ
- ์ฆ, ํ๊ฒฝ์ ์ ์ธ์ ์ํ๋ก ์ ์ง
์ฅ์
- ์ฌํ ๊ฐ๋ฅ ํ๊ฒฝ : ๋ค๋ฅธ ๋จธ์ ์์๋ uv.lock๋ง ์์ผ๋ฉด ๋์ผํ ํ๊ฒฝ์ ๋ง๋ค ์ ์์
- ๋ถํ์ํ ํจํค์ง ์ ๊ฑฐ : ๊ฐ๋ฐ ๋์ค ์ค์นํ๋ค๊ฐ ์ฌ์ฉํ์ง ์๋ ํจํค์ง ์ญ์ ๊ฐ๋ฅ
- ํ ๋จ์ ํ์ : uv.lock์ ๊ณต์ → ํ์์ด ๋์ผํ ํ๊ฒฝ ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๊ฐํธํ ์ ๊ทธ๋ ์ด๋/๋ณต๊ตฌ : ํ๊ฒฝ ๊ผฌ์์ ๋ uv sync๋ก ํ ๋ฒ์ ์ด๊ธฐํ ๊ฐ๋ฅ
์ค... ํ์คํ ํธํด๋ณด์ธ๋ค. ๊ด๋ฆฌ๋ง ์ ํด๋๋ฉด ๊ทธ๋๋ก ๊ฐ์ ธ๊ฐ์ ๋ค๋ฅธ ๊ณณ์์๋ ๋น ๋ฅด๊ฒ ์ ํ ์ด ๊ฐ๋ฅํ๊ณ ํธ๋ฆฌํ ๊ฒ ๊ฐ๋ค
์ฌ๊ธฐ์ ๊ธฐ๋ณธ์ ์ธ ํด๋ค ์ค์นํ๊ณ ์ฃผํผํฐ ๋ ธํธ๋ถ์ด๋ ipykernel ๋ฑ ์ค์นํด์ ์์ ํ๊ฒฝ๊น์ง.
์ฑ๋ฆฐ์ง ํ๋ค๋ณด๋ ์๋ฒ๊ฐ ๊ฐ์๊ธฐ ์ข ๋ฃ๋๊ณ ํ ๊ธฐ๋ ์ด์๋ค์ด ์ข ์ข ๋ฐ์ํด์ ์๋ก ์ ํ ํด์ผํ ์ผ์ด ์์ฃผ ์์ ๊ฒ ๊ฐ์ GPT์ ๋์์ ๋ฐ์ ํ๋ฒ์ ์ ์ ํ ์ ์๋ ํํ๋ก, ์ ์คํฌ๋ฆฝํธ๋ก ์ ๋ฆฌํด๋ณด์๋ค
- ์์ ์๋ํ: ๋น ์๋ฒ์์ setup.sh์ requirements.txt๋ง์ผ๋ก ํ๊ฒฝ์ ์ธํ ๊ฐ๋ฅ.
- uv ๊ธฐ๋ฐ: pip๊ฐ ์๋๋ผ uv๋ฅผ ์ด์ฉํด ๊ฐ์ํ๊ฒฝ(.venv)๊ณผ ์์กด์ฑ ์ค์น๋ฅผ ๊ด๋ฆฌ.
- Python 3.10 ๊ณ ์ : ์ง์ ํ Python ์ธํฐํ๋ฆฌํฐ(/opt/conda/bin/python3.10) ์ฌ์ฉ.
- Jupyter ํธํ: ipykernel ์ค์น ๋ฐ ์ปค๋ ๋ฑ๋ก์ผ๋ก ๋ ธํธ๋ถ์์ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ.
- VSCode ์ง์: .vscode/settings.json ์์ฑ, ๊ฐ์ํ๊ฒฝ ์ฐ๊ฒฐ ๋ฐ lint ํ์ฑํ.
- ํ๋ก์ ํธ ๊ตฌ์กฐ ์ด๊ธฐํ: src, notebooks, data ํด๋์ ๊ธฐ๋ณธ ํ์ผ ์์ฑ.
#!/bin/bash
# =========================================
# /data/ephemeral uv project setup script (uv-only, Python 3.10)
# Python 3.10, uv venv (.venv), Jupyter kernel, VSCode
# =========================================
set -e
# 1. Set project paths
PROJECT_DIR="/data/ephemeral/home/my_project"
UV_BIN="/data/ephemeral/home/.local/bin/uv"
PYTHON_ENV_NAME="py310"
REQUIREMENTS_FILE="/data/ephemeral/home/requirements.txt"
PYTHON_INTERPRETER="/opt/conda/bin/python3.10"
echo "Step 1: Creating and initializing project folder: $PROJECT_DIR"
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
rm -rf * .??* # Remove existing content (irreversible)
# 2. Add uv to PATH
export PATH="$UV_BIN:$PATH"
# 3. Initialize uv project
echo "Step 2: Initializing uv project"
$UV_BIN init
# 4. Create uv virtual environment in default .venv using Python 3.10
echo "Step 3: Creating uv venv in .venv with Python 3.10"
$UV_BIN venv --python "$PYTHON_INTERPRETER"
# 5. Install packages from requirements.txt using uv add
if [ -f "$REQUIREMENTS_FILE" ]; then
echo "Step 4: Installing packages from $REQUIREMENTS_FILE via uv add"
$UV_BIN add -r "$REQUIREMENTS_FILE"
else
echo "Step 4: No requirements.txt found, skipping package installation"
fi
# 6. Install ipykernel via uv add
echo "Step 5: Installing ipykernel via uv add"
$UV_BIN add ipykernel
# 7. Sync uv environment
echo "Step 6: Syncing uv environment"
$UV_BIN sync
# 8. Register Jupyter kernel
echo "Step 7: Registering Jupyter kernel"
source .venv/bin/activate
python -m ipykernel install --user --name $PYTHON_ENV_NAME --display-name "Python ($PYTHON_ENV_NAME)"
# 9. Create project structure
echo "Step 8: Creating project structure"
mkdir -p src notebooks data
touch src/main.py
# 10. VSCode settings
echo "Step 9: Creating VSCode settings"
mkdir -p .vscode
cat > .vscode/settings.json <<EOL
{
"python.defaultInterpreterPath": "\${workspaceFolder}/.venv/bin/python",
"python.terminal.activateEnvironment": true,
"python.linting.enabled": true
}
EOL
echo "Setup complete!"
echo "Project location: $PROJECT_DIR"
echo "Virtual environment: $PROJECT_DIR/.venv"
echo "Python version: $(.venv/bin/python --version)"
echo "Jupyter kernel name: $PYTHON_ENV_NAME"
echo "Requirements installed from: $REQUIREMENTS_FILE"
echo "Ready to use in VSCode"
์ ๋๋ก ์ ํ ์ด ๋์๋ค๋ฉด ์๋์ฒ๋ผ ๋ฑ๋กํ ์ฃผํผํฐ ์ปค๋์ด ๋์จ๋ค
๊ทธ๋ฆฌ๊ณ requirements.txt์ ์๋ ๋ชจ๋๋ค๋ importํ๋ฉด ์ ์์ ์ผ๋ก ๋์ํ๋ค

โ ์ฌ์ฉ ๋ฐฉ๋ฒ
1. setup.sh์ requirements.txt๋ฅผ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ๋๊ธฐ
2. ํฐ๋ฏธ๋์์ ์คํ:
bash setup.sh
3. ์๋ฃ ํ VSCode์์ .venv/bin/python์ ์ธํฐํ๋ฆฌํฐ๋ก ์ง์

์ด๋ฐ ์์ผ๋ก ๊ตฌ์ฑ๋๋ค
์ฌ๊ธฐ์ ๋ฐ๋ก ๋นผ๋์๋ ๋ฐ์ดํฐ๋ ์ฝ๋๋ค ๋ค์ ์ ๋ก๋ํ๋ฉด ์ ํ ๋!
requirements.txt ๊ฒฝ๋ก ์ ๋๋ก ์ค์ ์ํด์ ๊ฐ์ํ๊ฒฝ ๋ง๋ค๊ณ ์ฃผํผํฐ ๋ ธํธ๋ถ ์ปค๋ ๋ฑ๋ก๊น์ง ์ ๋๋ก ๋์๋๋ฐ๋ uv add๊ฐ ์๋์ ๊ฐ์ํ๊ฒฝ์ ๋ํผ์ ์ ๋ฐ์์ด ์๋๋ ๊ฒ ๋๋ฌธ์ ๋ง์ด ํค๋ฉ๋๋ผ ์ ๋๋ก ๋์ํ๊ธฐ๊น์ง 4์๊ฐ์ด๋ ๊ฑธ๋ ค๋ฒ๋ ธ๋ค...
๊ทธ๋๋ ํ์คํ pip install -r requirements.txt pip ์ค์น๋ณด๋ค๋ ์๋๊ฐ ๋ง์ด ๋น ๋ฅธ๊ฒ ์ฒด๊ฐ์ด ๋์๋ค
์๋๋ ๊นกํต ์๋ฒ์์ setup.sh๋ requirements.txt ๋ ๊ฐ ํ์ผ๋ง ๋ฃ๊ณ ์คํฌ๋ฆฝํธ ํ๋ ๋ธ๊น์ผ๋ก ์ ํ ํ๋ ์์คํฌ๋ฆฝํธ์ด๋ค
๋ค์์ ๋ ์๋ฒ ํฐ์ง๋ฉด ์จ๋ณด๊ณ ์ ๋์ํ๋์ง ํ์ธํด๋ด์ผ๊ฒ ๋ค
#!/bin/bash
# =========================================
# Complete server setup with uv (Python 3.10)
# Requires: root
# =========================================
set -e
# --------------------------
# 0. Basic server setup
# --------------------------
echo "Step 0: Updating apt and installing curl"
apt update
apt install -y curl
# --------------------------
# 1. Install uv
# --------------------------
echo "Step 1: Installing uv"
curl -LsSf https://astral.sh/uv/install.sh | sh
# Add uv to PATH automatically for future sessions
echo 'export PATH=/data/ephemeral/home/.local/bin:$PATH' >> ~/.bashrc
export PATH=/data/ephemeral/home/.local/bin:$PATH
# --------------------------
# 2. Project paths
# --------------------------
PROJECT_DIR="/data/ephemeral/home/my_project"
PYTHON_ENV_NAME="py310"
REQUIREMENTS_FILE="/data/ephemeral/home/requirements.txt"
PYTHON_INTERPRETER="/opt/conda/bin/python3.10"
echo "Step 2: Creating and initializing project folder: $PROJECT_DIR"
mkdir -p "$PROJECT_DIR"
cd "$PROJECT_DIR"
rm -rf * .??* # Remove existing content
# --------------------------
# 3. Initialize uv project
# --------------------------
echo "Step 3: Initializing uv project"
uv init
# --------------------------
# 4. Create uv virtual environment
# --------------------------
echo "Step 4: Creating uv venv in .venv with Python 3.10"
uv venv --python "$PYTHON_INTERPRETER"
# --------------------------
# 5. Install packages from requirements.txt
# --------------------------
if [ -f "$REQUIREMENTS_FILE" ]; then
echo "Step 5: Installing packages from $REQUIREMENTS_FILE via uv add"
uv add -r "$REQUIREMENTS_FILE"
else
echo "Step 5: No requirements.txt found, skipping package installation"
fi
# --------------------------
# 6. Install ipykernel
# --------------------------
echo "Step 6: Installing ipykernel via uv add"
uv add ipykernel
# --------------------------
# 7. Sync uv environment
# --------------------------
echo "Step 7: Syncing uv environment"
uv sync
# --------------------------
# 8. Register Jupyter kernel
# --------------------------
echo "Step 8: Registering Jupyter kernel"
source .venv/bin/activate
python -m ipykernel install --user --name $PYTHON_ENV_NAME --display-name "Python ($PYTHON_ENV_NAME)"
# --------------------------
# 9. Create project structure
# --------------------------
echo "Step 9: Creating project structure"
mkdir -p src notebooks data
touch src/main.py
# --------------------------
# 10. VSCode settings
# --------------------------
echo "Step 10: Creating VSCode settings"
mkdir -p .vscode
cat > .vscode/settings.json <<EOL
{
"python.defaultInterpreterPath": "\${workspaceFolder}/.venv/bin/python",
"python.terminal.activateEnvironment": true,
"python.linting.enabled": true
}
EOL
# --------------------------
# 11. Finish
# --------------------------
echo "Setup complete!"
echo "Project location: $PROJECT_DIR"
echo "Virtual environment: $PROJECT_DIR/.venv"
echo "Python version: $(.venv/bin/python --version)"
echo "Jupyter kernel name: $PYTHON_ENV_NAME"
echo "Requirements installed from: $REQUIREMENTS_FILE"
echo "Ready to use in VSCode"
Object Detection ๋ํ ์๋ฒ ์ ์
uv๋ก ๊ฐ์ํ๊ฒฝ ๋ง๋ค๊ณ ๋ถ์บ ์ธก์ด ๊ณต์ ํด์ค ๋ฒ ์ด์ค๋ผ์ธ์ ์ ์ ํ๋ค๋ณด๋ฉด ์ฌ๋ฌ ์ด์๋ค์ด ๋ฐ์ํ๋ค
์๋ฌ๋ ๋ฐ๋ก ์ ์ง ์์์ง๋ง ์๋ฒ ๊ธฐ๋ณธ ๋ฉ๋ด์ผ์์ ๊ฐ์ ํ๊ฒฝ์ ํ์ด์ฌ ๋ฒ์ ์ 3.11์ ์ฌ์ฉํ๋๋ฐ MMDetection์ ์ฌ์ฉํ๋ ค ํ ๊ฒฝ์ฐ 3.8์ด์ 3.11๋ฏธ๋ง ๋ฒ์ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ด์๋ ๋ฐ์ํ์๋ค
๊ทธ๋์ ๊ฐ์ํ๊ฒฝ ํ์ด์ฌ ๋ฒ์ ์ 3.10์ ์ฌ์ฉํ์๋ค
๊ทธ ๋ค์๋ ๊ฐ์ด ๋ค์ด์๋ setup.py๋ฅผ ์คํํ์ฌ ์ ํ ํ ๋ค์ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋๋ฅผ ์คํํ๋ค๋ณด๋ฉด ์๋์ ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋๋ค
์ค์ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ๋์ ํด๋น ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ก ํ ์คํธํด๋ด๋ ๋์ผ
from mmdet.utils import register_all_modules
register_all_modules(init_default_scope=True)
>> ModuleNotFoundError: No module named 'mmcv._ext'
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[2], line 11
9 # config file ๋ค๊ณ ์ค๊ธฐ
10 cfg = Config.fromfile("configs/faster_rcnn/faster-rcnn_r50_fpn_1x_coco.py")
---> 11 register_all_modules(init_default_scope=True)
12 cfg.default_scope = "mmdet"
14 # dataset config ์์
File ~/baseline/mmdetection/mmdet/utils/setup_env.py:97, in register_all_modules(init_default_scope)
86 def register_all_modules(init_default_scope: bool = True) -> None:
87 """Register all modules in mmdet into the registries.
88
89 Args:
(...)
95 Defaults to True.
96 """ # noqa
---> 97 import mmdet.datasets # noqa: F401,F403
98 import mmdet.engine # noqa: F401,F403
99 import mmdet.evaluation # noqa: F401,F403
File ~/baseline/mmdetection/mmdet/datasets/__init__.py:31
26 from .reid_dataset import ReIDDataset
27 from .samplers import (AspectRatioBatchSampler, ClassAwareSampler,
28 CustomSampleSizeSampler, GroupMultiSourceSampler,
29 MultiSourceSampler, TrackAspectRatioBatchSampler,
30 TrackImgSampler)
---> 31 from .utils import get_loading_pipeline
32 from .v3det import V3DetDataset
33 from .voc import VOCDataset
File ~/baseline/mmdetection/mmdet/datasets/utils.py:5
1 # Copyright (c) OpenMMLab. All rights reserved.
3 from mmcv.transforms import LoadImageFromFile
----> 5 from mmdet.datasets.transforms import LoadAnnotations, LoadPanopticAnnotations
6 from mmdet.registry import TRANSFORMS
9 def get_loading_pipeline(pipeline):
File ~/baseline/mmdetection/mmdet/datasets/transforms/__init__.py:6
2 from .augment_wrappers import AutoAugment, RandAugment
3 from .colorspace import (AutoContrast, Brightness, Color, ColorTransform,
4 Contrast, Equalize, Invert, Posterize, Sharpness,
5 Solarize, SolarizeAdd)
----> 6 from .formatting import (ImageToTensor, PackDetInputs, PackReIDInputs,
7 PackTrackInputs, ToTensor, Transpose)
8 from .frame_sampling import BaseFrameSample, UniformRefFrameSample
9 from .geometric import (GeomTransform, Rotate, ShearX, ShearY, TranslateX,
10 TranslateY)
File ~/baseline/mmdetection/mmdet/datasets/transforms/formatting.py:11
9 from mmdet.registry import TRANSFORMS
10 from mmdet.structures import DetDataSample, ReIDDataSample, TrackDataSample
---> 11 from mmdet.structures.bbox import BaseBoxes
14 @TRANSFORMS.register_module()
15 class PackDetInputs(BaseTransform):
16 """Pack the inputs data for the detection / semantic segmentation /
17 panoptic segmentation.
18
(...)
42 'scale_factor', 'flip', 'flip_direction')``
43 """
File ~/baseline/mmdetection/mmdet/structures/bbox/__init__.py:2
1 # Copyright (c) OpenMMLab. All rights reserved.
----> 2 from .base_boxes import BaseBoxes
3 from .bbox_overlaps import bbox_overlaps
4 from .box_type import (autocast_box_type, convert_box_type, get_box_type,
5 register_box, register_box_converter)
File ~/baseline/mmdetection/mmdet/structures/bbox/base_boxes.py:9
6 import torch
7 from torch import BoolTensor, Tensor
----> 9 from mmdet.structures.mask.structures import BitmapMasks, PolygonMasks
11 T = TypeVar('T')
12 DeviceType = Union[str, torch.device]
File ~/baseline/mmdetection/mmdet/structures/mask/__init__.py:3
1 # Copyright (c) OpenMMLab. All rights reserved.
2 from .mask_target import mask_target
----> 3 from .structures import (BaseInstanceMasks, BitmapMasks, PolygonMasks,
4 bitmap_to_polygon, polygon_to_bitmap)
5 from .utils import encode_mask_results, mask2bbox, split_combined_polys
7 __all__ = [
8 'split_combined_polys', 'mask_target', 'BaseInstanceMasks', 'BitmapMasks',
9 'PolygonMasks', 'encode_mask_results', 'mask2bbox', 'polygon_to_bitmap',
10 'bitmap_to_polygon'
11 ]
File ~/baseline/mmdetection/mmdet/structures/mask/structures.py:12
10 import shapely.geometry as geometry
11 import torch
---> 12 from mmcv.ops.roi_align import roi_align
14 T = TypeVar('T')
17 class BaseInstanceMasks(metaclass=ABCMeta):
File ~/baseline/.venv/lib/python3.10/site-packages/mmcv/ops/__init__.py:3
1 # Copyright (c) OpenMMLab. All rights reserved.
2 from mmcv.utils import IS_MLU_AVAILABLE
----> 3 from .active_rotated_filter import active_rotated_filter
4 from .assign_score_withk import assign_score_withk
5 from .ball_query import ball_query
File ~/baseline/.venv/lib/python3.10/site-packages/mmcv/ops/active_rotated_filter.py:10
6 from torch.autograd.function import once_differentiable
8 from ..utils import ext_loader
---> 10 ext_module = ext_loader.load_ext(
11 '_ext',
12 ['active_rotated_filter_forward', 'active_rotated_filter_backward'])
15 class ActiveRotatedFilterFunction(Function):
16 """Encoding the orientation information and generating orientation-
17 sensitive features.
18
19 The details are described in the paper `Align Deep Features for Oriented
20 Object Detection <https://arxiv.org/abs/2008.09397>_`.
21 """
File ~/baseline/.venv/lib/python3.10/site-packages/mmcv/utils/ext_loader.py:13, in load_ext(name, funcs)
12 def load_ext(name, funcs):
---> 13 ext = importlib.import_module('mmcv.' + name)
14 for fun in funcs:
15 assert hasattr(ext, fun), f'{fun} miss in module {name}'
File ~/.local/share/uv/python/cpython-3.10.19-linux-x86_64-gnu/lib/python3.10/importlib/__init__.py:126, in import_module(name, package)
124 break
125 level += 1
--> 126 return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'mmcv._ext'
ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ์๋ฒ์ ์ฟ ๋ค, torch ๋ฑ์ ๋ฒ์ ผ๊ณผ ์ค์นํ๋ ค๋ MMDetection์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๋ค์ด ์๋ง์์ ๋ฐ์ํ๋ ์ผ
uv ๊ฐ์ํ๊ฒฝ ์ ์
# ํ๋ก์ ํธ ์์น์์ ์คํ
uv venv --python 3.10
uv pip install -r requirements.txt
uv pip install pip
# ๊ฐ์ํ๊ฒฝ ํ์ฑํ +pip ์ต์ ํ
source .venv/bin/activate
pip install -U pip
# ์ฃผํผํฐ ๋
ธํธ๋ถ์ ๊ฐ์ํ๊ฒฝ ์ปค๋ ๋ฑ๋ก
uv pip install ipykernel
python -m ipykernel install --user --name baseline --display-name "Python (baseline)"
PyTorch 2.1.0 + cu121 ์ค์น
pip install torch==2.1.0 --index-url https://download.pytorch.org/whl/cu121
์ ์ ์ค์น์ ๋ฒ์ ผ
import torch
print("torch:", torch.__version__)
print("cuda :", torch.version.cuda)
>>
torch: 2.1.0+cu121
cuda : 12.1
torchvision ์ค์น (torch 2.1.0๊ณผ ํธํ๋๋ ๋ฒ์ )
pip install torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu121
import torchvision
print("vision:", torchvision.__version__)
openmim, MMEngine ์ค์น
pip install -U openmim
mim install mmengine
MMCV 2.1.0 cu121 + torch2.1 wheel ์ค์น
โ ๏ธ ์ ๋ pip install mmcv ํ๋ฉด ์ ๋จ
โ ๏ธ ๋ฐ๋์ ์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ผ _ext CUDA ๋ชจ๋์ด ํฌํจ๋ wheel์ด ์ค์น๋จ
pip install "mmcv==2.1.0" -f https://download.openmmlab.com/mmcv/dist/cu121/torch2.1/index.html
MMDetection ์ค์น
mim install "mmdet==3.3.0"
์ต์ข ์ฒดํฌ
import mmcv, os, glob
mmcv_dir = os.path.dirname(mmcv.__file__)
print("ext:", glob.glob(os.path.join(mmcv_dir, "_ext*")))
>>
ext: ['/data/ephemeral/home/baseline/.venv/lib/python3.10/site-packages/mmcv/_ext.cpython-310-x86_64-linux-gnu.so']
- _ext ๋ชจ๋์ด ์ ์์ ์ผ๋ก ์์นํ ๊ฒ ํ์ธ
from mmdet.utils import register_all_modules
register_all_modules(init_default_scope=True)
print("MMDetection OK")
>>
MMDetection OK
- ๋ชจ๋ ์ ์์ ์ผ๋ก ํธ์ถ๋ ํ์ธ ์๋ฃ
- ํ์ต๋ ์ ์์ ์ผ๋ก ๋์