|
Download README.md from torinittechnologies/learningstudio-callout-wrapper: direct link, hf CLI and curl.
- Browser
- Download file 3.39 kB
-
https://huggingface.co/torinittechnologies/learningstudio-callout-wrapper/resolve/main/README.md
- Command line
-
hf download hf://torinittechnologies/learningstudio-callout-wrapper/README.md
-
curl -L -o README.md https://huggingface.co/torinittechnologies/learningstudio-callout-wrapper/resolve/main/README.md
3.39 kB
| tags: | |
| - object-detection | |
| - callout-detection | |
| - architectural-drawings | |
| - wrapper | |
| library_name: custom | |
| task: object-detection | |
| license: apache-2.0 | |
| # LearningStudio Callout Detection Wrapper | |
| Wrapper for the Lambda-based callout detection pipeline, providing EMCO-compatible API format for LearningStudio integration. | |
| ## Overview | |
| This wrapper: | |
| 1. Accepts image input in multiple formats (URL, base64, data URL) | |
| 2. Gets a presigned S3 URL from API Gateway | |
| 3. Uploads the image directly to S3 (avoids API Gateway data transfer costs) | |
| 4. Starts the detection job via API Gateway (small JSON payload) | |
| 5. Polls for completion | |
| 6. Transforms results to EMCO-compatible format | |
| ## Architecture | |
| ``` | |
| HF Wrapper | |
| β | |
| ββ1ββΆ GET /upload-url (get presigned S3 URL) | |
| β | |
| ββ2ββΆ PUT image directly to S3 (free, bypasses API Gateway) | |
| β | |
| ββ3ββΆ POST /detect {"job_id", "s3_url"} (tiny payload) | |
| β | |
| ββ4ββΆ GET /status/{job_id} (poll until complete) | |
| ``` | |
| ## API Format | |
| ### Input | |
| Accepts images in multiple formats: | |
| ```json | |
| // HTTP URL | |
| {"inputs": "https://example.com/image.jpg"} | |
| // Data URL (base64 encoded) | |
| {"inputs": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..."} | |
| // Raw base64 | |
| {"inputs": "iVBORw0KGgoAAAANSUhEUgAAAAUA..."} | |
| ``` | |
| ### Output | |
| Returns EMCO-compatible format: | |
| ```json | |
| { | |
| "predictions": [ | |
| { | |
| "id": 1, | |
| "label": "callout", | |
| "class_id": 0, | |
| "confidence": 0.95, | |
| "bbox": { | |
| "x1": 100, | |
| "y1": 200, | |
| "x2": 300, | |
| "y2": 400 | |
| } | |
| } | |
| ], | |
| "total_detections": 1, | |
| "image": "base64_encoded_image", | |
| "image_width": 1920, | |
| "image_height": 1080 | |
| } | |
| ``` | |
| ### Bounding Box Format | |
| - **Input from Lambda**: `[x, y, width, height]` (xywh format) | |
| - **Output to LearningStudio**: `{"x1", "y1", "x2", "y2"}` (xyxy format) | |
| The wrapper automatically converts between these formats. | |
| ## Configuration | |
| This endpoint requires the following secrets to be configured in HuggingFace Inference Endpoint settings: | |
| | Secret | Description | | |
| |--------|-------------| | |
| | `API_GATEWAY_URL` | Full URL of the API Gateway endpoint (e.g., `https://xxx.execute-api.us-east-1.amazonaws.com/dev`) | | |
| | `API_KEY` | API key for authentication | | |
| ## Usage | |
| ### Python | |
| ```python | |
| import requests | |
| HF_ENDPOINT = "https://your-endpoint.endpoints.huggingface.cloud" | |
| HF_TOKEN = "your-hf-token" | |
| response = requests.post( | |
| HF_ENDPOINT, | |
| headers={"Authorization": f"Bearer {HF_TOKEN}"}, | |
| json={"inputs": "https://example.com/architectural-drawing.png"} | |
| ) | |
| result = response.json() | |
| print(f"Found {result['total_detections']} callouts") | |
| for pred in result["predictions"]: | |
| print(f" Callout {pred['id']}: {pred['bbox']}, confidence={pred['confidence']}") | |
| ``` | |
| ### cURL | |
| ```bash | |
| curl -X POST https://your-endpoint.endpoints.huggingface.cloud \ | |
| -H "Authorization: Bearer $HF_TOKEN" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"inputs": "https://example.com/architectural-drawing.png"}' | |
| ``` | |
| ## Processing Time | |
| Typical processing time is 30-120 seconds depending on image size and complexity. The wrapper polls the backend every 5 seconds with a maximum timeout of 15 minutes. | |
| ## Error Handling | |
| Errors are returned in a consistent format: | |
| ```json | |
| { | |
| "error": "Description of the error", | |
| "predictions": [], | |
| "total_detections": 0, | |
| "image": "" | |
| } | |
| ``` | |
| ## License | |
| Apache 2.0 | |