সুচিপত্র:

লাইভ অবজেক্ট ডিটেকশন ব্যবহার করে ট্র্যাফিক প্যাটার্ন অ্যানালাইজার: 11 টি ধাপ (ছবি সহ)
লাইভ অবজেক্ট ডিটেকশন ব্যবহার করে ট্র্যাফিক প্যাটার্ন অ্যানালাইজার: 11 টি ধাপ (ছবি সহ)

ভিডিও: লাইভ অবজেক্ট ডিটেকশন ব্যবহার করে ট্র্যাফিক প্যাটার্ন অ্যানালাইজার: 11 টি ধাপ (ছবি সহ)

ভিডিও: লাইভ অবজেক্ট ডিটেকশন ব্যবহার করে ট্র্যাফিক প্যাটার্ন অ্যানালাইজার: 11 টি ধাপ (ছবি সহ)
ভিডিও: Object Detection Using YOLO ALgorithm (in English)| Machine Learning 2024, নভেম্বর
Anonim
Image
Image
লাইভ অবজেক্ট ডিটেকশন ব্যবহার করে ট্রাফিক প্যাটার্ন অ্যানালাইজার
লাইভ অবজেক্ট ডিটেকশন ব্যবহার করে ট্রাফিক প্যাটার্ন অ্যানালাইজার

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

ধাপ 1: অংশ তালিকা

উপকরণ:

রাস্পবেরি পাই 3 মডেল বি v1.2

রাস্পবেরি পাই ক্যামেরা v2.1

5V/1A মাইক্রো ইউএসবি পাওয়ার সাপ্লাই

রাস্পবিয়ান জেসির সাথে HDMI মনিটর, কীবোর্ড, মাউস এসডি কার্ড

রাস্পবেরি পাই জিপিআইও ব্রেকআউট কেবল

লাল, হলুদ, সবুজ LEDs (প্রতিটি রঙের 2 টি)

রাস্পবেরি পাই (7 অনন্য রং) জন্য মহিলা সংযোগকারী

মিশ্র 24 গেজ তারের (বিভিন্ন রং) + তাপ সঙ্কুচিত টিউবিং

2’x2’কাঠের প্যানেল বা প্ল্যাটফর্ম

কাঠের স্ক্রু

কালো পৃষ্ঠ (কার্ডবোর্ড, ফেনা বোর্ড, পোস্টার বোর্ড, ইত্যাদি)

রাস্তার চিহ্নের জন্য সাদা (বা কালো ছাড়া অন্য কোন রঙ) টেপ

কালো স্প্রে পেইন্ট (পিভিসি জন্য)

90”90 ডিগ্রি কনুই জয়েন্টের সাথে পিভিসি পাইপ (2), টি সকেট (1), মহিলা অ্যাডাপ্টার (2)

সরঞ্জাম

তাতাল

3D প্রিন্টার

বিভিন্ন ড্রিল বিট দিয়ে ড্রিল করুন

ব্রেডবোর্ড

তাপ বন্দুক

ধাপ 2: রাস্পবেরি পাই সেট আপ করা

রাস্পবেরি পাইতে এসডি কার্ড লোড করুন এবং বুট করুন।

প্রয়োজনীয় OpenCV লাইব্রেরি ইনস্টল করার জন্য এই নির্দেশিকা অনুসরণ করুন। আপনার এই পদক্ষেপটি করার সময় আছে তা নিশ্চিত করুন, কারণ OpenCV লাইব্রেরি ইনস্টল করতে কয়েক ঘন্টা সময় লাগতে পারে। এখানে আপনার ক্যামেরা ইনস্টল এবং সেট আপ করতে ভুলবেন না।

আপনি পিপ ইনস্টল করা উচিত:

পিকামেরা

জিপিওজিরো

RPi. GPIO

এখানে চূড়ান্ত কোড:

picamera.array থেকে PiRGBArray আমদানি করুন

Picamera থেকে PiCamera আমদানি করুন

picamera.array আমদানি করুন

np হিসাবে numpy আমদানি করুন

আমদানির সময়

আমদানি cv2

RPi. GPIO GPIO হিসাবে আমদানি করুন

আমদানির সময়

GPIO.setmode (GPIO. BCM)

আমি জন্য (23, 25, 16, 21):

GPIO.setup (i, GPIO. OUT)

ক্যাম = PiCamera ()

cam.resolution = (480, 480)

cam.framerate = 30

কাঁচা = PiRGBArray (ক্যাম, সাইজ = (480, 480))

সময় ঘুম (0.1)

colorLower = np.array ([0, 100, 100])

colorUpper = np.array ([179, 255, 255])

initvert = 0

inithoriz = 0

কাউন্টার = 0

cam.capture_continuous (কাঁচা, বিন্যাস = "bgr", use_video_port = সত্য) ফ্রেমে

ফ্রেম = ফ্রেম

hsv = cv2.cvtColor (ফ্রেম, cv2. COLOR_BGR2HSV)

মাস্ক = cv2.in Range (hsv, colorLower, colorUpper)

মুখোশ = cv2.blur (মুখোশ, (3, 3))

মুখোশ = cv2.dilate (মুখোশ, কিছুই নয়, পুনরাবৃত্তি = 5)

মাস্ক = cv2.erode (মুখোশ, কিছুই নয়, পুনরাবৃত্তি = 1)

মুখোশ = cv2.dilate (মুখোশ, কিছুই নয়, পুনরাবৃত্তি = 3)

আমি, thresh = cv2.threshold (মুখোশ, 127, 255, cv2. THRESH_BINARY)

cnts = cv2.findContours (থ্রেশ, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]

কেন্দ্র = কোনটি নয়

উল্লম্ব = 0

দিগ = 0

যদি len (cnts)> 0:

c এর জন্য cnts:

(x, y), ব্যাসার্ধ = cv2.minEnclosingCircle (c)

কেন্দ্র = (int (x), int (y))

ব্যাসার্ধ = int (ব্যাসার্ধ)

cv2. বৃত্ত (ফ্রেম, কেন্দ্র, ব্যাসার্ধ, (0, 255, 0), 2)

x = int (x)

y = int (y)

যদি 180 <x <300:

যদি y> 300:

vert = vert +1

এলিফ y <180:

vert = vert +1

অন্য:

vert = vert

যদি 180 <y <300:

যদি x> 300:

দিগন্ত = দিগ +1

এলিফ x <180:

দিগন্ত = দিগন্ত +1

অন্য:

দিগন্ত = দিগন্ত

যদি vert! = initvert:

"উল্লম্ব গলিতে গাড়ি:" + str (উল্লম্ব) মুদ্রণ করুন

initvert = vert

প্রিন্ট করুন "অনুভূমিক লেনে গাড়ি:" + str (দিগন্ত)

inithoriz = দিগন্ত

ছাপা '----------------------------'

দিগন্ত! = inithoriz:

"উল্লম্ব গলিতে গাড়ি:" + str (উল্লম্ব) মুদ্রণ করুন

initvert = vert

প্রিন্ট করুন "অনুভূমিক লেনে গাড়ি:" + str (দিগন্ত)

inithoriz = দিগন্ত

ছাপা '----------------------------'

যদি vert <horizont:

GPIO.output (23, GPIO. HIGH)

GPIO.output (21, GPIO. HIGH)

GPIO.output (16, GPIO. LOW)

GPIO.output (25, GPIO. LOW)

দিগন্ত <vert:

GPIO.output (16, GPIO. HIGH)

GPIO.output (25, GPIO. HIGH)

GPIO.output (23, GPIO. LOW)

GPIO.output (21, GPIO. LOW)

cv2.imshow ("ফ্রেম", ফ্রেম)

cv2.imshow ("HSV", hsv)

cv2.imshow ("থ্রেশ", থ্রেশ)

কাঁচা (0)

যদি cv2.waitKey (1) এবং 0xFF == ord ('q'):

বিরতি

cv2.destroyAllWindows ()

GPIO.cleanup ()

ধাপ 3: রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট

রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট
রাস্পবেরি পাই এবং ক্যামেরা মাউন্ট

3D প্রিন্ট কেস এবং ক্যামেরা মাউন্ট এবং একত্রিত।

ধাপ 4: ট্রাফিক লাইট সমাবেশ

ট্রাফিক লাইট সমাবেশ
ট্রাফিক লাইট সমাবেশ
ট্রাফিক লাইট সমাবেশ
ট্রাফিক লাইট সমাবেশ
ট্রাফিক লাইট সমাবেশ
ট্রাফিক লাইট সমাবেশ

ব্রেডবোর্ড দিয়ে ট্রাফিক লাইট পরীক্ষা করুন। LEDs এর প্রতিটি বিপরীত সেট একটি anode ভাগ করে, এবং তাদের সব একটি সাধারণ ক্যাথোড (স্থল) ভাগ। মোট 7 টি ইনপুট তার থাকতে হবে: 1 টি LEDS (6) + 1 স্থল তারের জন্য। ট্রাফিক লাইট সোল্ডার এবং একত্রিত করুন।

ধাপ 5: ওয়্যারিং (পার্ট 1)

তারের (পর্ব 1)
তারের (পর্ব 1)
তারের (পর্ব 1)
তারের (পর্ব 1)
তারের (পর্ব 1)
তারের (পর্ব 1)
তারের (পর্ব 1)
তারের (পর্ব 1)

মহিলা হেডার পিনগুলি প্রায় 5 ফুট তারের মধ্যে বিক্রি করুন। এই দিকগুলি হল যে এই তারগুলি পিভিসি পাইপের মাধ্যমে পরে সাপ দেবে। লাইটের বিভিন্ন সেট (2 x 3 রঙ এবং 1 স্থল) আলাদা করতে সক্ষম হতে ভুলবেন না। এই ক্ষেত্রে, আমি আরেকটি লাল, হলুদ এবং নীল তারের প্রান্তকে শার্পি দিয়ে চিহ্নিত করেছি যাতে আমি জানি কোনটি।

ধাপ 6: পরিবেশ তৈরি করা

পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা
পরিবেশ গড়ে তোলা

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

ধাপ 7: পিভিসি ফ্রেম চূড়ান্ত করা

পিভিসি ফ্রেম চূড়ান্ত করা
পিভিসি ফ্রেম চূড়ান্ত করা
পিভিসি ফ্রেম চূড়ান্ত করা
পিভিসি ফ্রেম চূড়ান্ত করা
পিভিসি ফ্রেম চূড়ান্ত করা
পিভিসি ফ্রেম চূড়ান্ত করা

উপরের পাইপে, একটি গর্ত ড্রিল করুন যা তারের একটি বান্ডিল ফিট করতে পারে। যতক্ষণ আপনি পাইপের ভিতরে প্রবেশ করতে পারেন ততক্ষণ একটি রুক্ষ গর্ত ঠিক আছে। পিভিসি পাইপ এবং কনুই জয়েন্টের মাধ্যমে তারের সাপ টেস্ট ফিটের জন্য। সবকিছু চূড়ান্ত হয়ে গেলে, প্রধান ফ্রেমের চেহারা পরিষ্কার করতে পিভিসি কিছু কালো স্প্রে পেইন্ট দিয়ে আঁকুন। একটি টি-জয়েন্ট ফিট করার জন্য পিভিসি পাইপের মধ্যে একটি ছোট ফাঁক কাটা। এই টি-জয়েন্টে একটি পিভিসি পাইপ যুক্ত করুন যাতে ট্রাফিক লাইট বন্ধ থাকে। ব্যাসটি মূল ফ্রেমের (১/২ ) সমান হতে পারে, যদিও আপনি যদি একটি পাতলা পাইপ ব্যবহার করেন তবে নিশ্চিত করুন যে wire টি তারের মধ্যে সাপ আছে।

ধাপ 8: তারের (অংশ 2)

ওয়্যারিং (পার্ট 2)
ওয়্যারিং (পার্ট 2)
ওয়্যারিং (পার্ট 2)
ওয়্যারিং (পার্ট 2)
ওয়্যারিং (পার্ট 2)
ওয়্যারিং (পার্ট 2)

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

ধাপ 9: সমাপ্ত

সমাপ্ত!
সমাপ্ত!
সমাপ্ত!
সমাপ্ত!
সমাপ্ত!
সমাপ্ত!
সমাপ্ত!
সমাপ্ত!

কোডটি চালানোর জন্য, আপনার উৎসকে project/.profile এবং cd হিসাবে আপনার প্রকল্পের অবস্থানে সেট করতে ভুলবেন না।

ধাপ 10: অতিরিক্ত (ছবি)

প্রস্তাবিত: