[Torchvision API] crop#6353
Conversation
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
|
@greptileai please review |
|
| Filename | Overview |
|---|---|
| dali/python/nvidia/dali/experimental/torchvision/v2/randomcrop.py | New RandomCrop operator. _randint correctly clamps max_value to 0 before feeding fn.random.uniform, preventing inverted-range crashes. Symmetric pad_if_needed expansion is correct and tested. Validation classes are clean. |
| dali/python/nvidia/dali/experimental/torchvision/v2/functional/crop.py | New functional crop operator that delegates size validation to RandomCrop.verify_args and calls ndd.slice with out_of_bounds_policy='pad'. PIL rounding logic mirrors torchvision's behavior. No issues found. |
| dali/test/python/torchvision/test_tv_randomcrop.py | Comprehensive test suite covering shapes, padding variants, PIL/tensor inputs, and edge cases. Contains four TODO comments for dict-fill support without tracked issue references, violating the no-todo-on-merge rule. |
| dali/test/python/torchvision/test_tv_crop.py | Tests functional crop against torchvision reference for tensor, PIL, batched-tensor, dtype preservation, and error-rejection cases. Good coverage across CPU/GPU and multiple dtypes. |
| dali/python/nvidia/dali/experimental/torchvision/init.py | Adds RandomCrop import and all entry. Alphabetically ordered correctly. |
| dali/python/nvidia/dali/experimental/torchvision/v2/functional/init.py | Adds crop import and all entry. Alphabetically ordered correctly. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User input\nTensor / PIL Image] --> B{adjust_input\ndecorator}
B --> C[DALI Tensor/Batch\nwith layout]
C --> D{crop / RandomCrop}
subgraph crop [functional.crop]
D1{PIL layout?\nlayout ends HWC} -->|Yes| D2[_round_pil_box\nfloat to int rounding]
D1 -->|No| D3[_validate_integer_param\nreject floats]
D2 & D3 --> D4[RandomCrop.verify_args\nsize validation]
D4 --> D5[ndd.slice\nout_of_bounds_policy=pad]
end
subgraph rcrop [RandomCrop._kernel]
E1[Compute padded_h/w\nfrom explicit padding] --> E2{pad_if_needed?}
E2 -->|Yes| E3[dali.math.max\nexpand both sides]
E2 -->|No| E4[max_top/left =\npadded - crop]
E3 --> E4
E4 --> E5[_randint\nclamp to 0, fn.random.uniform]
E5 --> E6[fn.slice\nanchor = offset - pad\nout_of_bounds fill]
end
D --> D1
C --> E1
E6 --> F[Output Tensor / PIL]
D5 --> F
Reviews (11): Last reviewed commit: "Review fixes" | Re-trigger Greptile
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
|
@greptileai re-review please |
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
3414c38 to
fdb1565
Compare
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
fdb1565 to
12dddd3
Compare
|
@greptileai, re-review |
3587e56 to
5c32f8f
Compare
|
@greptileai re-review |
Signed-off-by: Marek Dabek <mdabek@nvidia.com>
5c32f8f to
5d24a26
Compare
|
@greptileai re-review |
|
!build |
|
CI MESSAGE: [52613374]: BUILD STARTED |
|
CI MESSAGE: [52613374]: BUILD FAILED |
|
CI MESSAGE: [52613374]: BUILD PASSED |
* Different index support for tensor and PILImages Signed-off-by: Marek Dabek <mdabek@nvidia.com>
645cbe6 to
462ac84
Compare
|
!build |
|
CI MESSAGE: [52656583]: BUILD STARTED |
|
CI MESSAGE: [52656583]: BUILD PASSED |
Category:
New feature
Description:
Torchvision API operators RandomCrop and functional crop.
Unit tests checking conformance with Torchvision.
Known limitations: tensor and PIL.Image based paddings are not supported
Additional information:
Affected modules and functionalities:
Key points relevant for the review:
Tests:
Checklist
Documentation
DALI team only
Requirements
REQ IDs: N/A
JIRA TASK: N/A