Azure ब्लॉब स्टोरेज
Azure ब्लॉब स्टोरेज से रोबोफ्लो में छवियाँ अपलोड करें
Azure Blob Storage में इमेज डेटा स्टोरेज और Roboflow में अपलोड करने के लिए आपके पास आमतौर पर दो विकल्प होते हैं: साइन किए गए URL का उपयोग करना या इमेज को स्थानीय रूप से (Azure CLI के माध्यम से) डाउनलोड करके उन्हें स्थानीय रूप से अपलोड करना। इन विधियों के बीच चयन आपकी डेटा प्रोसेसिंग और प्रबंधन की विशिष्ट आवश्यकताओं पर निर्भर करता है।
साइन किए गए URLयह विधि विशेष रूप से तब फायदेमंद है जब आप इमेज को अपने लोकल मशीन पर डाउनलोड करने के अतिरिक्त चरण और समय से बचना चाहते हैं। साइन किए गए URL के साथ, आप इमेज डेटा को सीधे Azure Blob Storage से Roboflow API में अपलोड कर सकते हैं, बिना इसे कभी भी लोकल स्टोर किए। इससे प्रोसेसिंग तेज होती है और आपके लोकल सिस्टम पर कम लोड पड़ता है।
CLI स्थानीय रूप से: ऐसे परिदृश्य हो सकते हैं जहाँ आप पहले छवियों को अपने स्थानीय वातावरण में डाउनलोड करना पसंद करेंगे। उदाहरण के लिए, यदि आपको छवियों को प्रोसेस करना है या Roboflow पर अपलोड करने से पहले उन्हें मैन्युअली जांचना है, तो स्थानीय प्रतियां होना फायदेमंद रहेगा।
सही विधि का चयन आपकी विशिष्ट उपयोग-केस आवश्यकताओं पर निर्भर करेगा, जैसे डेटा ट्रांसफर की गति, प्रोसेसिंग की आवश्यकता, या छवियों की मैन्युअल जांच।
Azure कनेक्शन स्ट्रिंग
Storage Account बनाने के बाद, आप Azure पोर्टल में "Security + networking" के तहत "Access keys" सेक्शन में एक्सेस कीज़ या कनेक्शन स्ट्रिंग पा सकते हैं। ये क्रेडेंशियल्स आपके एप्लिकेशन को प्रमाणित करने के लिए उपयोग किए जाते हैं।
विकल्प 1: साइन किए गए URL के माध्यम से अपलोड करें:
आप Python में Azure SDK द्वारा Azure Blob Storage में अपनी इमेज के लिए साइन किए गए URL जेनरेट कर सकते हैं।
def get_blob_sas_url(blob_service_client, container_name: str, blob_name: str) -> str:
"""Azure Blob के लिए SAS URL जेनरेट करें।"""
from azure.storage.blob import generate_blob_sas, BlobSasPermissions
from datetime import datetime, timedelta
sas_token = generate_blob_sas(
blob_service_client.account_name,
container_name,
blob_name,
account_key=blob_service_client.credential.account_key,
permission=BlobSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1)
)
blob_url = f"https://{blob_service_client.account_name}.blob.core.windows.net/{container_name}/{blob_name}?{sas_token}"
return blob_url
ऊपर दिए गए कोड स्निपेट में, आपको blob service client, container name, और blob name की आवश्यकता होती है। इमेज का साइन किया गया URL जेनरेट किया जाता है और लौटाया जाता है।
इसके आधार पर, हम एक संपूर्ण समाधान बना सकते हैं जो Azure Blob Storage में उपलब्ध सभी ऑब्जेक्ट्स को प्राप्त करता है, और फिर उन्हें API के माध्यम से Roboflow में अपलोड करता है। इस समाधान का एक रूपरेखा नीचे देखी जा सकती है:
from azure.storage.blob import BlobServiceClient
import requests
import urllib.parse
# ************* इन वेरिएबल्स को सेट करें *************
AZURE_CONNECTION_STRING = "YOUR_AZURE_CONNECTION_STRING"
AZURE_CONTAINER_NAME = "YOUR_AZURE_CONTAINER_NAME"
ROBOFLOW_API_KEY = "YOUR_ROBOFLOW_API_KEY"
ROBOFLOW_PROJECT_NAME = "YOUR_ROBOFLOW_PROJECT_NAME"
# ***********************************************
def get_blob_sas_url(blob_service_client, container_name: str, blob_name: str) -> str:
"""Azure Blob के लिए SAS URL जेनरेट करें।"""
from azure.storage.blob import generate_blob_sas, BlobSasPermissions
from datetime import datetime, timedelta
sas_token = generate_blob_sas(
blob_service_client.account_name,
container_name,
blob_name,
account_key=blob_service_client.credential.account_key,
permission=BlobSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1)
)
blob_url = f"https://{blob_service_client.account_name}.blob.core.windows.net/{container_name}/{blob_name}?{sas_token}"
return blob_url
def get_azure_blob_objects(container_name: str) -> list:
"""दिए गए Azure Blob कंटेनर में blob नामों की सूची प्राप्त करें।"""
blob_service_client = BlobServiceClient.from_connection_string(AZURE_CONNECTION_STRING)
container_client = blob_service_client.get_container_client(container_name)
blobs = []
blob_list = container_client.list_blobs()
for blob in blob_list:
blobs.append(blob.name)
return blobs
def upload_to_roboflow(api_key: str, project_name: str, presigned_url: str, img_name='', split="train"):
"""Roboflow पर एक छवि अपलोड करें।"""
API_URL = "https://api.roboflow.com"
if img_name == '':
img_name = presigned_url.split("/")[-1]
upload_url = "".join([
API_URL + "/dataset/" + project_name + "/upload",
"?api_key=" + api_key,
"&name=" + img_name,
"&split=" + split,
"&image=" + urllib.parse.quote_plus(presigned_url),
])
response = requests.post(upload_url)
# प्रतिक्रिया कोड जांचें
if response.status_code == 200:
print(f"{img_name} को {project_name} में सफलतापूर्वक अपलोड किया गया")
return True
else:
print(f"{img_name} को अपलोड करने में विफल। त्रुटि: {response.content.decode('utf-8')}")
return False
if __name__ == "__main__":
# उपलब्ध blobs की सूची प्राप्त करें
available_blobs = get_azure_blob_objects(AZURE_CONTAINER_NAME)
# वैकल्पिक: यहां blobs को फ़िल्टर करें
# उदाहरण: available_blobs = [blob for blob in available_blobs if "some_condition"]
# Azure Blob Service Client इनिशियलाइज़ करें
blob_service_client = BlobServiceClient.from_connection_string(AZURE_CONNECTION_STRING)
# blobs को Roboflow पर अपलोड करें
for blob in available_blobs:
blob_url = get_blob_sas_url(blob_service_client, AZURE_CONTAINER_NAME, blob)
upload_to_roboflow(ROBOFLOW_API_KEY, ROBOFLOW_PROJECT_NAME, blob_url)
विकल्प 2: Azure से डेटा लोकल रूप से डाउनलोड करें
सबसे पहले, azcopy
कमांड लाइन यूटिलिटी इंस्टॉल करें। यह यूटिलिटी आपको Azure Storage से फाइल्स और फोल्डर्स डाउनलोड करने की अनुमति देती है। फिर, अपने Azure अकाउंट के साथ प्रमाणित करें एक Shared Access Signature टोकन का उपयोग करके। आप इसके बारे में अधिक जान सकते हैं SAS टोकन कैसे प्राप्त करें azcopy डाक्यूमेंटेशन में।
एक बार जब आपके पास azcopy
सेटअप हो जाए, तो फाइल या फोल्डर डाउनलोड करने के लिए निम्नलिखित कमांड चलाएं:
azcopy copy "C:\local\path" <sas-token> --recursive=true
बदलें C:\local\path
उस फोल्डर या फाइल के पथ के साथ जिसे आप डाउनलोड करना चाहते हैं। <sas-token>
मान को प्रमाणीकरण के लिए SAS टोकन से बदलें। यदि आप फाइल्स और फोल्डर्स को रिकर्सिवली डाउनलोड करना चाहते हैं, तो --recursive=true
आर्ग्युमेंट ऊपर की तरह दें। अन्यथा, इस आर्ग्युमेंट को हटा दें।
Roboflow पर डेटा अपलोड करें
अब जब हमने डेटा डाउनलोड कर लिया है, तो हम इसे या तो Upload Web Interface या Roboflow CLI.
यह भी देखें
Last updated
Was this helpful?