update readme.md
This commit is contained in:
@@ -2,11 +2,20 @@
|
|||||||
|
|
||||||
COCO80 기반 **YOLO26m** 객체 탐지 결과를 받아, 탐지된 **Person** 영역의 상세 속성을 분석하는 ClearML Agent입니다.
|
COCO80 기반 **YOLO26m** 객체 탐지 결과를 받아, 탐지된 **Person** 영역의 상세 속성을 분석하는 ClearML Agent입니다.
|
||||||
|
|
||||||
## 역할
|
## 개요
|
||||||
|
|
||||||
1. YOLO26m이 COCO80 클래스로 이미지를 분석하고 Person의 바운딩 박스(`xywh`)를 전달
|
1. YOLO26m이 COCO80 클래스로 이미지를 분석하고 Person의 바운딩 박스(`xywh`)를 전달합니다.
|
||||||
2. 해당 영역을 크롭한 뒤 보행자 속성 인식 모델로 상세 속성 추론
|
2. 해당 영역을 크롭한 뒤 보행자 속성 인식 모델로 상세 속성을 추론합니다.
|
||||||
3. 결과를 ClearML 아티팩트로 업로드
|
3. 결과를 ClearML 아티팩트로 업로드합니다.
|
||||||
|
|
||||||
|
## 프로젝트 구조
|
||||||
|
|
||||||
|
| 파일 | 역할 |
|
||||||
|
|------|------|
|
||||||
|
| `main.py` | ClearML Task 초기화 및 아티팩트 업로드 (Agent 진입점) |
|
||||||
|
| `start.py` | 이미지 로드, 크롭, 모델 추론 로직 |
|
||||||
|
| `inference.py` | 단일 이미지 로컬 추론 스크립트 |
|
||||||
|
| `train.py` / `test.py` | 모델 학습 및 평가 |
|
||||||
|
|
||||||
## 입력
|
## 입력
|
||||||
|
|
||||||
@@ -20,13 +29,34 @@ COCO80 기반 **YOLO26m** 객체 탐지 결과를 받아, 탐지된 **Person**
|
|||||||
| 대상 | 내용 |
|
| 대상 | 내용 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| 콘솔 | 속성명·값 목록 (예: `gender: female`, `age: teenager`) |
|
| 콘솔 | 속성명·값 목록 (예: `gender: female`, `age: teenager`) |
|
||||||
| 파일 | 크롭 이미지 `cropped_image.jpg` |
|
| ClearML | `final_result` 아티팩트 — `{"output": {...}, "status": "PASS"}` |
|
||||||
| ClearML | `final_result` 아티팩트 — `{"output": [...], "status": "PASS"}` |
|
|
||||||
|
`output`은 속성명을 키, 속성값을 값으로 하는 딕셔너리입니다.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"output": {
|
||||||
|
"gender": "female",
|
||||||
|
"age": "teenager"
|
||||||
|
},
|
||||||
|
"status": "PASS"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 실행
|
## 실행
|
||||||
|
|
||||||
|
### ClearML Agent (권장)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python main.py \
|
uv run python main.py \
|
||||||
|
--image_url "https://example.com/image.jpg" \
|
||||||
|
--xywh "404,290,74,193"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 로컬 테스트 (ClearML 없이)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv run python start.py \
|
||||||
--image_url "https://example.com/image.jpg" \
|
--image_url "https://example.com/image.jpg" \
|
||||||
--xywh "404,290,74,193"
|
--xywh "404,290,74,193"
|
||||||
```
|
```
|
||||||
@@ -36,12 +66,17 @@ python main.py \
|
|||||||
- Python 3.11+
|
- Python 3.11+
|
||||||
- PyTorch, torchvision, ClearML, requests
|
- PyTorch, torchvision, ClearML, requests
|
||||||
- 사전 학습 체크포인트: `checkpoints/market/resnet50_nfc/net_last.pth`
|
- 사전 학습 체크포인트: `checkpoints/market/resnet50_nfc/net_last.pth`
|
||||||
|
- 속성 라벨 정의: `doc/label.json`, `doc/attribute.json`
|
||||||
|
|
||||||
### 설치
|
### 설치
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
uv sync
|
uv sync
|
||||||
# 또는
|
```
|
||||||
|
|
||||||
|
또는
|
||||||
|
|
||||||
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -51,8 +86,13 @@ pip install -r requirements.txt
|
|||||||
|------|-----|
|
|------|-----|
|
||||||
| Project | `Person_Attribute_Recognition` |
|
| Project | `Person_Attribute_Recognition` |
|
||||||
| Task | `model-yolo-person-classify` |
|
| Task | `model-yolo-person-classify` |
|
||||||
|
| Artifact | `final_result` |
|
||||||
|
|
||||||
## 모델
|
## 모델
|
||||||
|
|
||||||
- **탐지**: YOLO26m (COCO80)
|
| 단계 | 모델 | 비고 |
|
||||||
- **속성 인식**: ResNet50 + NFC (Market-1501 Attribute, 기본값)
|
|------|------|------|
|
||||||
|
| 탐지 | YOLO26m (COCO80) | 상위 파이프라인에서 수행 |
|
||||||
|
| 속성 인식 | ResNet50 + NFC | Market-1501 Attribute (기본값) |
|
||||||
|
|
||||||
|
`start.py`의 `run()` 함수에서 `dataset`, `backbone`, `use_id` 파라미터로 모델 설정을 변경할 수 있습니다.
|
||||||
|
|||||||
Reference in New Issue
Block a user