মূল ধারণা।
object detection পাতা ছবির ওপর একটি window সরায় আর একে একে হাজারো অবস্থান দেখে। YOLO — You Only
Look Once — কিছুই সরায় না। এটি ছবির ওপর একটি grid বসায়, আর CNN-এর একবার চলায় প্রতিটি cell-এর
উত্তর একসঙ্গে আসে। প্রতিটি cell সংখ্যার একই ছোট তালিকা দেয়: box কোথায় (x, y,
w, h), box-এ কোনো জিনিস আছে বলে এটি কতটা নিশ্চিত (confidence), আর এটি কোন
class (প্রতিটি class-এর জন্য একটি সম্ভাবনা)। পুরো উত্তরটি সংখ্যার একটি ব্লক, grid × grid × প্রতি
cell-এর সংখ্যা, তাই নেটওয়ার্কটি live video-র জন্য যথেষ্ট দ্রুত। grid ছবিটিকে ছোট ছোট ছবিতে কাটে না: CNN পুরো
ছবিটি একবার দেখে, আর প্রতিটি cell তার উত্তরের শুধু একটি ঘর। এ কারণেই একটি cell নিজের চেয়ে অনেক বড় box আঁকতে
পারে।
কোন cell উত্তর দেয়?
যে cell-এ প্রাণীটির কেন্দ্র থাকে, সেটিই তার দায়িত্বে। যে প্রতিবেশী cell প্রাণীটির শুধু একটি অংশ
ছোঁয়, সেগুলোও একটি box অনুমান করে, কিন্তু প্রতিটি cell-এর box-এর কেন্দ্র সেই cell-এর ভেতরেই থাকতে হয়, তাই
তাদের অনুমান একপাশে সরে থাকে আর কম score পায়। একটি box-এর score হলো তার confidence গুণ class-এর সম্ভাবনা।
তারপরও প্রতিটি প্রাণীর চারপাশে কয়েকটি ডুপ্লিকেট থাকে, তাই YOLO অন্য পাতাগুলোর মতোই দুটি পরিষ্কারের ধাপ দিয়ে
শেষ করে: কম score বাদ, তারপর NMS।
এখানে কী simulate করা হয়েছে।
আসল YOLO হাজারো label দেওয়া ছবি থেকে তার সংখ্যা শেখে। এই পাতায় কোনো trained নেটওয়ার্ক নেই, তাই প্রতিটি
cell-এর সংখ্যা এমনভাবে বানানো যেমন একটি trained নেটওয়ার্ক আচরণ করে: box হলো আসল box আর একটি ছোট, স্থির ভুল,
দরকার হলে cell-এর ভেতরে সরানো; confidence হলো প্রাণীটি cell-এর যতটা ঢাকে (দায়িত্বে থাকা cell-এর জন্য 1) গুণ
cell-এর box আর আসলটির IoU; আর class-এর সম্ভাবনা হলো cell-এর কতটা বিড়াল আর কতটা কুকুর ঢাকে। এই পাতায় প্রতিটি
cell একটি box দেয়; প্রথম YOLO প্রতি cell-এ দুটি দিত, নতুনগুলো আরও বেশি দেয়।