paint-brush
কুইক্সের কম্পিউটার ভিশন টেমপ্লেট ব্যবহার করে কীভাবে একটি রিয়েল-টাইম ট্র্যাফিক মনিটরিং অ্যাপ তৈরি এবং স্থাপন করবেনদ্বারা@quix
1,245 পড়া
1,245 পড়া

কুইক্সের কম্পিউটার ভিশন টেমপ্লেট ব্যবহার করে কীভাবে একটি রিয়েল-টাইম ট্র্যাফিক মনিটরিং অ্যাপ তৈরি এবং স্থাপন করবেন

দ্বারা Quix21m2023/10/27
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

আমাদের কম্পিউটার ভিশন টেমপ্লেটকে কীভাবে ফর্ক করতে হয় এবং YOLOv8 ব্যবহার করে বর্তমান যানজট পরিমাপ করতে লন্ডনের ট্রাফিক ক্যামেরা ব্যবহার করে এমন একটি অ্যাপ্লিকেশন স্থাপন করতে শিখুন।
featured image - কুইক্সের কম্পিউটার ভিশন টেমপ্লেট ব্যবহার করে কীভাবে একটি রিয়েল-টাইম ট্র্যাফিক মনিটরিং অ্যাপ তৈরি এবং স্থাপন করবেন
Quix HackerNoon profile picture
0-item
1-item
2-item
3-item

আপনি যদি কখনো কম্পিউটার ভিশন নিয়ে পরীক্ষা-নিরীক্ষা করতে চান কিন্তু একটি জটিল উন্নয়ন পরিবেশ সেট আপ করার সময় না পান, তাহলে এই টিউটোরিয়ালটি আপনার জন্য। কম্পিউটার দৃষ্টি নির্দিষ্ট পরিস্থিতিতে শারীরিক সেন্সরগুলির জন্য একটি দুর্দান্ত বিকল্প হতে পারে-বিশেষ করে যখন জিনিসগুলি গণনার ক্ষেত্রে আসে।


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


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


চূড়ান্ত ফলাফল কেমন হওয়া উচিত তা এখানে:

কম্পিউটার ভিশন টেমপ্লেট


আপনি নিম্নলিখিত ঠিকানায় এই ডেমো সংস্করণটি লাইভ পরীক্ষা করতে পারেন: https://app-demo-computervisiondemo-prod.deployments.quix.ai/


এই অ্যাপটি কি করছে?

অ্যাপটি যানবাহন গণনা করতে এবং যানজটের মাত্রা অনুমান করতে লন্ডনের ট্রাফিক ক্যামেরা ("জ্যাম ক্যাম" নামেও পরিচিত) থেকে লাইভ ফিড ব্যবহার করছে। এটি লন্ডনের মানচিত্রে কোথায় যানজট ঘটছে তা দেখাতে ভিজ্যুয়াল সূচক ব্যবহার করে। ইমেজে বস্তু সনাক্তকরণের জন্য একটি ML মডেল ব্যবহার করে যানবাহন গণনা করা হয় (সেন্সর বা GPS ডেটার পরিবর্তে)।


অবজেক্ট ডিটেকশন মডেলটি যানবাহনকে বিভিন্ন প্রকারে শ্রেণীবদ্ধ করে এবং আপনি এই ধরনের দ্বারা ডেটা ফিল্টার করতে পারেন।


The vehicle type dropdown in the demo app

উদাহরণস্বরূপ, বর্তমান সময়ে সমস্ত ট্র্যাফিক ক্যামেরা সনাক্ত করা বাসের সংখ্যা দেখতে আপনি "অবজেক্ট নির্বাচন করুন" ড্রপডাউন ব্যবহার করতে পারেন।

নোট করুন যে অ্যাপ্লিকেশনটি সারা দিন ধরে পর্যবেক্ষণ করা সমস্ত যানবাহনকে গণনা করে না, শুধুমাত্র বর্তমান সময়ে (পরে আরও বেশি)।






কেন যানজট নির্ধারণ করতে বস্তু সনাক্তকরণ ব্যবহার করবেন?

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


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



Still from the A102 Brunswick Road Jam Cam… object detection does have it’s weaknesses

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


এখন কুইক্সের সাথে, এইরকম কিছু চেষ্টা করার জন্য আপনার গবেষণা বিজ্ঞানীদের একটি দলের প্রয়োজন নেই। যেকোন সক্ষম বিকাশকারী এটি চেষ্টা করে দেখতে পারেন এবং কয়েক মিনিটের মধ্যেই উঠতে পারেন। যদিও এই ক্ষেত্রে, আমরা 5 মিনিটের পরিবর্তে 60 মিনিটের মতো কথা বলছি। এটা সব পরে একটি বড় প্রকল্প!


প্রকল্পটি পুনরুত্পাদন করতে, আপনার দুটি জিনিসের প্রয়োজন হবে:

প্রকল্পের আপনার নিজস্ব অনুলিপি পেয়ে

প্রকল্পের একটি অনুলিপি (এবং আমাদের যেকোনো ডেমো অ্যাপ্লিকেশন) পাওয়ার জন্য বেশ কয়েকটি বড় পদক্ষেপ রয়েছে:

  1. GitHub থেকে আমাদের কম্পিউটার ভিশন ডেমো রিপোজিটরি ফোর্ক করুন।

    এটি আপনার জন্য প্রকল্পের সংস্করণটি কাস্টমাইজ করা সহজ করে তুলবে তবে আপস্ট্রিম উন্নতিগুলি থেকে উপকৃত হবেন৷


  2. কুইক্স ক্লাউডে একটি প্রকল্প তৈরি করুন , তারপরে একটি নতুন উন্নয়ন পরিবেশ তৈরি করুন এবং এটিকে আপনার ফর্কের সাথে লিঙ্ক করুন৷

    এটি আপনাকে আপনার নিজের অ্যাকাউন্টের অধীনে কুইক্স ক্লাউডে অ্যাপ্লিকেশনটি চালানো এবং আপডেট করার অনুমতি দেবে।


  3. TfL Camera API এবং Google Maps-এর মতো বাহ্যিক পরিষেবাগুলির জন্য শংসাপত্রগুলি আপডেট করুন৷

    API কীগুলির মতো গোপনীয়তাগুলি প্রকল্পের অনুলিপিগুলিতে স্থানান্তরিত হয় না তাই আপনাকে এগুলি নিজেকে যোগ করতে হবে।


আপনার বেসিকগুলি সেট আপ করার পরে, আমরা কোডটিতে ডুব দেব এবং আপনি কীভাবে এটি মানিয়ে নিতে পারেন তা দেখব৷


কম্পিউটার ভিশন ডেমো রিপোজিটরি ফোর্কিং

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


সরলতার জন্য, আমি ধরে নিচ্ছি আপনার ইতিমধ্যে একটি GitHub অ্যাকাউন্ট আছে। যাইহোক, আপনি এই প্রকল্পের জন্য একটি নির্দিষ্ট গিট ব্যবহারকারী তৈরি করতে চাইতে পারেন। পরে আপনি সংগ্রহস্থলে Quix SSH অ্যাক্সেস প্রদান করবেন, এবং একটি পৃথক ব্যবহারকারী থাকা নিশ্চিত করার একটি ভাল উপায় যে Quix এর কাছে এটির চেয়ে বেশি অ্যাক্সেস নেই।


  • আপনার ওয়েব ব্রাউজারে GitHub খুলুন, কম্পিউটার ভিশন ডেমো সংগ্রহস্থলে নেভিগেট করুন ( https://github.com/quixio/computer-vision-demo ) এবং Fork এ ক্লিক করুন।
    • নিশ্চিত করুন যে আপনি সমস্ত শাখা কাঁটাচামচ করেছেন (গিটহাবের ফর্ক উইজার্ডে, " শুধুমাত্র প্রধান শাখা অনুলিপি করুন " নির্বাচন মুক্ত করুন)। এর কারণ, আপনি যদি একটি ট্রায়াল অ্যাকাউন্ট ব্যবহার করেন, তাহলে কুইক্স ক্লাউডে একটি উন্নয়ন পরিবেশ তৈরি করতে আপনার একটি বিকল্প শাখার প্রয়োজন হবে৷


একটি নতুন কাঁটাচামচ তৈরি করা হচ্ছে


কুইক্সে একটি নতুন উন্নয়ন পরিবেশ তৈরি করা

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


একটি প্রকল্প তৈরি করতে এবং আপনার কাঁটাযুক্ত রেপোতে একটি পরিবেশ সংযুক্ত করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  • Quix-এ লগ ইন করুন এবং + নতুন প্রকল্পে ক্লিক করুন।


  • আপনার প্রোজেক্টের নাম দিন “ আমার কম্পিউটার ভিশন ডেমো ” (বা অনুরূপ কিছু) এবং আপনার নিজের গিট রেপোতে সংযোগ নির্বাচন করুন।


  • পরবর্তী স্ক্রিনে, আপনার রেপোতে কীভাবে কুইক্স এসএসএইচ কী যুক্ত করতে হয় তার কিছু নির্দেশাবলী দেখতে হবে—সেই নির্দেশাবলী অনুসরণ করুন। এই কী যোগ করলে Quix আপনার রেপোকে Quix পরিবেশের সাথে স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ করতে সক্ষম করে

    আপনার নিজস্ব গিট রেপো সংযুক্ত করা হচ্ছে



  • পরবর্তী স্ক্রিনে, আপনাকে একটি পরিবেশ তৈরি করতে বলা হবে—পরিবেশ আপনাকে বিভিন্ন শাখা থেকে সমান্তরালভাবে কোড স্থাপন করতে সক্ষম করে।

    পরিবেশের নামের জন্য ' tutorial ' লিখুন এবং আপনার কাঁটাযুক্ত রেপো থেকে ' tutorial ' শাখা নির্বাচন করুন।

    পরিবেশ সেটিংস


  • প্রজেক্ট তৈরির উইজার্ডের পরবর্তী ধাপগুলো চালিয়ে যান।


    উইজার্ড আপনাকে জিজ্ঞাসা করবে আপনি কোন ‍বার্তা ব্রোকার ব্যবহার করতে চান। প্রকল্পের মূল সংস্করণটি বার্তা ব্রোকার হিসাবে কনফ্লুয়েন্ট ক্লাউড ব্যবহার করে। আপনি যদি কনফ্লুয়েন্ট ক্লাউড ব্যবহার করতে চান, তাহলে প্রথমে আপনার একটি অ্যাকাউন্ট থাকতে হবে—সেক্ষেত্রে আপনি আপনার কনফ্লুয়েন্ট ক্লাউডের সাথে সংযোগ নির্বাচন করতে হবে এবং আপনার শংসাপত্রগুলি লিখতে হবে।

    আপনি Quix ডকুমেন্টেশনে কনফ্লুয়েন্ট সংযোগকারী সম্পর্কে আরও বিশদ জানতে পারেন।


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


  • একবার আপনি উইজার্ডটি সম্পন্ন করলে, পাইপলাইন পৃষ্ঠায় নেভিগেট করুন (যদি এটি ইতিমধ্যে খোলা না থাকে)। আপনি একটি স্ট্যান্ডার্ড সতর্কতা দেখতে পাবেন যে আপনার কুইক্স এনভায়রনমেন্ট সোর্স রিপোজিটরির সাথে সিঙ্কের বাইরে (যেহেতু পরিবেশ খালি শুরু হয়)।

    স্ট্যান্ডার্ড সতর্কতা


  • আপনার কাঁটাযুক্ত রেপো থেকে সর্বশেষ কোড টানতে সিঙ্ক এনভায়রনমেন্ট বোতামে ক্লিক করুন। দ্রষ্টব্য : সিঙ্ক প্রক্রিয়াটি দ্বিমুখী, তাই আপনি যদি আপনার পরিবেশের মধ্যে কিছু কোড পরিবর্তন করেন, তবে এটি এটিকে উত্স রেপোতেও ফিরিয়ে দেবে।


আশা করি সিঙ্ক সফল হয়েছে. যদি এটি কাজ করে, তাহলে আপনি দেখতে পাবেন যে আপনার সমস্ত পরিষেবা পাইপলাইন পৃষ্ঠায় তৈরি হতে শুরু করেছে।

পাইপলাইন সিঙ্ক করুন বেশ কয়েকটি পরিষেবা রয়েছে, তাই সমস্ত পরিষেবা তৈরি করতে এবং চালানো শুরু করতে কয়েক মিনিট সময় লাগবে৷



দ্রষ্টব্য, S3 পরিষেবাটি ডিফল্টরূপে বন্ধ হয়ে গেছে কারণ এটিকে কাজ করতে আপনার নিজের AWS অ্যাকাউন্টের প্রয়োজন হবে৷ কিন্তু যাইহোক এই টিউটোরিয়ালের জন্য এটি সত্যিই প্রয়োজনীয় নয়।


  • পাইপলাইন পৃষ্ঠায় সম্পূর্ণ পাইপলাইন দেখতে, ক্যানভাসের ফাঁকা অংশে যে কোনো জায়গায় ক্লিক করুন এবং টেনে আনুন এবং ডানদিকে স্ক্রোল করুন, অথবা Ctrl/⌘ চেপে ধরে রাখুন এবং জুম আউট করতে আপনার মাউস হুইল ব্যবহার করুন।


  • যতক্ষণ না আপনি "প্রজেক্ট ফ্রন্ট এন্ড" নামে একটি পরিষেবা দেখতে পাচ্ছেন ততক্ষণ স্ক্রোল করুন।

    প্রজেক্ট ফ্রন্ট এন্ড


  • "প্রজেক্ট ফ্রন্ট এন্ড" পরিষেবার নামের পাশে নীল লঞ্চ আইকনে ক্লিক করুন।

    আপনার এখন কম্পিউটার ভিশন অ্যাপের নিজস্ব অনুলিপি দেখতে হবে, সাথে খেলার জন্য প্রস্তুত।


কম্পিউটার ভিশন ডেমো অ্যাপের আর্কিটেকচার বোঝা

পাইপলাইনে অনেকগুলি পরিষেবা রয়েছে, তবে স্থাপত্যকে তিনটি প্রধান অংশে বিমূর্ত করা যেতে পারে যেমনটি নিম্নলিখিত চিত্রটিতে চিত্রিত হয়েছে:

কম্পিউটার ভিশনের আর্কিটেকচার


  • পরিষেবাগুলির প্রথম সেট (1-3) লন্ডনের ট্রাফিক ক্যামেরাগুলিতে ট্যাপ করে, প্রতিটি নিরীক্ষণ করা রাস্তার অংশে যানবাহন সনাক্ত করে।


  • পরিষেবার দ্বিতীয় সেট (4-7) প্রতিটি রাস্তার অংশে মোট যানবাহনের প্রকারের চলমান রাখে এবং একটি নির্দিষ্ট ফ্রেমে শনাক্ত হওয়া সর্বোচ্চ সংখ্যক যানবাহন লগ করে। এই ডেটা তারপরে বাফার করা হয় এবং একটি REST API পরিষেবাতে প্রেরণ করা হয় যাতে ডেটা অনুরোধ করতে চায় এমন কোনও বহিরাগত পরিষেবাতে অ্যাক্সেসযোগ্য হয়।


  • চূড়ান্ত পরিষেবা (8), একটি ফ্রন্ট এন্ড হোস্ট করে যা সমষ্টিগত গাড়ির পরিসংখ্যানের জন্য একটি REST API পোল করে এবং Quix-এর একটি বিষয় থেকে আসা সমস্ত ট্রাফিক ক্যামেরা (যেমন ভিডিও ফ্রেম) থেকে লাইভ কাঁচা ডেটার জন্য একটি ওয়েবসকেটে শোনে। পোল করা এবং রিয়েল-টাইম ডেটার এই সংমিশ্রণটি লন্ডনের মানচিত্রে ট্র্যাফিক স্তরগুলি কল্পনা করতে ব্যবহৃত হয়।


আমি পৃথক পরিষেবার সুনির্দিষ্ট বিষয়ে খুব বেশি বিশদে যাব না কারণ ডকুমেন্টেশন ইতিমধ্যেই এটির একটি ভাল কাজ করে। কিন্তু আপনি যদি তারা কিভাবে কাজ করে তা দেখতে চান, এখানে ডকুমেন্টেশনের লিঙ্ক সহ কিছু রেফারেন্স তথ্য রয়েছে।

সার্ভিস রেফারেন্স

আপনি যদি পরিষেবার নামে ক্লিক করেন তবে আপনি রানটাইম লগ এবং ডেটা লাইনেজ সহ একটি Quix-পাঠ্য পরিবেশে চলমান প্রকৃত পরিষেবা দেখতে পাবেন।

কাজের নাম

বর্ণনা

TfL ক্যামেরা ফিড

একটি TfL API কী এবং "অনুরোধ" পাইথন লাইব্রেরি ব্যবহার করে, TfL API এন্ডপয়েন্ট থেকে ক্যামেরা ফিডগুলি পুনরুদ্ধার করে।
ডকুমেন্টেশন , সোর্স কোড

ফ্রেম দখলকারী

Tfl API দ্বারা প্রদত্ত ভিডিও ফাইল থেকে ফ্রেম বের করে। ডকুমেন্টেশন , সোর্স কোড

বস্তু সনাক্তকরণ

ফ্রেম গ্র্যাবার থেকে ফ্রেম নেয় এবং প্রতিটি ফ্রেমে বস্তু সনাক্ত করে।
ডকুমেন্টেশন , সোর্স কোড

ক্যাম যানবাহন

মোট যানবাহন গণনা করে।
ডকুমেন্টেশন , সোর্স কোড

সর্বোচ্চ গাড়ির জানালা

একদিনের টাইম উইন্ডোতে সর্বাধিক যানবাহন গণনা করে।
ডকুমেন্টেশন , সোর্স কোড

ডেটা বাফার

ডেটা বাফার ডেটা API পরিষেবাতে লোড কমাতে এক সেকেন্ডের ডেটা বাফার সরবরাহ করে।
ডকুমেন্টেশন , সোর্স কোড

ডেটা API

একটি REST API পরিষেবা যা দুটি শেষ পয়েন্ট প্রদান করে। ডকুমেন্টেশন , সোর্স কোড

প্রজেক্ট ফ্রন্ট এন্ড

একটি ফ্রন্ট এন্ড হোস্ট করে যা নতুন ডেটার জন্য API চেক করে। ডকুমেন্টেশন , সোর্স কোড



আমি এখানে যে বিষয়টিতে ফোকাস করতে চাই তা হল আপনাকে দেখানো হচ্ছে কিভাবে আপনার নিজের প্রয়োজনীয়তা অনুযায়ী প্রজেক্টটি কাস্টমাইজ করা যায়


প্রকল্প কাস্টমাইজ করা

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

এর পরে, আমি আপনাকে কিছু বাহ্যিক সংস্থানগুলির দিকে নির্দেশ করব যা আপনাকে গাড়ির গণনা এবং অবজেক্ট ট্র্যাকিংয়ের মতো আরও শক্তিশালী কাজগুলি করতে সহায়তা করবে। কিন্তু প্রথমে আমাদের কিছুটা অ্যাডমিন করতে হবে, যেমন নতুন অ্যাপ্লিকেশন সিক্রেট যোগ করা।


আপনার নিজস্ব API শংসাপত্র যোগ করা এবং গোপনীয়তা আপডেট করা

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

  • কুইক্সে সিগন্যালআর হাবের সাথে যোগাযোগ করার জন্য সামনের প্রান্তের জন্য একটি বহনকারী টোকেন (গোপন কী: ' bearerToken ')

  • আপনার Tfl API কী (গোপন কী: ' tfl_api_key ')


ফ্রন্ট এন্ডের জন্য একটি বহনকারী টোকেন কনফিগার করা হচ্ছে

সামনের প্রান্তটি সিগন্যালআর ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কুইক্সের সাথে যোগাযোগ করতে (একটি ওয়েবসকেট API এর মাধ্যমে) পিছনের প্রান্ত থেকে ডেটা পুনরুদ্ধার এবং রেন্ডার করতে। ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে প্রমাণীকরণ করতে এই API-এর একটি বাহক টোকেন প্রয়োজন৷


এই টিউটোরিয়ালের জন্য, আপনি আপনার বহনকারী টোকেন হিসাবে ব্যবহার করার জন্য একটি কুইক্স ব্যক্তিগত অ্যাক্সেস টোকেন তৈরি করবেন। তারপরে আপনি আপনার পরিবেশে এই টোকেনটি সংরক্ষণ করার জন্য একটি গোপনীয়তা তৈরি করবেন (হ্যাঁ, এটি কিছুটা জটিল, তবে আপনাকে এটি একবার করতে হবে)।

# একটি ব্যক্তিগত অ্যাক্সেস টোকেন পাওয়া

এখানে আপনি কিভাবে Quix এ একটি ব্যক্তিগত অ্যাক্সেস টোকেন পাবেন।

  • উপরের ডানদিকে আপনার প্রোফাইল মেনু খুলুন, এবং ব্যক্তিগত অ্যাক্সেস টোকেন নির্বাচন করুন।

    Personal Access Tokens


  • প্রদর্শিত ডায়ালগে, টোকেন তৈরি করুন ক্লিক করুন এবং নোটপ্যাড বা অন্য কোনো অস্থায়ী স্টোরেজ অবস্থানে আপনার ব্যক্তিগত অ্যাক্সেস টোকেন পেস্ট করুন - পরবর্তী ধাপের জন্য আপনার এটির প্রয়োজন হবে।






গোপনে আপনার ব্যক্তিগত অ্যাক্সেস টোকেন যোগ করা হচ্ছে

Quix পোর্টালে, অ্যাপ্লিকেশন পৃষ্ঠাটি খুলুন এবং Quix IDE খুলতে Sentiment Demo UI এ ক্লিক করুন।

  • ভেরিয়েবল বিভাগে (নীচে বাম), সিক্রেটস ম্যানেজমেন্ট ক্লিক করুন।

  • প্রদর্শিত সাইডবারে, + New secret-এ ক্লিক করুন এবং সিক্রেট কী হিসাবে " bearerToken " লিখুন৷

  • "ডিফল্ট" এবং "টিউটোরিয়াল" কলামগুলিতে, আপনার ব্যক্তিগত অ্যাক্সেস টোকেন পেস্ট করুন যা আপনি প্রতিটি ঘরে মান হিসাবে পূর্ববর্তী ধাপে তৈরি করেছিলেন।

    গোপন ব্যবস্থাপনা


গোপনে আপনার tfl API কী যোগ করা হচ্ছে

ধরে নিচ্ছি যে আপনি Tfl API পোর্টালের সাথে নিবন্ধন করেছেন, আপনাকে প্রথমে গোপনীয় হিসাবে আপনার নিজস্ব Tfl API কী যোগ করতে হবে।

  • গোপন যোগ করতে, পূর্ববর্তী বিভাগের মতো একই ধাপ অনুসরণ করতে হবে, তবে এবার ' tfl_api_key ' কী দিয়ে একটি গোপন যোগ করুন।


লন্ডন জুড়ে দেখা যানবাহনের সম্মিলিত সর্বাধিক সংখ্যা পেতে পিছনের প্রান্তটি আপডেট করা হচ্ছে

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

দেখা যানবাহন সংখ্যা


  • বর্তমানে, এটি মনে করে যে ফ্রেমে 5 টি গাড়ি রয়েছে।
  • যাইহোক, সবচেয়ে বেশি যানবাহন যা ক্যামেরাটি পর্যবেক্ষণ করেছে (একই ফ্রেমে) হল 11টি গাড়ি।
    • আমরা জানি না _কবে _11টি গাড়ির ক্লাস্টার পর্যবেক্ষণ করা হয়েছিল, ঠিক যে পর্যবেক্ষণটি গত 24 ঘন্টার মধ্যে কিছু সময় করা হয়েছিল।


কিন্তু লন্ডনের জন্য একই তথ্য দেখতে আকর্ষণীয় হবে না? অর্থাৎ লন্ডনের ক্যামেরা দ্বারা যে কোন এক সময়ে পর্যবেক্ষিত গাড়ির সম্মিলিত সর্বোচ্চ সংখ্যা কত? এবং সমস্ত ক্যামেরা দ্বারা পর্যবেক্ষণ করা বাসের সর্বাধিক সংখ্যা কত?


এই প্রশ্নের উত্তর দেওয়ার জন্য, আমরা এমন কিছু ডেটা দিয়ে শেষ করতে চাই যা দেখতে এরকম কিছু

 {"24hmax_vehicles_allcams": 680.0, "24hmax_buses_allcams": 131.0, "24hmax_cars_allcams": 522.0, "24hmax_trucks_allcams": 94.0, "24hmax_motorcycles_allcams": 4.0}

মনে রাখবেন যে আমরা এখানে মোট যানবাহনের সংখ্যা সম্পর্কে কথা বলছি না (আমি পরে এটিতে যাব), লন্ডনের ট্র্যাফিক ক্যামেরা গত 24 ঘন্টার মধ্যে সবচেয়ে বেশি যানবাহনের একটি স্ন্যাপশট।


এই ডেটা পেতে, আপনাকে নিম্নলিখিত পরিবর্তনগুলি করতে হবে৷

  • গত 24 ঘন্টায় পর্যবেক্ষণ করা প্রতিটি গাড়ির প্রকারের জন্য সর্বাধিক পান (শুধু সব যানবাহন নয়)।

  • সর্বশেষ সর্বাধিক সঞ্চয় করুন, সেগুলিকে একত্রিত করুন (সমস্ত ক্যামেরা জুড়ে)।

  • যখন বিভিন্ন ক্যামেরা দ্বারা নতুন সর্বোচ্চ পরিলক্ষিত হয় তখন ক্রমাগত একত্রিতকরণ রিফ্রেশ করুন।


তারপরে, আপনি সামনের প্রান্তে ডেটা রেন্ডার করতে করছেন যাতে এটি এরকম কিছু দেখায়:

ট্রাফিক ঘনত্ব


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


একটি নতুন "max-vehicles-agg" বিষয় যোগ করা হচ্ছে

একটি বিষয় কি সম্পূর্ণরূপে নিশ্চিত না? Apache Kafka ডকুমেন্টেশন একটি ভাল সূচনা বিন্দু, কিন্তু সারমর্মে, বিষয়গুলি একটি ফাইল সিস্টেমের একটি ফোল্ডারের মতোই বর্ণনা করা হয় এবং ঘটনাগুলি (বার্তা আকারে) সেই ফোল্ডারের ফাইলগুলি। আপনি শিখবেন কিভাবে Quix UI-এ একটি তৈরি করতে হয়—যা খুবই সহজ প্রক্রিয়া।


কুইক্স পোর্টালে একটি বিষয় তৈরি করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  • কুইক্স পোর্টালে, বিষয় পৃষ্ঠা খুলুন এবং উপরের ডানদিকে কোণায় নতুন যোগ করুন ক্লিক করুন।

  • প্রদর্শিত ডায়ালগে, " max-vehicles-agg " এর মতো একটি নাম লিখুন, ডিফল্ট সেটিংস যেমন আছে তেমনই রেখে দিন এবং সম্পন্ন ক্লিক করুন।

    max-vehicles-agg তৈরি করা এখন, এই বিষয় লিখতে আপনাকে পিছনের শেষে কোড আপডেট করতে হবে। আপনার যে পরিষেবাটি পরিবর্তন করতে হবে তার নাম " ম্যাক্স ভেহিকেল উইন্ডো "৷ এটি একটি পাইথন পরিষেবা যা কুইক্স স্ট্রিম এবং পান্ডাস পাইথন লাইব্রেরি ব্যবহার করে ডেটা একত্রিত করে।



সাধারণভাবে পরিষেবাগুলি সম্পাদনা করার সময়, আপনার কাছে সর্বদা দুটি বিকল্প থাকে।

  • আপনার স্থানীয় IDE সম্পাদনা করুন এবং পরীক্ষা করুন, তারপরে আপনার পরিবর্তনগুলি আপনার কাঁটাযুক্ত রেপোতে কমিট করুন এবং পুশ করুন।

  • অনলাইন Quix IDE এ সম্পাদনা করুন এবং পরীক্ষা করুন।


Quix IDE একটু দ্রুত হতে পারে কারণ সমস্ত নির্ভরতা আপনার জন্য ইনস্টল করা আছে এবং আপনাকে একটি নতুন ভার্চুয়াল পরিবেশ সেট আপ করতে হবে না। এটি আপনার পরিবর্তনগুলিকে স্বয়ংক্রিয়ভাবে ধাক্কা দেয়, যা জিনিসগুলিকে কিছুটা গতি দিতে পারে। এই উদাহরণের জন্য, আমি Quix IDE ব্যবহার করব।


সব ক্যামেরার জন্য একত্রিত ডেটার জন্য সর্বাধিক যানবাহন পরিষেবা আপডেট করা হচ্ছে

সময় বাঁচাতে, আমি ইতিমধ্যেই এর জন্য কিছু কোড তৈরি করেছি, তাই আপনাকে যা করতে হবে তা হল প্রাসঙ্গিক ফাইলে পেস্ট করুন।


সর্বোচ্চ যানবাহন উইন্ডো পরিষেবা সম্পাদনা করতে:

  • অ্যাপ্লিকেশনগুলিতে নেভিগেট করুন এবং Quix IDE খুলতে Max Vehicle Window- এ ক্লিক করুন।


    দ্রষ্টব্য, কুইক্স ইউজার ইন্টারফেসে, প্রতিটি পরিষেবার কোডবেসকে একটি "অ্যাপ্লিকেশন" হিসাবে উল্লেখ করা হয়েছে কিন্তু বাস্তবে এটি একটি স্বয়ংসম্পূর্ণ ফোল্ডার যা একটি নির্দিষ্ট পরিষেবার কোড সংরক্ষণ করে (যা কম্পিউটার ভিশন অ্যাপকে পাওয়ার জন্য একসাথে কাজ করে) .


  • যদি এটি ইতিমধ্যে খোলা না থাকে, তাহলে এটিকে Quix IDE-এ খুলতে বাঁ-হাতের ফাইল মেনুতে main.py এ ক্লিক করুন।


  • অন্য একটি উইন্ডোতে, আমাদের টিউটোরিয়াল রেপো থেকে এই ফাইলটি খুলুন, তারপর কোডটি কপি করুন এবং পেস্ট করুন, বিদ্যমান সমস্ত কোড প্রতিস্থাপন করুন। কোড মন্তব্যগুলি আপনাকে বুঝতে সাহায্য করবে যে আমি কী পরিবর্তন করেছি।


নতুন কোডটি " আউটপুট 2 " নামক একটি নতুন পরিবেশের ভেরিয়েবলের আশা করছে যা আপনার পূর্বে তৈরি করা নতুন আউটপুট বিষয়ের নাম সংরক্ষণ করে, তাই আসুন সেই নতুন ভেরিয়েবলটি তৈরি করি।

  • ভেরিয়েবল বিভাগে, একটি নতুন পরিবেশ পরিবর্তনশীল যোগ করতে + যোগে ক্লিক করুন,
  • প্রদর্শিত ডায়ালগে, ভেরিয়েবল টাইপ হিসাবে আউটপুট বিষয় নির্বাচন করুন, ভেরিয়েবলের নাম দিন "আউটপুট2" এবং আপনি যে বিষয়টি তৈরি করেছেন তা ডিফল্ট মান হিসাবে নির্বাচন করুন (যেমন " max-vehicles-agg ")


এখন, আপনাকে কেবল আপনার পরিবর্তনগুলি সংরক্ষণ এবং স্থাপন করতে হবে।

  • আপনার পরিবর্তনগুলি সংরক্ষণ করতে, কমিট ক্লিক করুন।


  • আপনি পুনঃনিয়োগ করার আগে, সংশোধনটিকে ট্যাগ করা একটি ভাল ধারণা যাতে ডিপ্লয়মেন্টটি কোডটির কোন সংস্করণ ব্যবহার করছে তা বলা সহজ হয়৷

    • ট্যাগ আইকনে ক্লিক করে প্রতিশ্রুতিটিকে ট্যাগ করুন এবং এটিকে একটি নাম দিন… "NewAggregation" এর মতো কিছু।

    • আপনি যদি নতুন কোড কাজ করে কিনা তা দুবার চেক করতে চান, উপরের ডানদিকে রান ক্লিক করুন।


  • পরিষেবা পুনরায় স্থাপন করতে, উপরে ডানদিকে স্থাপনার ড্রপডাউনটি খুলুন এবং " বিদ্যমান স্থাপনা সম্পাদনা করুন " নির্বাচন করুন তারপর " পুনরায় স্থাপন " এ ক্লিক করুন।

    সর্বোচ্চ যানবাহনের উইন্ডো


    বিষয় পরিদর্শন করতে, কুইক্স পোর্টাল খুলুন, বিষয় পৃষ্ঠায় নেভিগেট করুন এবং আপনার আগে তৈরি করা “ max-vehicles-agg ” বিষয়টিতে ক্লিক করুন।


  • প্রতিটি বিষয়ের একটি ভিউ থাকে যাকে "ডেটা এক্সপ্লোরার ভিউ" বলা হয় যা আপনাকে একটি বিষয়ের মধ্য দিয়ে প্রবাহিত বার্তাগুলি পরিদর্শন করতে দেয়৷

    ডেটা এক্সপ্লোরার



আপনি এখন " স্ট্রীম নির্বাচন করুন " বিভাগে একটি সক্রিয় স্ট্রিম দেখতে পাবেন৷

  • স্ট্রীম " একত্রিত_ডেটা " নির্বাচন করুন (অথবা যা বলা হোক না কেন)

  • তারপর SELECT PARAMETERS… বিভাগে উপলব্ধ সমস্ত প্যারামিটার নির্বাচন করুন।

  • অবশেষে, টেবিল ভিউ নির্বাচন করুন যাতে আপনি আপনার নির্বাচিত ডেটা দেখতে পারেন।


মনে রাখবেন যে নতুন ডেটা সরাসরি নাও আসতে পারে কারণ TFL ক্যামেরা ফিড পরিষেবাতে একটি পরিবর্তনশীল স্লিপ টাইমার রয়েছে যাতে TfL API-এর হারের সীমা অতিক্রম না হয়। আপনি এটিকে "sleep_interval" এনভায়রনমেন্ট ভেরিয়েবলে কনফিগার করতে পারেন। লেখার সময়, এটি ডিফল্ট 60 সেকেন্ডে সেট করা হয়েছিল।


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



ক্যামেরা ফিড


মানচিত্র এবং নতুন সমষ্টি প্রদর্শনের জন্য সামনের প্রান্ত আপডেট করা হচ্ছে

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

সামনের প্রান্তে নতুন একত্রিত ডেটা প্রদর্শন করুন

এখন, নতুন সমষ্টি অন্তর্ভুক্ত করতে UI পরিষেবা আপডেট করা যাক যা আমরা পিছনের প্রান্তে তৈরি করেছি। একটি অনুস্মারক হিসাবে, আপনার কাজ শেষ হলে এটি কেমন দেখাবে তা এখানে রয়েছে৷

নতুন সমষ্টি যোগ করা হচ্ছে


এটি সুন্দর নয়, তবে এটি আমাদের প্রয়োজনীয় তথ্য দেয়। UI আপডেট করতে, আপনাকে নিম্নলিখিত ফাইলগুলি সম্পাদনা করতে হবে:

চলুন শুরু করা যাক app.component.ts দিয়ে। Quix পোর্টালে, অ্যাপ্লিকেশনগুলিতে নেভিগেট করুন, এবং Quix IDE খুলতে TfL ইমেজ প্রসেসিং UI ("প্রজেক্ট ফ্রন্ট এন্ড" হিসাবে স্থাপন করা হয়েছে) ক্লিক করুন৷

ইমেজ প্রসেসিং UI ডেটা সাবস্ক্রিপশন আপডেট করা হচ্ছে


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


অ্যাপ্লিকেশন ফাইল বিভাগে, ./src/app/app.component.ts খুলুন।


নিম্নলিখিত ব্লকটি সনাক্ত করুন (213 লাইনের পরে):

 subscribeToData() { this.connection.invoke('SubscribeToParameter', this._topicName, this._streamId, 'image'); this.connection.invoke('SubscribeToParameter', this._topicName, this._streamId, 'lat'); this.connection.invoke('SubscribeToParameter', this._topicName, this._streamId, 'lon'); this.connection.invoke('SubscribeToParameter', 'max-vehicles', '*', 'max_vehicles'); this.connection.invoke('SubscribeToParameter', 'image-vehicles', '*', '*');


এবং ব্লকের নীচে নিম্নলিখিত অতিরিক্ত লাইন:

 this.connection.invoke('SubscribeToParameter', 'max-vehicles-agg', '*', '*'); // new line


এটি বিষয়ের একটি সাবস্ক্রিপশন শুরু করবে এবং বার্তার সমস্ত প্যারামিটার পড়বে (প্যারামিটারডেটা হল কুইক্স এপিআই-এ একটি নির্দিষ্ট ডেটা টাইপ এবং এটি সাধারণত সংখ্যাসূচক ডেটা দিয়ে গঠিত।)


এর পরে, 'selectedMarker: Marker | undefined; লাইনটি সনাক্ত করুন 'selectedMarker: Marker | undefined; ' (লাইন 43 বা তার কাছাকাছি) এবং এটির নীচে নিম্নলিখিত নতুন লাইন যোগ করুন।

 latestMessageMaxAgg: ParameterData | undefined;

এই লাইনটি একটি নতুন ভেরিয়েবল শুরু করে যা আপনি বার্তাগুলি থেকে ডেটা সংরক্ষণ করতে ব্যবহার করবেন।


এখন, যখনই একটি নতুন বার্তা সনাক্ত করা হয় তখন ভেরিয়েবলে ডেটা বরাদ্দ করা যাক।


প্রথমে, নিম্নলিখিত ব্লকটি সনাক্ত করুন (108 লাইনের পরে):

 if (data.topicName === "image-vehicles") { key = data.streamId; if (data.numericValues['vehicles']) markerData.count = data.numericValues['vehicles'][0]; if (data.numericValues[this.parameterId]) markerData.value = data.numericValues[this.parameterId][0]; }

এটির নীচে নিম্নলিখিত ব্লক যোগ করুন:

 if (data.topicName === 'max-vehicles-agg') { this.latestMessageMaxAgg = data; }

এখন, যদি ' max-vehicles-agg ' নামক একটি বিষয় থেকে বার্তাটি আসে, তাহলে সামনের প্রান্তটি বার্তাটির সমস্ত ডেটা নিয়ে তা পরিবর্তনশীল latestMessageMaxAgg এ রাখবে।

এখন যেহেতু আমরা ভেরিয়েবলে অ্যাক্সেস পেয়েছি, আসুন এর বিষয়বস্তু সামনের প্রান্তে রেন্ডার করি।


সামনের প্রান্তের টেমপ্লেট আপডেট করা হচ্ছে

এখন, শেষ পর্যন্ত সেই ডেটা রেন্ডার করার সময় যা আমরা সামনের প্রান্তে উপলব্ধ করেছি।

  • অ্যাপ্লিকেশন ফাইল বিভাগে, ./src/app/app.component.html খুলুন।


একটি রঙিন ট্রাফিক ঘনত্ব স্কেল রেন্ডার করে নিম্নলিখিত ডিভটি সনাক্ত করুন (85 লাইনের পরে):

 <div> <p class="mat-caption text-body mb-1">Traffic density</p>


সরাসরি এটির উপরে, নিম্নলিখিত কোড ব্লক যোগ করুন।

 <div *ngIf="latestMessageMaxAgg"> <h4 _ngcontent-kap-c49="" class="mb-2">Combined Maximums Across All London Cameras</h4> <table> <tbody> <tr><td><strong>All vehicles:</strong></td> <td> {{ latestMessageMaxAgg?.numericValues?.['combined_max_vehicles_for_all_cameras']?.at(0) }} </td> </tr> <tr><td><strong>Cars:</strong></td> <td> {{ latestMessageMaxAgg?.numericValues?.['combined_max_cars_for_all_cameras']?.at(0) }} </td> </tr> <tr><td><strong>Buses:</strong></td> <td> {{ latestMessageMaxAgg?.numericValues?.['combined_max_buses_for_all_cameras']?.at(0) }} </td> </tr> <tr><td><strong>Trucks:</strong></td> <td> {{ latestMessageMaxAgg?.numericValues?.['combined_max_trucks_for_all_cameras']?.at(0) }} </td> </tr> <tr><td><strong>Motorcycles:</strong></td> <td> {{ latestMessageMaxAgg?.numericValues?.['combined_max_motorbikes_for_all_cameras']?.at(0) }} </td> </tr> </tbody> </table> </div>

এটি আপনার আগে তৈরি করা latestMessageMaxAgg ভেরিয়েবল থেকে ডেটা বের করে এবং সাম্প্রতিক বার্তা থেকে ডেটা প্রদর্শন করে (" at(0) " এর মাধ্যমে নির্বাচিত)৷ এটি ডেটাটিকে ঐচ্ছিক করে তোলে যাতে আপনি একটি ত্রুটি বার্তা না পেয়ে ডেটা অনুপস্থিত হয়৷


আপনি যদি প্রথমে আপনার স্থানীয় মেশিনে এটি পরীক্ষা করতে চান, তাহলে আপনি Quix IDE-তে করা পরিবর্তনগুলি টানতে পারেন (Quix তাদের স্বয়ংক্রিয়ভাবে ধাক্কা দেয়) এবং ফ্রন্ট এন্ড পরিষেবা README- এর নির্দেশাবলী অনুসরণ করুন।


  • TfL ইমেজ প্রসেসিং UI পরিষেবা পুনঃনিয়োগ করতে, সর্বোচ্চ যানবাহন পরিষেবা পুনঃনিয়োগ করার সময় আপনি যে প্রক্রিয়াটি করেছিলেন তা অনুসরণ করুন৷


যদি কিছু ভুল হয়ে যায়, মনে রাখবেন যে আপনি লগগুলিতে ত্রুটি আউটপুট দেখতে পাওয়ার আগে আপনাকে পরিষেবাটি মুছে ফেলতে হবে এবং এটি আবার স্থাপন করতে হবে৷


দীর্ঘ সময় ধরে যানবাহন গণনা

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


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


এখানে একটি TfL ক্যামেরা ফিডে আমার স্থানীয় মেশিনে (একটি শালীন GPU সহ) এটি চালানোর প্রচেষ্টা থেকে একটি স্ক্রিনশট রয়েছে৷

স্ক্রিন গ্র্যাব


রাস্তার উভয় দিকে যাওয়া যানবাহন গণনা করতে আমি আরও কয়েকটি লাইব্রেরির সাথে (যেমন রোবোফ্লো থেকে তত্ত্বাবধান ) সংমিশ্রণে YOLO ব্যবহার করেছি।

অনুরূপ ফলাফল কিভাবে পেতে হয় সে সম্পর্কে আরও তথ্যের জন্য, নিম্নলিখিত সংস্থানগুলি দেখুন:

উপসংহার

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


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



Tomáš Neubauer দ্বারা (CTO এবং Quix এর সহ-প্রতিষ্ঠাতা)


এছাড়াও এখানে প্রকাশিত.