ভার্টেক্স এআই ভিশন মোশন ফিল্টার

১. উদ্দেশ্যসমূহ

সংক্ষিপ্ত বিবরণ

এই কোডল্যাবটির মূল উদ্দেশ্য হলো মোশন ফিল্টারিং ফিচারসহ ভিডিও পাঠানোর পদ্ধতি প্রদর্শনের জন্য একটি এন্ড-টু-এন্ড ভার্টেক্স এআই ভিশন অ্যাপ্লিকেশন তৈরি করা। এই টিউটোরিয়ালে, আমরা মোশন ফিল্টার কনফিগারেশনের বিভিন্ন প্যারামিটার নিয়ে আলোচনা করব:

  • গতি সনাক্তকরণ সংবেদনশীলতা
  • ন্যূনতম ইভেন্টের দৈর্ঘ্য
  • লুক-ব্যাক উইন্ডো
  • শীতল হওয়ার সময়
  • গতি সনাক্তকরণ অঞ্চল

আপনি যা শিখবেন

  • স্ট্রিমিংয়ের জন্য কীভাবে ভিডিও ইনজেস্ট করবেন
  • মোশন ফিল্টারে উপলব্ধ বিভিন্ন বৈশিষ্ট্য এবং সেগুলি ব্যবহারের পদ্ধতি
  • মোশন ফিল্টারের পরিসংখ্যান কোথায় দেখবেন
  • আপনার ভিডিওর উপর ভিত্তি করে সেটিং কীভাবে সামঞ্জস্য করবেন

২. শুরু করার আগে

  1. গুগল ক্লাউড কনসোলে, প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুনদ্রষ্টব্য : এই পদ্ধতিতে তৈরি করা রিসোর্সগুলো যদি আপনি রাখতে না চান, তবে বিদ্যমান কোনো প্রজেক্ট নির্বাচন করার পরিবর্তে একটি নতুন প্রজেক্ট তৈরি করুন। এই ধাপগুলো শেষ করার পর, আপনি প্রজেক্টটি ডিলিট করতে পারেন, যার ফলে প্রজেক্টটির সাথে যুক্ত সমস্ত রিসোর্স মুছে যাবে। প্রজেক্ট সিলেক্টরে যান।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
  3. কম্পিউট ইঞ্জিন এবং ভিশন এআই এপিআই সক্রিয় করুন। এপিআইগুলো সক্রিয় করুন।

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন:

  1. Google Cloud কনসোলে, 'Create service account' পেজে যান। 'Create service account'-এ যান।
  2. আপনার প্রকল্পটি নির্বাচন করুন।
  3. সার্ভিস অ্যাকাউন্ট নেম ফিল্ডে একটি নাম লিখুন। গুগল ক্লাউড কনসোল এই নামের উপর ভিত্তি করে সার্ভিস অ্যাকাউন্ট আইডি ফিল্ডটি পূরণ করে দেবে। সার্ভিস অ্যাকাউন্ট ডেসক্রিপশন ফিল্ডে একটি বিবরণ লিখুন। উদাহরণস্বরূপ, কুইকস্টার্টের জন্য সার্ভিস অ্যাকাউন্ট।
  4. তৈরি করুন-এ ক্লিক করুন এবং চালিয়ে যান
  5. আপনার প্রোজেক্টে অ্যাক্সেস দেওয়ার জন্য, আপনার সার্ভিস অ্যাকাউন্টে নিম্নলিখিত রোল(গুলি) মঞ্জুর করুন: ভিশন এআই > ভিশন এআই এডিটর, কম্পিউট ইঞ্জিন > কম্পিউট ইনস্ট্যান্স অ্যাডমিন (বিটা), স্টোরেজ > স্টোরেজ অবজেক্ট ভিউয়ার †'সিলেক্ট এ রোল' তালিকা থেকে একটি রোল নির্বাচন করুন। অতিরিক্ত রোলের জন্য, 'অ্যাড অ্যানাদার রোল'-এ ক্লিক করুন এবং প্রতিটি অতিরিক্ত রোল যোগ করুন। দ্রষ্টব্য : ' রোল' ফিল্ডটি আপনার প্রোজেক্টে আপনার সার্ভিস অ্যাকাউন্ট কোন রিসোর্সগুলো অ্যাক্সেস করতে পারবে তা প্রভাবিত করে। আপনি পরে এই রোলগুলো বাতিল করতে বা অতিরিক্ত রোল মঞ্জুর করতে পারেন। প্রোডাকশন এনভায়রনমেন্টে, ওনার, এডিটর বা ভিউয়ার রোল মঞ্জুর করবেন না। পরিবর্তে, আপনার প্রয়োজন অনুযায়ী একটি প্রিডিফাইন্ড রোল বা কাস্টম রোল মঞ্জুর করুন।
  6. চালিয়ে যান-এ ক্লিক করুন।
  7. সার্ভিস অ্যাকাউন্ট তৈরি করা শেষ করতে 'Done'-এ ক্লিক করুন। আপনার ব্রাউজার উইন্ডোটি বন্ধ করবেন না। পরবর্তী ধাপে আপনি এটি ব্যবহার করবেন।

একটি পরিষেবা অ্যাকাউন্ট কী তৈরি করুন:

  1. গুগল ক্লাউড কনসোলে, আপনার তৈরি করা সার্ভিস অ্যাকাউন্টের ইমেল অ্যাড্রেসটিতে ক্লিক করুন।
  2. কী-গুলো ক্লিক করুন।
  3. Add key-তে ক্লিক করুন, এবং তারপর Create new key-তে ক্লিক করুন।
  4. Create-এ ক্লিক করুন। আপনার কম্পিউটারে একটি JSON কী ফাইল ডাউনলোড হবে।
  5. বন্ধ করুন-এ ক্লিক করুন।
  6. Google Cloud CLI ইনস্টল এবং চালু করুন

† ক্লাউড স্টোরেজ বাকেট থেকে কোনো নমুনা ভিডিও ফাইল কপি করার ক্ষেত্রেই কেবল এই রোলের প্রয়োজন হবে।

৩. মোশন ফিল্টার

মোশন ফিল্টার গতিশীল ঘটনাযুক্ত গতিশীল এবং পণ্যের ভিডিও অংশবিশেষ ধারণ করে। ব্যবহারকারী মোশন সেনসিটিভিটি, ন্যূনতম ইভেন্ট দৈর্ঘ্য, লুকব্যাক উইন্ডো, কুল ডাউন পিরিয়ড এবং মোশন ডিটেকশন জোন সমন্বয় করে নিজের প্রয়োজন অনুযায়ী ফিল্টারটি কনফিগার করতে পারেন।

মোশন ফিল্টার কনফিগারেশন

কাস্টমাইজেশনের জন্য মোশন ফিল্টারে ৫টি কনফিগারেশন উপলব্ধ রয়েছে।

  1. গতি সংবেদনশীলতা: গতি শনাক্ত করার ক্ষেত্রে সংবেদনশীলতা কতটা হওয়া উচিত।
  2. ন্যূনতম ইভেন্টের দৈর্ঘ্য: যে ন্যূনতম দৈর্ঘ্য পর্যন্ত একটি মোশন ইভেন্ট ক্যাপচার করা হবে।
  3. লুকব্যাক উইন্ডো: কোনো গতি শনাক্ত হওয়ার আগে ভিডিও রেকর্ডিং কতক্ষণ পর্যন্ত চালু থাকবে।
  4. কুলডাউন পিরিয়ড: একটি মোশন ইভেন্ট শেষ হওয়ার পর, নির্দিষ্ট সময়কালের জন্য একটি কুলডাউন শুরু হবে। এই কুলডাউন পিরিয়ড চলাকালীন কোনো মোশন ইভেন্ট ট্রিগার হবে না।
  5. গতি শনাক্তকরণ অঞ্চল: ব্যবহারকারী কর্তৃক নির্ধারিত অঞ্চল, যেখানে গতি শনাক্তকরণ চালানো হবে। (পরবর্তী অংশে এ বিষয়ে বিস্তারিত আলোচনা করা হবে)

গতি সংবেদনশীলতা

vaictl কমান্ডে motion_detection_sensitivity ফ্ল্যাগটি ব্যবহার করুন।
স্ট্রিং। ডিফল্ট মান মাঝারি। নিম্ন, মাঝারি বা উচ্চ থেকে বেছে নেওয়া যাবে।

মোশন ডিটেকশন সেনসিটিভিটি যত বেশি হবে, এটি নয়েজ এবং ছোট নড়াচড়ার প্রতি তত বেশি সংবেদনশীল হবে। এই সেটিংটি এমন পরিবেশের জন্য সুপারিশ করা হয় যেখানে ছোট চলমান বস্তু (যেমন দূর থেকে মানুষ) এবং স্থির আলো থাকে।

অন্যদিকে, লো সেনসিটিভিটি আলোর হস্তক্ষেপের প্রতি কম সংবেদনশীল। এই সেটিংটি তখন ব্যবহারের জন্য উপযুক্ত যখন আলোর হস্তক্ষেপ বেশি থাকে, যেমন বাইরের পরিবেশে, এবং কম কোয়ালিটির ভিডিওর জন্য যেখানে নয়েজ বেশি থাকতে পারে। যেহেতু এই সেটিংটি সবগুলোর মধ্যে সবচেয়ে শক্তিশালী ফিল্টারিং, তাই এটি ছোট বস্তুর নড়াচড়া উপেক্ষা করতে পারে।

ন্যূনতম ইভেন্টের দৈর্ঘ্য

vaictl কমান্ডে min_event_length_in_seconds ফ্ল্যাগটি ব্যবহার করুন।
পূর্ণসংখ্যা। ডিফল্ট ১০ সেকেন্ড। সীমা ০ সেকেন্ড থেকে ৩৬০০ সেকেন্ড পর্যন্ত।

ফ্রেমে একটি মোশন ইভেন্ট সেগমেন্ট শনাক্ত হয়ে গেলে, মোশন ইভেন্ট ভিডিওগুলোর ন্যূনতম সময়কাল যা পার্স করা হবে।

লুকব্যাক উইন্ডো

vaictl কমান্ডে look_back_window_in_seconds ফ্ল্যাগটি ব্যবহার করুন।
পূর্ণসংখ্যা। ডিফল্ট ৩ সেকেন্ড। সীমা ০ সেকেন্ড থেকে ৩৬০০ সেকেন্ড।

লুকব্যাক উইন্ডো হলো একটি মোশন ইভেন্ট শনাক্ত হওয়ার আগে পর্যন্ত ক্যাশ করা সময়কাল। মোশন ইভেন্ট শনাক্ত হওয়ার কয়েক সেকেন্ড আগের ফ্রেমে কী ঘটেছিল তা দেখতে চাইলে এটি কাজে আসে।

শীতল হওয়ার সময়কাল

vaictl কমান্ডে cool_down_period_in_seconds ফ্ল্যাগটি ব্যবহার করুন।
পূর্ণসংখ্যা। পূর্বনির্ধারিত মান ৩০০ সেকেন্ড। সীমা ০ সেকেন্ড থেকে ৩৬০০ সেকেন্ড পর্যন্ত।

কুল ডাউন পিরিয়ড হলো সেই সময়কাল, যা কোনো গতি শনাক্ত হওয়ার পর গতি সনাক্তকরণ প্রক্রিয়া থেমে থাকবে। এই কুল ডাউন পিরিয়ডের সময় গতি সনাক্ত করার জন্য কোনো গণনা চালানো হবে না।

৪. বেসিক মোশন ফিল্টার উদাহরণ

Vaictl SDK ম্যানুয়াল

মোশন ফিল্টার সহ ইনপুট স্ট্রিমের জন্য vaictl ম্যানুয়াল চেক করতে, নিচের কমান্ডটি ব্যবহার করুন।

vaictl send video-file applying motion-filter -h

একটি নমুনা ভিডিও প্রস্তুত করুন

  1. আপনি নিম্নলিখিত gsutil cp কমান্ড ব্যবহার করে একটি নমুনা ভিডিও কপি করতে পারেন। নিম্নলিখিত ভেরিয়েবলটি প্রতিস্থাপন করুন:
  • উৎস: ব্যবহার করার জন্য ভিডিও ফাইলের অবস্থান। আপনি আপনার নিজের ভিডিও ফাইলের উৎস ব্যবহার করতে পারেন (উদাহরণস্বরূপ, gs://BUCKET_NAME/FILENAME.mp4), অথবা নমুনা ভিডিওটি (gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4) ব্যবহার করতে পারেন (মানুষ ও যানবাহন সহ ভিডিও, উৎস )।
export SOURCE=gs://cloud-samples-data/vertex-ai-vision/street_vehicles_people.mp4
gsutil cp $SOURCE .

পরিবেশগত ভেরিয়েবল প্রস্তুত করুন

প্রদত্ত কমান্ড টেমপ্লেটটি ব্যবহার করতে নিচের এনভায়রনমেন্ট ভেরিয়েবলগুলো সেট করুন।

vaictl ভেরিয়েবল

  • PROJECT_ID: আপনার গুগল ক্লাউড প্রজেক্ট আইডি।
  • অবস্থান আইডি: আপনার অবস্থান আইডি। উদাহরণস্বরূপ, us-central1। আরও তথ্যের জন্য, ক্লাউড অবস্থানসমূহ দেখুন।
  • LOCAL_FILE: একটি স্থানীয় ভিডিও ফাইলের ফাইলের নাম। উদাহরণস্বরূপ, street_vehicles_people.mp4।
  • –loop ফ্ল্যাগ: ঐচ্ছিক। স্ট্রিমিং অনুকরণ করতে ফাইলের ডেটা লুপ করে।
export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1

মোশন ফিল্টার ভেরিয়েবল

  • গতি সংবেদনশীলতা: গতি শনাক্তকরণ কতটা সংবেদনশীল হবে।
  • MIN_EVENT_LENGTH: গতি ইভেন্টগুলোর সর্বনিম্ন দৈর্ঘ্য।
  • LOOK_BACK_WINDOW: একটি মোশন ইভেন্টের প্রথম গতির আগে ক্যাপচার করার সময়কাল।
  • কুল_ডাউন_পিরিয়ড: কোনো গতি ঘটনা শনাক্ত হওয়ার পর যে সময়কালে গতি শনাক্তকরণ থেমে থাকবে।
export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

মোশন ফিল্টার কমান্ড প্রস্তুত করুন

ইনপুট স্ট্রিমের সাথে মোশন ফিল্টার ব্যবহার করার দুটি উপায় আছে। প্রথম উপায়টি হলো, মোশন ইভেন্টগুলোকে ক্লাউড কনসোলের একটি স্ট্রিমে পাঠানো। দ্বিতীয় উপায়টি হলো, মোশন ইভেন্টগুলোকে লোকাল স্টোরেজে পাঠানো।

ক্লাউড কনসোলে ফলাফল পাঠানো হচ্ছে

আপনি আউটপুট ভিডিও ডেটা ক্লাউড কনসোলে স্ট্রিম করতে vaictl ব্যবহার করতে পারেন। প্রথমে ক্লাউড কনসোলে ভিশন এআই এপিআই (Vision AI API) সক্রিয় করুন।

একটি নতুন স্ট্রিম নিবন্ধন করুন

  1. Vertex AI Vision- এর বাম প্যানেলে থাকা স্ট্রিমস ট্যাবে ক্লিক করুন।
  2. রেজিস্টার-এ ক্লিক করুন
  3. স্ট্রিমের নামে motion-detection-stream লিখুন।
  4. অঞ্চলে প্রবেশ করুন us-central1
  5. নিবন্ধন করতে ক্লিক করুন

স্ট্রিমে ফলাফল পাঠানো হচ্ছে

এই কমান্ডটি একটি ভিডিও ফাইলকে স্ট্রিমে স্ট্রিম করে। আপনি যদি –loop ফ্ল্যাগটি ব্যবহার করেন, তাহলে কমান্ডটি বন্ধ না করা পর্যন্ত ভিডিওটি স্ট্রিমে লুপ হতে থাকবে। আমরা এই কমান্ডটি একটি ব্যাকগ্রাউন্ড জব হিসেবে চালাবো, যাতে এটি ক্রমাগত স্ট্রিম হতে থাকে।

এটিকে ব্যাকগ্রাউন্ডে চালানোর জন্য শুরুতে nohup এবং শেষে & যোগ করুন।

INPUT_VIDEO=street_vehicles_people.mp4

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to streams motion-detection-stream --loop

vaictl ইনজেস্ট অপারেশন শুরু হওয়ার পর থেকে ড্যাশবোর্ডে ভিডিওটি প্রদর্শিত হতে প্রায় ১০০ সেকেন্ড সময় লাগতে পারে।

স্ট্রিম ইনজেশন উপলব্ধ হওয়ার পর, আপনি Vertex AI Vision ড্যাশবোর্ডের Streams ট্যাবে ট্র্যাফিক-স্ট্রিমটি নির্বাচন করে ভিডিও ফিডটি দেখতে পারবেন।

স্ট্রিমস ট্যাবে যান

স্থানীয় স্টোরেজে ফলাফল পাঠানো হচ্ছে

এই কমান্ডটি একটি ভিডিও ফাইলকে স্ট্রিমে প্রেরণ করে।

এটিকে ব্যাকগ্রাউন্ডে চালানোর জন্য শুরুতে nohup এবং শেষে & যোগ করুন।

INPUT_VIDEO=street_vehicles_people.mp4
OUTPUT_PATH=<path_to_store_motion_events_on_local_disk>

nohup vaictl -p $PROJECT \
             -l $LOCATION_ID \
             -c application-cluster-0 \
             --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

৫. গতি শনাক্তকরণ অঞ্চল

এই অংশে আমরা মোশন ডিটেকশন জোনের ব্যবহার এবং এটি কীভাবে কনফিগার করতে হয় তা বিস্তারিতভাবে আলোচনা করব। এই জোনের উদ্দেশ্য হলো আপনার অনাকাঙ্ক্ষিত এলাকা থেকে আসা গতিকে আড়াল করে মোশন ডিটেকশনের মান উন্নত করা।

গতি সনাক্তকরণ অঞ্চল দুই প্রকারের হয়, (1) ইতিবাচক অঞ্চল যেখানে গতি সনাক্তকরণ শুধুমাত্র চিহ্নিত এলাকায় চলে; (2) নেতিবাচক অঞ্চল যেখানে গতি সনাক্তকরণ চিহ্নিত এলাকার মধ্যে কোনও নড়াচড়া উপেক্ষা করে।

অঞ্চল টীকা

জোন পলিগনগুলির স্থানাঙ্ক ইনপুট করতে vaictl কমান্ডে zone_annotation ফ্ল্যাগটি ব্যবহার করুন।
স্ট্রিং। জোন অ্যানোটেশনের জন্য ডিফল্টরূপে খালি থাকে।

জোন অ্যানোটেশন হবে ব্যবহারকারীর দেওয়া একটি স্ট্রিং ইনপুট, যা ফ্রেমে থাকা সেই জোনগুলোকে নির্দেশ করবে যেগুলোকে ব্যবহারকারী লুকাতে বা সেগুলোর উপর ফোকাস করতে চান। জোন অ্যানোটেট করার জন্য, ব্যবহারকারীকে জোনের প্রতিটি নোডের x এবং y অক্ষের ইমেজ কোঅর্ডিনেট উল্লেখ করতে হবে। একটি পলিগন গঠন করার জন্য একটি জোনে তিনটি বা তার বেশি নোড থাকতে হবে। একটি ফ্রেমে একাধিক জোন থাকতে পারে। যদি জোনগুলো একে অপরের উপর ওভারল্যাপ করে, তবুও উভয় জোন দ্বারা আবৃত এলাকাটি কভার করা থাকবে।

জোন অ্যানোটেশনের জন্য একটি নির্দিষ্ট ইনপুট সিনট্যাক্স অনুসরণ করতে হয়।

  • একটিমাত্র নোড বোঝাতে, ছবির স্থানাঙ্কের x এবং y অক্ষকে সংযুক্ত করতে : ব্যবহার করুন। উদাহরণস্বরূপ, উপরের বাম কোণার (0,0) নোডটিকে 0:0 হিসাবে চিহ্নিত করা হবে।
  • একটি জোনের সমস্ত নোড বোঝাতে, নোডগুলোকে সংযুক্ত করতে সেমিকোলন ; ব্যবহার করুন। উদাহরণস্বরূপ, (0,0) , (100,0) , (100,100) , এবং (0, 100) নোডযুক্ত একটি জোনের জন্য, জোনটিকে 0:0;100:0;100:100;0:100 হিসাবে চিহ্নিত করা হবে। সর্বদা নোডগুলোকে একে অপরের পাশের সংযুক্ত নোড হিসাবে ইনপুট করুন, ক্রমটি ঘড়ির কাঁটার দিকে বা ঘড়ির কাঁটার বিপরীত দিকে হতে পারে।

গতি সনাক্তকরণ অঞ্চল - বর্গক্ষেত্র চারটি নোড সহ একটি বর্গাকার অঞ্চল।

গতি সনাক্তকরণ অঞ্চল - ত্রিভুজ তিনটি নোড সহ একটি ত্রিভুজাকার অঞ্চল।

  • একটি ফ্রেমে একাধিক জোন বোঝাতে, বিভিন্ন জোনকে সংযুক্ত করতে - ব্যবহার করুন। উদাহরণস্বরূপ, যদি আমরা (0,0) , (100,0) , (100,100) , (0,100) এবং (120,120) , (110,150) (200,160) উভয়ই ইনপুট করতে চাই, তাহলে ইনপুট জোন অ্যানোটেশনটি হবে 0:0;100:0;100:100;0:100-120:120;110:150;200:160

গতি শনাক্তকরণ অঞ্চল - দুটি অঞ্চল সহ একটি ফ্রেম একটি ফ্রেমের মধ্যে দুটি জোন।

ছবি থেকে স্থানাঙ্ক বের করার জন্য অনলাইনে কিছু টুল পাওয়া যায়। উদাহরণস্বরূপ, Wolfram - Get Coordinates from Image দেখুন।

টীকাযুক্ত অঞ্চল বাদ দিন

জোনের ভিতরে বা বাইরে গতি শনাক্ত করার জন্য vaictl কমান্ডে exclude_annotated_zone ফ্ল্যাগটি ব্যবহার করুন।
বুলিয়ান। ডিফল্ট মান ফলস।

‘অ্যানোটেড জোন বাদ দিন’ হলো ব্যবহারকারীর কাছ থেকে নেওয়া একটি বুলিয়ান ইনপুট, যা নির্দেশ করে যে ব্যবহারকারী মোশন ডিটেকশন থেকে অ্যানোটেড জোনটি বাদ দিতে চান কি না।

  • If set to true , the annotated zone will act as an negative zone. Motions in the annotated zones will not be detected.

গতি সনাক্তকরণ অঞ্চল - বাদ দেওয়ার বিকল্প শুধুমাত্র ইনপুট জোনের বাইরে গতি শনাক্তকরণ চালান।

  • যদি false সেট করা হয়, তাহলে জোনটি একটি পজিটিভ জোন হিসেবে কাজ করবে, যেখানে মোশন ডিটেকশন কেন্দ্রীভূত হবে।

গতি সনাক্তকরণ অঞ্চল - বিকল্প অন্তর্ভুক্ত করুন শুধুমাত্র ইনপুট জোনগুলিতে গতি শনাক্তকরণ চালু করুন।

৬. গতি শনাক্তকরণ অঞ্চলসহ মোশন ফিল্টারের উদাহরণ

এই উদাহরণে, আমরা এমন একটি ভিডিও ব্যবহার করব যেখানে সামনের দিকে একটি গাছ ক্রমাগত নড়ছে। সাধারণ মোশন ফিল্টার সেটিং-এ, ভিডিওটি শুধুমাত্র একটি মোশন ইভেন্ট তৈরি করবে যার সময়কাল হবে মূল ভিডিওটির সমান, কারণ মোশন ফিল্টারটি নড়তে থাকা গাছটিকে "পুরো ভিডিও জুড়ে ক্রমাগত চলমান" হিসেবে শনাক্ত করে। তবে, মোশন ডিটেকশন জোনের সাহায্যে, আমরা গাছটির নড়াচড়াকে সঠিকভাবে আড়াল করে গাড়ি এবং পথচারীদের নড়াচড়ার উপর মনোযোগ দিতে পারি।

ভিডিও প্রস্তুতি

নমুনা ভিডিওটিতে (gs://cloud-samples-data/vertex-ai-vision/dynamic-background-fall.mp4) www.changedetection.net থেকে নেওয়া গাছ, গাড়ি এবং পথচারী রয়েছে।

ভিডিও সৌজন্যে: এন. গোয়েট, পি.-এম. জোডোইন, এফ. পোরিকলি, জে. কনরাড, এবং পি. ঈশ্বর, changedetection.net: একটি নতুন পরিবর্তন শনাক্তকরণ বেঞ্চমার্ক ডেটাসেট , আইইইই ওয়ার্কশপ অন চেঞ্জ ডিটেকশন (সিডিডব্লিউ-২০১২)-এর কার্যবিবরণী, সিভিপিআর-২০১২, প্রভিডেন্স, আরআই, ১৬-২১ জুন, ২০১২

পরিবেশগত পরিবর্তনশীল প্রস্তুতি

গুগল ক্লাউড প্রজেক্ট ভেরিয়েবল।

export PROJECT_ID=<Your Google Cloud project ID>
export LOCATION_ID=us-central1
export LOCAL_FILE=street_vehicles_people.mp4

মৌলিক মোশন ফিল্টার কনফিগারেশন।

export MOTION_SENSITIVITY=<low or medium or high>
export MIN_EVENT_LENGTH=<0-3600>
export LOOK_BACK_WINDOW=<0-3600>
export COOL_DOWN_PERIOD=<0-3600>

গতি সনাক্তকরণ অঞ্চলের কনফিগারেশন।

মোশন ডিটেকশন জোনের বিভিন্ন ধরনের ব্যবহার দেখতে নিচের বিকল্পগুলো থেকে বেছে নিন।

গতি শনাক্তকরণের জন্য গাছটিকে বাদ দিন।

export ZONE_ANNOTATION="0:0;680:0;660:70;380:320;100:150"
export EXCLUDE_ANNOTATED_ZONE=true

গতি সনাক্তকরণ অঞ্চল - উদাহরণ ভিডিওতে চিহ্নিত অঞ্চল থেকে গতি সনাক্তকরণ বাদ দিন শুধুমাত্র ইনপুট জোনের বাইরে গতি শনাক্তকরণ চালান।

রাস্তায় গতি শনাক্তকরণে মনোযোগ দিন।

export ZONE_ANNOTATION="0:300;780:300;780:480;0:480"
export EXCLUDE_ANNOTATED_ZONE=false

গতি সনাক্তকরণ অঞ্চল - উদাহরণ ভিডিওতে চিহ্নিত অঞ্চল থেকে গতি সনাক্তকরণ চালান শুধুমাত্র ইনপুট জোনের বাইরে গতি শনাক্তকরণ চালান।

মোশন ফিল্টার সহ ভিডিও স্ট্রিম পাঠান

মোশন ইভেন্টগুলো ক্লাউড কনসোলে পাঠান

You can use vaictl to stream the output video data to the cloud console. Begin by activating the Vision AI API in the Cloud Console.

একটি নতুন স্ট্রিম নিবন্ধন করুন

  1. Vertex AI Vision- এর বাম প্যানেলে থাকা স্ট্রিমস ট্যাবে ক্লিক করুন।
  2. রেজিস্টার-এ ক্লিক করুন
  3. স্ট্রিমের নামে motion-detection-stream লিখুন।
  4. অঞ্চলে us-central1 প্রবেশ করুন
  5. নিবন্ধন করতে ক্লিক করুন

স্ট্রিমে ফলাফল পাঠানো হচ্ছে

এই কমান্ডটি একটি ভিডিও ফাইলকে স্ট্রিমে স্ট্রিম করে। আপনি যদি –loop ফ্ল্যাগটি ব্যবহার করেন, তাহলে কমান্ডটি বন্ধ না করা পর্যন্ত ভিডিওটি স্ট্রিমে লুপ হতে থাকবে। আমরা এই কমান্ডটি একটি ব্যাকগ্রাউন্ড জব হিসেবে চালাবো, যাতে এটি ক্রমাগত স্ট্রিম হতে থাকে।

এটিকে ব্যাকগ্রাউন্ডে চালানোর জন্য শুরুতে nohup এবং শেষে & যোগ করুন।

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to streams motion-detection-stream --loop

vaictl ইনজেস্ট অপারেশন শুরু হওয়ার পর থেকে ড্যাশবোর্ডে ভিডিওটি প্রদর্শিত হতে প্রায় ১০০ সেকেন্ড সময় লাগতে পারে।

স্ট্রিম ইনজেশন উপলব্ধ হওয়ার পর, আপনি Vertex AI Vision ড্যাশবোর্ডের Streams ট্যাবে ট্র্যাফিক-স্ট্রিমটি নির্বাচন করে ভিডিও ফিডটি দেখতে পারবেন।

স্ট্রিমস ট্যাবে যান

স্থানীয় স্টোরেজে ফলাফল পাঠানো হচ্ছে

এই কমান্ডটি একটি ভিডিও ফাইলকে স্ট্রিমে স্ট্রিম করে। আপনি যদি –loop ফ্ল্যাগটি ব্যবহার করেন, তাহলে কমান্ডটি বন্ধ না করা পর্যন্ত ভিডিওটি স্ট্রিমে লুপ হতে থাকবে। আমরা এই কমান্ডটি একটি ব্যাকগ্রাউন্ড জব হিসেবে চালাবো, যাতে এটি ক্রমাগত স্ট্রিম হতে থাকে।

এটিকে ব্যাকগ্রাউন্ডে চালানোর জন্য শুরুতে nohup এবং শেষে & যোগ করুন।

OUTPUT_PATH=<path_to_store_motion_events>

vaictl -p $PROJECT \
       -l $LOCATION_ID \
       -c application-cluster-0 \
       --service-endpoint visionai.googleapis.com \
  send video-file  --file-path $INPUT_VIDEO \
  applying motion-filter
         --motion-sensitivity=$MOTION_SENSITIVITY \
         --min-event-length=$MIN_EVENT_LENGTH \
         --lookback-length=$LOOK_BACK_WINDOW \
         --cooldown-length=$COOL_DOWN_PERIOD \
         --zone_annotation=$ZONE_ANNOTATION \
         --exclude_annotated_zone=$EXCLUDE_ANNOTATED_ZONE \
  to mp4file --mp4-file-path=$OUTPUT_PATH --loop

৭. অভিনন্দন

অভিনন্দন, আপনি ল্যাবটি শেষ করেছেন!

পরিষ্কার করা

এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, কমান্ড-লাইন থেকে ctrl + z চেপে vaictl SDK অপারেশনটি বন্ধ করুন।

সম্পদ

https://cloud.google.com/vision-ai/docs/overview

https://cloud.google.com/vision-ai/docs/motion-filtering-model

https://cloud.google.com/vision-ai/docs/create-manage-streams

প্রতিক্রিয়া

মতামত জানাতে এখানে ক্লিক করুন

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

এই কোডল্যাবটি কতটা উপকারী ছিল?

খুব দরকারী মাঝারি উপকারী