TFRrecord এবং আর্থ ইঞ্জিন

TFRecord হল একটি বাইনারি বিন্যাস যা tf এর দীর্ঘ ক্রমগুলিকে দক্ষতার সাথে এনকোড করার জন্য। উদাহরণ প্রোটো। TFRecord ফাইলগুলি এখানে এবং এখানে বর্ণিত tf.data প্যাকেজের মাধ্যমে TensorFlow দ্বারা সহজেই লোড করা হয়। এই পৃষ্ঠাটি বর্ণনা করে কিভাবে আর্থ ইঞ্জিন ee.FeatureCollection বা ee.Image এবং TFRecord ফরম্যাটের মধ্যে রূপান্তর করে।

TFRecord-এ ডেটা রপ্তানি করা হচ্ছে

আপনি Google ড্রাইভ বা ক্লাউড স্টোরেজের TFRecord ফাইলগুলিতে টেবিল ( ee.FeatureCollection ) বা ছবি ( ee.Image ) রপ্তানি করতে পারেন৷ রপ্তানির কনফিগারেশন নীচে বর্ণিত হিসাবে আপনি কি রপ্তানি করছেন তার উপর নির্ভর করে। আর্থ ইঞ্জিন থেকে TFRecord-এ রপ্তানি করা সমস্ত সংখ্যা ফ্লোট টাইপের জন্য বাধ্য করা হয়।

টেবিল রপ্তানি করা হচ্ছে

একটি TFRecord ফাইলে একটি ee.FeatureCollection রপ্তানি করার সময়, টেবিলের প্রতিটি ee.Feature এবং TFRecord ফাইলের প্রতিটি tf.train.Example (অর্থাৎ প্রতিটি রেকর্ড) এর মধ্যে একটি 1:1 চিঠিপত্র থাকে৷ ee.Feature এর প্রতিটি প্রপার্টি একটি tf.train.Feature হিসাবে এনকোড করা আছে এবং প্রপার্টিতে সংরক্ষিত নম্বর বা ee.Array সাথে সম্পর্কিত ফ্লোটগুলির একটি তালিকা সহ। আপনি যদি বৈশিষ্ট্যগুলির মধ্যে অ্যারে সহ একটি টেবিল রপ্তানি করেন, আপনাকে টেনসরফ্লোকে অ্যারের আকারটি পড়ার সময় বলতে হবে। একটি TFRecord ফাইলে রপ্তানি করা একটি টেবিল সবসময় GZIP কম্প্রেশন প্রকারের সাথে সংকুচিত হবে। প্রতিটি রপ্তানির জন্য আপনি সর্বদা ঠিক একটি TFRecord ফাইল পাবেন।

নিম্নলিখিত উদাহরণটি স্কেলার বৈশিষ্ট্যগুলির ('B2',...,'B7', 'ল্যান্ডকভার') রপ্তানি করা সারণী থেকে ডেটা পার্সিং প্রদর্শন করে। লক্ষ্য করুন যে ফ্লোট তালিকার মাত্রা হল [1] এবং প্রকারটি হল tf.float32 :

পাইথন

dataset = tf.data.TFRecordDataset(exportedFilePath)

featuresDict = {
  'B2': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32),
  'B3': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32),
  'B4': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32),
  'B5': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32),
  'B6': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32),
  'B7': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32),
  'landcover': tf.io.FixedLenFeature(shape=[1], dtype=tf.float32)
}

parsedDataset = dataset.map(lambda example: tf.io.parse_single_example(example, featuresDict))
        

মনে রাখবেন যে এই উদাহরণটি স্কেলার বৈশিষ্ট্যগুলিকে বোঝায় (যেমন shape=[1] )। আপনি যদি 2D বা 3D অ্যারে (যেমন ইমেজ প্যাচ) রপ্তানি করেন, তাহলে আপনি পার্সের সময় আপনার প্যাচের আকৃতি নির্দিষ্ট করবেন, উদাহরণস্বরূপ shape=[16, 16] একটি 16x16 পিক্সেল প্যাচের জন্য।

ছবি রপ্তানি করা হচ্ছে

যখন আপনি একটি ছবি রপ্তানি করেন, ডেটা চ্যানেল, উচ্চতা, প্রস্থ (CHW) হিসাবে অর্ডার করা হয়। রপ্তানিটি একাধিক TFRecord ফাইলে বিভক্ত হতে পারে যার প্রতিটি ফাইলে patchSize সাইজের এক বা একাধিক প্যাচ রয়েছে, যা রপ্তানিতে ব্যবহারকারীর দ্বারা নির্দিষ্ট করা হয়েছে। বাইটে ফাইলের আকার ব্যবহারকারীর maxFileSize প্যারামিটারে নির্দিষ্ট করা হয়। প্রতিটি প্যাচ এবং প্রতিটি tf.train.Example মধ্যে একটি 1:1 চিঠিপত্র রয়েছে। ফলে TFRecord ফাইলে উদাহরণ। ইমেজের প্রতিটি ব্যান্ড আলাদা tf.train.Feature হিসেবে প্রতিটি tf.train.Example এ সংরক্ষিত থাকে, যেখানে প্রতিটি বৈশিষ্ট্যে সংরক্ষিত ফ্লোট তালিকার দৈর্ঘ্য প্যাচ প্রস্থ * উচ্চতা। এই উদাহরণে দেখানো হিসাবে সমতল তালিকাগুলি একাধিক পৃথক পিক্সেলে বিভক্ত করা যেতে পারে। অথবা রপ্তানি করা প্যাচের আকৃতি এই উদাহরণের মতো পুনরুদ্ধার করা যেতে পারে।

প্রান্ত প্রভাব কমাতে সাহায্য করার জন্য, রপ্তানি করা প্যাচগুলি ওভারল্যাপ করতে পারে। বিশেষত, আপনি একটি kernelSize নির্দিষ্ট করতে পারেন যার ফলে আকারের টাইলস হবে:

[patchSize[0] + kernelSize[0], patchSize[1] + kernelSize[1]]
    

প্রতিটি টাইল সংলগ্ন টাইলসকে [kernelSize[0]/2, kernelSize[1]/2] দ্বারা ওভারল্যাপ করে। ফলস্বরূপ, প্যাচ সাইজের একটি প্যাচের একটি প্রান্ত পিক্সেলকে কেন্দ্র করে মাপের kernelSize patchSize একটি কার্নেল সম্পূর্ণ বৈধ ডেটা ধারণ করে। মহাকাশে প্যাচগুলির স্থানিক বিন্যাস চিত্র 1 দ্বারা চিত্রিত করা হয়েছে, যেখানে প্যাডিং মাত্রা কার্নেলের অংশের সাথে মিলে যায় যা সংলগ্ন চিত্রকে ওভারল্যাপ করে:

TFRrecord ইমেজ ডায়াগ্রাম
চিত্র 1. কিভাবে চিত্র প্যাচ রপ্তানি করা হয়. প্যাডিং ডাইমেনশন হল kernelSize/2

formatOptions

patchSize , maxFileSize , এবং kernelSize পরামিতিগুলি ee.Export (JavaScript) বা ee.batch.Export (Python) কলে একটি formatOptions অভিধানের মাধ্যমে পাস করা হয়, যেখানে কীগুলি Export পাস করা অতিরিক্ত প্যারামিটারগুলির নাম। TFRecord ফরম্যাটে রপ্তানি করা একটি চিত্রের সম্ভাব্য formatOptions হল:

সম্পত্তি বর্ণনা টাইপ
patchDimensions রপ্তানি এলাকার উপর টাইল করা মাত্রা, বাউন্ডিং বাক্সের প্রতিটি পিক্সেলকে ঠিক একবার কভার করে (যখন প্যাচের মাত্রাগুলি বাউন্ডিং বাক্সটিকে সমানভাবে বিভক্ত না করে সেক্ষেত্রে সবচেয়ে বড় x/y প্রান্ত বরাবর সীমানা টাইলগুলি ফেলে দেওয়া হবে)। মাত্রা অবশ্যই > 0 হতে হবে। অ্যারে<int>[2]।
kernelSize নির্দিষ্ট করা হলে, টাইলগুলি ইতিবাচক এবং নেতিবাচক উভয়ভাবেই মার্জিন মাত্রা দ্বারা বাফার করা হবে, যার ফলে প্রতিবেশী প্যাচগুলির মধ্যে ওভারল্যাপ হবে৷ নির্দিষ্ট করা থাকলে, দুটি মাত্রা প্রদান করতে হবে (যথাক্রমে X এবং Y)। অ্যারে<int>[2]। ডিফল্ট: [1, 1]
compressed সত্য হলে, .tfrecord ফাইলগুলিকে gzip দিয়ে সংকুচিত করে এবং ".gz" প্রত্যয় যুক্ত করে বুলিয়ান। ডিফল্ট: সত্য
maxFileSize রপ্তানি করা .tfrecord (কম্প্রেশনের আগে) জন্য সর্বাধিক আকার, বাইটে। একটি ছোট ফাইলের আকারের ফলে বৃহত্তর শার্ডিং হবে (এবং, এইভাবে, আরও আউটপুট ফাইল)। int. ডিফল্ট: 1 GiB
defaultValue একটি পিক্সেলের প্রতিটি ব্যান্ডে সেট করা মান যা আংশিকভাবে বা সম্পূর্ণরূপে মাস্ক করা হয়েছে, এবং একটি অ্যারে ব্যান্ড থেকে তৈরি একটি আউটপুট 3D বৈশিষ্ট্যে প্রতিটি মানতে সেট করা মান যেখানে উৎস পিক্সেলে অ্যারের দৈর্ঘ্য বৈশিষ্ট্য মানের গভীরতার চেয়ে কম ছিল (অর্থাৎ একটি অ্যারে poncorthp3 বৈশিষ্ট্যযুক্ত অ্যারে ব্যান্ডে দৈর্ঘ্য 2 এর একটি অ্যারে পিক্সেলের সূচক 3-এ মান)। পূর্ণসংখ্যা টাইপ ব্যান্ডের জন্য ভগ্নাংশের অংশটি বাদ দেওয়া হয় এবং ব্যান্ড টাইপের পরিসরে আটকানো হয়। ডিফল্ট 0. int. ডিফল্ট: 0
tensorDepths ইনপুট অ্যারে ব্যান্ডের নাম থেকে তাদের তৈরি করা 3D টেনসরের গভীরতা পর্যন্ত ম্যাপিং। নির্দিষ্ট আকৃতির সাথে মানানসই অ্যারেগুলিকে ছোট করা হবে, বা ডিফল্ট মান সহ প্যাড করা হবে। প্রতিটি অ্যারে ব্যান্ডের জন্য, এটির একটি সংশ্লিষ্ট এন্ট্রি থাকতে হবে। অ্যারে<int>[]। ডিফল্ট: []
sequenceData সত্য হলে, প্রতিটি পিক্সেল একটি সিকোয়েন্স হিসেবে আউটপুট হয় উদাহরণ ম্যাপিং স্কেলার ব্যান্ডগুলি প্রসঙ্গে এবং অ্যারে ব্যান্ডগুলি উদাহরণের ক্রমগুলিতে। সিকোয়েন্সের উদাহরণগুলি হল প্রতিটি প্যাচে পিক্সেলের সারি-প্রধান ক্রম অনুসারে এবং তারপর ফাইলের অনুক্রমের এলাকা প্যাচগুলির সারি-প্রধান ক্রম অনুসারে। বুলিয়ান। ডিফল্ট: মিথ্যা
collapseBands সত্য হলে, সমস্ত ব্যান্ড একক 3D টেনসরে একত্রিত হবে, চিত্রের প্রথম ব্যান্ডের নাম গ্রহণ করবে। সমস্ত ব্যান্ডকে বাইট, int64s-এ উন্নীত করা হয়, তারপর সমস্ত ব্যান্ডের মধ্যে সেই ইক্যুয়েন্সে সবচেয়ে দূরের টাইপের উপর নির্ভর করে সেই ক্রমে ফ্লোট করা হয়। যতক্ষণ tensor_depths নির্দিষ্ট করা থাকে ততক্ষণ অ্যারে ব্যান্ডগুলি অনুমোদিত৷ বুলিয়ান। ডিফল্ট: মিথ্যা
maskedThreshold একটি প্যাচে মাস্কড পিক্সেলের সর্বাধিক অনুমোদিত অনুপাত। এই ভাতা ছাড়িয়ে যাওয়া প্যাচগুলি ফাইলগুলিতে লেখার পরিবর্তে বাদ দেওয়া হবে। এই ক্ষেত্রটি 1 ছাড়া অন্য কিছুতে সেট করা থাকলে, JSON সাইডকার তৈরি করা হবে না। ডিফল্ট 1. ভাসা। ডিফল্ট: 1

TFRecord "মিক্সার" ফাইল

আপনি যখন TFRecord-এ রপ্তানি করেন, তখন আর্থ ইঞ্জিন আপনার TFRecord ফাইলগুলির সাথে একটি সাইডকার তৈরি করবে যাকে "মিক্সার" বলা হয়। এটি একটি সাধারণ JSON ফাইল যা প্যাচগুলির স্থানিক বিন্যাস (যেমন জিওরেফারেন্সিং) সংজ্ঞায়িত করতে ব্যবহৃত হয়। এই ফাইলটি পরবর্তী বিভাগে বর্ণিত চিত্রের উপর করা ভবিষ্যদ্বাণী আপলোড করার জন্য প্রয়োজন।

রপ্তানি সময় সিরিজ

উদাহরণ এবং সিকোয়েন্স উদাহরণ উভয় ক্ষেত্রেই চিত্র রপ্তানি সমর্থিত। আপনি যখন উদাহরণগুলিতে রপ্তানি করেন, তখন রপ্তানি অঞ্চলটি প্যাচগুলিতে কাটা হয় এবং সেই প্যাচগুলি প্রতিটি ব্যান্ডের নিজস্ব বৈশিষ্ট্য সহ কিছু সংখ্যক .tfrecord ফাইলে রপ্তানি করা হয় (যদি না আপনি collapseBands উল্লেখ করেন)। যখন আপনি SequenceExamples-এ রপ্তানি করবেন, তখন প্রতি-পিক্সেলে একটি ক্রম উদাহরণ রপ্তানি করা হবে, সেই ক্রম উদাহরণগুলি একটি প্যাচের মধ্যে সারি-প্রধান ক্রম অনুসারে এবং তারপরে মূল রপ্তানি অঞ্চলে প্যাচগুলির সারি-প্রধান ক্রমে (যদি আপনি কখনও অনিশ্চিত হন, সর্বদা ধরে নিন জিনিসগুলি কিছু সারি-মেজর ক্রমে হবে)। দ্রষ্টব্য: একটি চিত্রের যেকোনো স্কেলার ব্যান্ডগুলি একটি সিকোয়েন্স উদাহরণের প্রসঙ্গে প্যাক করা হবে, যখন অ্যারে ব্যান্ডগুলি প্রকৃত ক্রম ডেটা হয়ে উঠবে।

অ্যারে ব্যান্ড

যখন একটি ছবি TFRecord ফরম্যাটে রপ্তানি করা হয় তখন অ্যারে ব্যান্ডগুলি রপ্তানিযোগ্য। অ্যারে ব্যান্ডগুলির রপ্তানি সিকোয়েন্স উদাহরণগুলির "ফিচারলিস্ট" তৈরি করার একটি উপায় প্রদান করে এবং নিয়মিত উদাহরণগুলিতে রপ্তানি করার সময় 3D টেনসর তৈরি করার একটি উপায়। অ্যারে ব্যান্ডের দৈর্ঘ্য/গভীরতা কীভাবে পরিচালিত হয় সে সম্পর্কে তথ্যের জন্য, উপরের টেবিলে collapseBands এবং/অথবা tensorDepths দেখুন। দ্রষ্টব্য: collapseBands এর ব্যবহার এবং SequenceExamples-এ রপ্তানি করা (যাতে পরামিতি sequenceData সেট করা) ফলে সমস্ত ব্যান্ড পিক্সেল প্রতি একক সময়ের সিরিজে ভেঙে যাবে।

আর্থ ইঞ্জিনে TFRrecords আপলোড করা হচ্ছে

আপনি TFRecord ফাইল হিসাবে আর্থ ইঞ্জিনে টেবিল (শুধুমাত্র কমান্ড লাইন ) এবং ছবি আপলোড করতে পারেন। টেবিলের জন্য, পূর্বে বর্ণিত 1:1 সম্পর্ক বিপরীত দিকে প্রযোজ্য (যেমন tf.train.Example -> ee.Feature )।

ছবি আপলোড করা হচ্ছে

আপনি যদি রপ্তানি করা চিত্রের উপর ভবিষ্যদ্বাণী তৈরি করেন, ভূ-উল্লেখিত চিত্র পাওয়ার জন্য আপনি পূর্বাভাসগুলি (TFRecord ফাইল হিসাবে) আপলোড করার সময় মিক্সার সরবরাহ করুন৷ নোট করুন যে প্যাচগুলির ওভারল্যাপিং অংশ (চিত্র 1-এ প্যাডিং মাত্রা) রপ্তানিকৃত অঞ্চলের সীমাহীন কভারেজের ফলে বাতিল করা হবে। ভবিষ্যদ্বাণীগুলিকে একটি tf.train.Example হিসাবে সাজানো উচিত। আপনার আসল রপ্তানি করা ছবির উদাহরণের মতো একই নম্বর এবং ক্রমগুলির উদাহরণ ক্রম (এমনকি একটি নির্বিচারে ফাইলের সংখ্যার মধ্যেও)।