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

১. উদ্দেশ্য

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

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

  • গতি সনাক্তকরণ সংবেদনশীলতা
  • ইভেন্টের সর্বনিম্ন দৈর্ঘ্য
  • পিছনের দিকে তাকানোর জানালা
  • ঠান্ডা করার সময়
  • গতি সনাক্তকরণ অঞ্চল

তুমি কি শিখবে

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

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

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

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

  1. গুগল ক্লাউড কনসোলে, পরিষেবা অ্যাকাউন্ট তৈরি করুন পৃষ্ঠায় যান। পরিষেবা অ্যাকাউন্ট তৈরি করুন পৃষ্ঠায় যান।
  2. আপনার প্রকল্পটি নির্বাচন করুন।
  3. "সার্ভিস অ্যাকাউন্টের নাম" ক্ষেত্রে, একটি নাম লিখুন। গুগল ক্লাউড কনসোল এই নামের উপর ভিত্তি করে "সার্ভিস অ্যাকাউন্ট আইডি" ক্ষেত্রটি পূরণ করে। "সার্ভিস অ্যাকাউন্টের বিবরণ" ক্ষেত্রে, একটি বিবরণ লিখুন। উদাহরণস্বরূপ, "কুইকস্টার্টের জন্য পরিষেবা অ্যাকাউন্ট"।
  4. তৈরি করুন এবং চালিয়ে যান ক্লিক করুন।
  5. আপনার প্রকল্পে অ্যাক্সেস প্রদানের জন্য, আপনার পরিষেবা অ্যাকাউন্টে নিম্নলিখিত ভূমিকা(গুলি) মঞ্জুর করুন: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), Storage > Storage Object Viewer † । Select a role তালিকা থেকে, একটি ভূমিকা নির্বাচন করুন। অতিরিক্ত ভূমিকার জন্য, অন্য ভূমিকা যোগ করুন ক্লিক করুন এবং প্রতিটি অতিরিক্ত ভূমিকা যোগ করুন। দ্রষ্টব্য : ভূমিকা ক্ষেত্রটি আপনার পরিষেবা অ্যাকাউন্ট আপনার প্রকল্পে কোন সংস্থানগুলি অ্যাক্সেস করতে পারে তা প্রভাবিত করে। আপনি এই ভূমিকাগুলি প্রত্যাহার করতে পারেন বা পরে অতিরিক্ত ভূমিকা মঞ্জুর করতে পারেন। উৎপাদন পরিবেশে, মালিক, সম্পাদক বা দর্শকের ভূমিকা মঞ্জুর করবেন না। পরিবর্তে, আপনার প্রয়োজন অনুসারে একটি পূর্বনির্ধারিত ভূমিকা বা কাস্টম ভূমিকা মঞ্জুর করুন।
  6. চালিয়ে যান ক্লিক করুন।
  7. পরিষেবা অ্যাকাউন্ট তৈরি শেষ করতে সম্পন্ন ক্লিক করুন। আপনার ব্রাউজার উইন্ডোটি বন্ধ করবেন না। আপনি পরবর্তী ধাপে এটি ব্যবহার করবেন।

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

  1. গুগল ক্লাউড কনসোলে, আপনার তৈরি করা পরিষেবা অ্যাকাউন্টের ইমেল ঠিকানায় ক্লিক করুন।
  2. কী-তে ক্লিক করুন।
  3. "কী যোগ করুন" এ ক্লিক করুন, এবং তারপর নতুন কী তৈরি করুন এ ক্লিক করুন।
  4. তৈরি করুন এ ক্লিক করুন। আপনার কম্পিউটারে একটি JSON কী ফাইল ডাউনলোড করা হবে।
  5. বন্ধ করুন ক্লিক করুন।
  6. গুগল ক্লাউড সিএলআই ইনস্টল এবং আরম্ভ করুন

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

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

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

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

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

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

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

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

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

  • MOTION_SENSITIVITY: গতি সনাক্তকরণ কতটা সংবেদনশীল হবে।
  • MIN_EVENT_LENGTH: গতির ইভেন্টগুলির সর্বনিম্ন দৈর্ঘ্য।
  • LOOK_BACK_WINDOW: একটি গতি ইভেন্টে প্রথম গতির আগে ক্যাপচার করার সময়কাল।
  • COOL_DOWN_PERIOD: একটি গতির ঘটনা ক্যাপচার করার পরে গতি সনাক্তকরণ বিরতি নেওয়ার সময়কাল।
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 এর বাম প্যানেলে streams ট্যাবে ক্লিক করুন।
  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

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

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

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

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

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

শুরুতে 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

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

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

গতি সনাক্তকরণ অঞ্চল দুটি ধরণের, (১) ইতিবাচক অঞ্চল যেখানে গতি সনাক্তকরণ কেবল টীকাযুক্ত অঞ্চলে চলে; (২) নেতিবাচক অঞ্চল যেখানে গতি সনাক্তকরণ টীকাযুক্ত অঞ্চলে যে কোনও গতিবিধি উপেক্ষা করে।

জোন টীকা

জোন বহুভুজের স্থানাঙ্ক ইনপুট করতে vaictl কমান্ডে flag 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 দেখুন - ছবি থেকে স্থানাঙ্ক পান

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

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

এক্সক্লুড অ্যানোটেটেড জোন হল ব্যবহারকারীর একটি বুলিয়ান ইনপুট, যা নির্দেশ করে যে ব্যবহারকারী গতি সনাক্তকরণে অ্যানোটেটেড জোনটি বাদ দিতে চান কিনা।

  • যদি true তে সেট করা থাকে, তাহলে টীকাযুক্ত অঞ্চলটি একটি ঋণাত্মক অঞ্চল হিসেবে কাজ করবে। টীকাযুক্ত অঞ্চলগুলিতে গতি সনাক্ত করা হবে না।

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

  • যদি মিথ্যাতে সেট করা হয়, তাহলে জোনটি একটি ধনাত্মক জোন হিসেবে কাজ করবে, যেখানে গতি সনাক্তকরণ ফোকাস করবে।

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

6. গতি সনাক্তকরণ অঞ্চল উদাহরণ সহ গতি ফিল্টার

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

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

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

ভিডিও ক্রেডিট: এন. গোয়েট, পি.-এম. জোডোইন, এফ. পোরিকলি, জে. কনরাড, এবং পি. ঈশ্বর, changedetection.net: একটি নতুন পরিবর্তন সনাক্তকরণ বেঞ্চমার্ক ডেটাসেট , CVPR-2012, প্রভিডেন্স, RI-তে প্রসিকিউটর IEEE পরিবর্তন সনাক্তকরণ কর্মশালায় (CDW-2012), 16-21 জুন, 2012

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

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

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

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

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

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

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

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

  1. Vertex AI Vision এর বাম প্যানেলে streams ট্যাবে ক্লিক করুন।
  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

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

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

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

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

এই কমান্ডটি একটি ভিডিও ফাইলকে একটি স্ট্রিমে স্ট্রিম করে। যদি আপনি –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

৭. অভিনন্দন

অভিনন্দন, তুমি ল্যাব শেষ করেছ!

পরিষ্কার করা

এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সের জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, 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

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

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

জরিপ

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

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

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

খুবই দরকারী মাঝারি উপযোগী