Skip to content
This repository has been archived by the owner on Jun 8, 2020. It is now read-only.

Latest commit

 

History

History
350 lines (194 loc) · 41.9 KB

neuron_resonance_part1.md

File metadata and controls

350 lines (194 loc) · 41.9 KB

কৃত্রিম নিউরনে অনুরণন: পর্ব - ১

ফেলুদা হাতের বইটা সশব্দে বন্ধ করে টক্ টক্ দুটো তুড়ি মেরে বিরাট হাই তুলে বলল, 'রোবট'।

আমি জিজ্ঞেস করলাম, 'এতক্ষণ কি তুমি রোবটিক্সের বই পড়ছিলে?'

বইটায় একটা খবরের কাগজের মলাট দেওয়া, তাই নামটা পড়তে পারিনি। এটা জানি যে, ওটা সিধু জ্যাঠার কাছ থেকে ধার করে আনা। সিধু জ্যাঠার খুব বই কেনার বাতিক। সবাইকে ধার দেন না, তবে ফেলুদাকে দেন। ফেলুদাও সিধু জ্যাঠার বই বাড়িতে এনেই আগে সেটায় মলাট দিয়ে নেয়।

একটা চারমিনার ধরিয়ে পর পর দুটো ধোঁয়ার রিং ছেড়ে ফেলুদা বলল, 'রোবটিক্সের বই বলে আলাদা কিছু নেই। সবই মেকানিক্স, কৃত্রিম বুদ্ধিমত্তা আর কন্ট্রোল সিস্টেমের কম্বিনেশন। তুই যে ইউটিউবে ভিডিও দেখিস, সেখানে রিকমেন্ডেশন আসে, তোর ইমেইলে আলাদা স্প্যাম ফোল্ডারে মেইল জমা হয়, তুই যে অ্যামাজন থেকে প্রোডাক্ট কিনিস সেখানেও বলে, এটার সাথে ওটা কিনুন কিংবা চিন্তা করে দ্যাখ তোর ফেসবুক অ্যাকাউন্টের People you may know এ বহু পুরাতন বন্ধুর আইডি যাদুমন্ত্রবলে খুঁজে দেয় যার সাথে কিনা গত ৮-৯ বছরে কথাই হয় নি। গুগল সার্চ এত ভাল কাজ করে কীভাবে কখনো ভেবে দেখেছিস? এত যে প্রোগ্রামিং করিস, কখনো এগুলো নিয়ে চিন্তা করেছিস? করিসনি!'

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

'কেবল সফটওয়্যার নয়', ফেলুদা বলে চলল, 'এই যে অটোনোমাস কোয়াডকপ্টার উড়ে গেল সেখানেও আছে ইন্টেলিজেন্স।'

ফেলুদার দৌলতে অবশ্য আমার বিভিন্ন রকম ইন্টেলিজেন্স বিশিষ্ট মানুষের সাথে পরিচয় হয়েছে। ফেলুদার ইন্টেলিজেন্স কোন পর্যায়ের সেটাই ভাবছিলাম। ওকে জিজ্ঞেস করাতে বলল, 'নন রেপ্লিক্যাবল হাইপারকনশাস ইন্টেলিজেন্স বলতে পারিস।'

'আর আমি তাহলে কী?'

'তোর ইন্টেলিজেন্স লেভেল একটা বিন্দুর সমান যেটাকে অভিধানে বলে পরিমাণহীন স্থাননির্দেশক চিহ্ন।'

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

সবেমাত্র কম্পিউটারের সামনে বসতে যাব এমন সময় দরজার কড়াটা কে যেন সজোড়ে নেড়ে উঠল। দরজা খুলে দেখি ইন্সপেক্টর অমিত বাবু।

অমিত বাবু বললেন, 'তোমার দাদা বাড়িতে আছেন?'

শুনে ফেলুদা সোফা ছেড়ে দরজার দিকে এগিয়ে গেল।

'আরে অমিত বাবু যে, হঠাৎ কী মনে করে?'

'আর বলবেন না মি. প্রদোষ মিত্র, সাতসকালেই উদ্ভট ঘটনার কুলকিনারা না পেলে যা হয় আরকি। আপনাকে তো আমি বিলক্ষণ চিনি, তাই দেরি না করে চলে এলুম।'

ফেলুদা আমার দিকে ফিরে বলল, 'তোপসে, যা তো ভেতরে চায়ের কথা বলে আয়।'

বেয়ারা শংকরকে চায়ের ফরমায়েশ দিয়ে ফিরতেই শুনতে পেলাম ফেলুদা হাতে একটা কাগজ নিয়ে বলছে,

'হুম, বুঝলাম। তাহলে ডাকে যেসব চিঠি এসেছে, সবগুলোতেই এইরকম নম্বর দেয়া? ভদ্রলোক মারা যাওয়ার কত আগে থেকে আসা শুরু করে?'

'হ্যাঁ সবগুলোই আইডেন্টিক্যাল তবে নম্বর আলাদা। তবে একটা ব্যাপার লক্ষ্য করেছি, প্রত্যেকটা চিঠিতে ডিজিট সংখ্যা সমান। চিঠি আসা শুরু করে দিন সাতেক আগে থেকে।', বললেন অমিত বাবু।

'ভদ্রলোকের ব্যাপারে কতটুকু কী জানলেন?'

'বেশি কিছু নয়, ভদ্রলোক নিঃসন্তান এবং বিশাল সম্পত্তির মালিক। উনার স্ত্রী গত হয়েছেন বছর সাতেক হল। আশেপাশে কোন আত্মীয়ের নামধাম পেলাম না খবর দেওয়ার মত।'

'আর খুনীর ব্যাপারে কিছু জানতে পেরেছেন?'

'নাহ, খুন করার পর ঘটনাস্থল পুরো ভালভাবে ক্লিন করা করেছে। যতটুকু বুঝলাম খুনী বেশ প্রফেশনাল।'

'আচ্ছা, চিঠিটা আমার কাছে রাখছি। আপাতত বলতে পারি এটা দামী কাগজে 2B পেন্সিলে লেখা। আপনি বাকি চিঠি যত দ্রুত সম্ভব পৌঁছে দেবেন। হয়ত এটা প্র্যাক্টিক্যাল জোক ছাড়া কিছুই না। তারপরেও বিষয়টা সিরিয়াসলি নিতে হবে।'

'অনেক ধন্যবাদ মি. মিত্তির। তাহলে আজ আমি উঠি।', বলে চলে গেলেন অমিত বাবু। দরজা বন্ধ করে ফেলুদাকে বললাম,

-'ঘটনা কী ফেলুদা? কাগজে কী লেখা আছে? নতুন কোন রহস্য পেয়ে গেলে নাকি?'

-'সংখ্যাতত্ত্ব!', বলে চুপ মেরে গেল ফেলুদা। বুঝলাম এখন আর ওকে জিজ্ঞেস করে কোন উত্তর পাওয়া যাবে না।

আমি রুমে গিয়ে গুগল সামার অফ কোডের প্রিপারেশন নেয়া শুরু করলাম।

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


ফেলুদাকে এই ব্যাপার নিয়ে আর ঘাঁটাই নি। এই ঘটনার মাসখানেক পর যেটা ঘটল, তার জন্য আমরা কেউ পারতপক্ষে প্রস্তুত ছিলাম না। সকাল নটা পাঁচ বেজেছে কি বাজেনি, এমন সময় টেলিফোন বেজে উঠল। ফেলুদা সোফায় বই পড়ছিল, তড়াক করে উঠে টেলিফোনটা ধরে বলল,

-'হ্যালো, প্রদোষ মিত্র বলছি।'

-'ও অমিত বাবু, হ্যাঁ বলুন।'

-'সে কী! আবার?'

তিনবার হুম, পাঁচবার আচ্ছা, দুইবার ওকে বলে ফোন রেখে দিল।

আমার চেহারা দেখে ফেলুদা বলল, 'চ', আবারও ডাক রহস্য!'

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


ট্যাক্সি থেকে নেমে ভাড়া চুকিয়ে ফেলুদা আর আমি ঢুকলাম ঘরের ভিতরে। ইন্সপেক্টর অমিত বাবু দেখতে পেয়ে এগিয়ে এলেন।

'আসুন মি. মিত্তির, আপনার জন্যই অপেক্ষা করছিলাম'

'ভদ্রলোক কোথায় খুন হন?'

'বসবার ঘরে রাত দুটো নাগাদ, ফরেনসিক এর লোকদের একদম বিশ্বাস করি না। আপনাকে তাই চেক করার জন্য ডেকেছি। আসুন।'

'চল তোপসে।', বলে ফেলুদা অমিতবাবুকে অনুসরণ করতে লাগল।

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

'ভদ্রলোকের নাম কৈলাস চৌধুরি, পেশায় গণিতের শিক্ষক। ওঁর কিছু ছাত্রদের থেকে জানতে পারলাম ভদ্রলোক ভাল পড়াতে পারেন না। একটু পাগল টাইপের। কিন্তু তাই বলে তাঁর উপর কারও ক্ষোভ থাকতে পারে সেটা অস্বাভাবিক।', বললেন অমিতবাবু।

'হুম...। আচ্ছা ওনার কোন ছাত্রের সাথে কথা বলা যাবে?'

'অবশ্যই, আপনি চাইলে এখনই ব্যবস্থা করা সম্ভব।'

'এখন লাগবে না, পরে হলেও চলবে। আমার পর্যবেক্ষণ করা শেষ। আপনি আপনার ফরেনসিক টিম ডেকে কাজ শুরু করতে পারেন।'

'দেখে কী বুঝলেন মি. মিত্তির?'

'এখনি কিছু বলতে পারছি না, তবে চিঠিগুলো পেলে ভাল হত; আগের চিঠিপত্র থেকে কিছু উদ্ধার করতে পারিনি তবে মনে হয় এঁরটা পেলে কিছু আলোকপাত করা যেত।'

'চিঠি আমি আপনাকে কালকের মধ্যে পাঠিয়ে দিচ্ছি।'

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


বাড়ি ফিরেই ফেলুদা তার বিখ্যাত সবুজ খাতায় হিবিজিবি লেখা শুরু করল। আমি মনের অজান্তেই উসখুশ করছিলাম, ফেলুদা সেটা লক্ষ্য করে বলল, 'তিনটা প্রশ্ন।'

'মানে?'

'একটা শেষ!'

মনে মনে বললাম,'এই রে, ট্রিকটা বোঝা উচিৎ ছিল!', একরাশ বিরক্তি বিন্দুমাত্র না প্রকাশ করে বললাম 'চিঠির নম্বরগুলোর মানে কী?'

'এখনো জানিনা'

'তুমি দ্বিতীয়বার ঘর পরীক্ষা করতে গেলে কেন?'

'প্রথমবার আরেকটু হলেই মিস করে গেস্‍লাম। টেবিলের উপরে দ্বিতীয় বইতে একটা বুকমার্ক ছিল, চেক করতেই একটা ফোন নাম্বার পেয়ে গেলাম।'

'অমিতবাবুকে জানাও নি কেন তাহলে?', অবাক হয়ে জিজ্ঞেস করলাম।

'উহুঁ আর নয়, পরে জানতে পারবি!', বলে টকাস করে মাথায় একটা ছোট্ট গাঁট্টা দিয়ে তারপর চারমিনার ধরিয়ে ফেলুদা নিজের ঘরে গিয়ে দরজা আটকিয়ে দিল। এখন ওর চিন্তা করার পালা, আশা করছি জলদি কিছু জানতে পারব এই জটিল রহস্য সম্পর্কে।


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

'তপেশবাবু, ফেলুবাবু আছেন নাকি?'

'না দাদা নেই, আপনি ভিতরে আসুন। কোন ভাল খবর নিয়ে এলেন নাকি?'

'হ্যাঁ, তোমার দাদার গুণে আমার বইয়ের ভুলটুল তো অনেকটাই কমে এল তাই ভাবলাম ইয়ে মানে ওনাকে একটা ট্রিবিউট দি। তা কোন নতুন রহস্য টহস্য পেয়েছেন নাকি?'

'লালমোহনবাবু, ভাল কোন সংবাদ নিয়ে এসেছেন মনে হচ্ছে?', কোত্থেকে ফেলুদা হাজির হয়ে বলল।

'আরে বলবেন না মশাই, আমার বই নিয়ে তো ফিল্ম বানানোর প্রস্তাব এসেছে। ফেলু মিত্তিরের পরিচর্যায় প্রখর রূদ্র দিনে দিনে আরও প্রখর হয়ে উঠছে। কিন্তু আপনি ঘরে ঢোকার আগেই বুঝলেন কীভাবে?'

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

'বাহ বাহ, আপনার জবাব নেই। যেটা বলছিলাম, আপনি তো এইসময়ে সাধারণত বের হন না; কোন নতুন কেস হাতে নিয়েছেন নাকি?', বললেন লালমোহনবাবু।

'আপনাকে সব বলব তবে তার আগে বলুন আপনার গাড়িটা আজকের দিনের জন্য পাওয়া যাবে কিনা?'

'বিলক্ষণ, ইয়ে মানে, আমি তো অলয়েজ অ্যাট ইওর সার্ভিস! শুধু বলে ফেলুন কোথায় যেতে হবে।'

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

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

'বুঝেছি', বলে রাগে গজগজ করতে থাকলাম। আমি যেই তিমিরে ছিলাম সেই তিমিরেই আছি, ফেলুদা আগে আমাকে ওর কেসের ব্যাপারে সবসময় আপডেটেড রাখত। হঠাৎ কী হল বুঝতে পারলাম না।

যাওয়ার পথে আমার জানা অংশটুকুই ফেলুদা লালমোহনবাবুকে জানিয়ে রাখল। লালমোহনবাবু বার কতক 'হাইলি সাসপিশাস' বলে চুপ মেরে গেলেন।


গাড়ি থামল একটা ছোটখাট কম্পিউটারের দোকানের সামনে, ধুলোমাখা সাইনবোর্ডে লেখা 'ইলেক্ট্রোস্কলার্স রিসার্চ অ্যান্ড ডেভেলপমেন্ট সোসাইটি'। মানে বুঝলাম না, এরা কি বলতে চায়? একই সাথে দোকান এবং R&D?

দোকানে ঢুকতেই স্থূলকায় একজন লোক এগিয়ে এসে বললেন,

'কী চাই?'

ফেলুদা বলল, 'আঁমি জয়নারায়ণ বাগচি বলচি। আমিই আপনাকে ফোন করেছিলাম আমার ভাইপোর ব্যাপারে।'

'আচ্ছা, আপনার ভাইপো ডিজিটাল ইমেজ প্রসেসিং শিখতে চায়, তাইতো?'

'হ্যাঁ হ্যাঁ, আঁপনার মেমরি দেকচি খুব ইয়ে কি বলে যেন...'

'শার্প?'

'শার্প; শার্প রাইট', বাচ্চা ছেলের মত হাততালি দিয়ে উঠল ফেলুদা। বলল, 'ইয়ে মানে, আঁপনার নামটা জানা হয় নি। আর ফি এর ব্যাঁপারেও কিছু বঁলেননি।'

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

তারপর উনি আমার দিকে ফিরে বললেন,

'এই কম্পিউটারের সামনে বসো। তোমার নাম কী?', উত্তর দেয়ার পর বললেন, 'আচ্ছা তপেশরঞ্জন, তুমি কি কি প্রোগ্রামিং ল্যাঙ্গুয়েজ পারো?'

বললাম, 'C++ এবং Python কিছুটা পারি'

'গুড গুড, পাইথনের বেসিক জানলেই চলবে। সবকিছু সিম্পল রাখার জন্য আমি তোমাকে পাইথনেই ইমেজ প্রসেসিং শেখাব। কেমন?'


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

দোকান থেকে বের হয়ে দেখলাম, ফেলুদা হাসছে। বলল, 'তোর উপর অনেক প্রেশার গেল। আর নয়, যেতে যেতে সব বলছি। গাড়িতে ওঠ।'

ফেলুদার আর আমার কথোপকথনের সারমর্ম মোটামুটি এই,

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


বাড়ি ফেরার পর ফেলুদা একটা SD Card Adapter ধরিয়ে দিয়ে বলল, 'নে এইখানে চিঠিপত্রের সকল নম্বরের ছবি তোলা আছে। তুই যা শিখেছিস তা অ্যাপ্লাই করে ডিজিটাল এডিট্যাবল ডিজিট বানাতে পারিস কিনা দ্যাখ। আমার যদ্দুর মনে হয়, এই নম্বরগুলোতেই রহস্যের চাবি লুকিয়ে আছে। কিন্তু এত এত নম্বর খাতা-কলমে বিশ্লেষণ করতে করতে আরেকটা খুন হয়ে যেতে পারে। তাই আমাদের আপাতত এমন একটি সিস্টেম বানাতে হবে যেটা ইমেজ থেকে এডিট্যাবল ডিজিটে রূপান্তর করতে পারে। এবং এই কাজটা আমি তোকে দিলাম।'

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

কম্পিউটার চালু করে SD Card Adapter Reader দিয়ে কার্ডটা রিড করা শুরু করি। ফোল্ডারে ঢুকে কয়েটা ইমেজ ওপেন করি।

0

1

2

3

4

5

6

7

8

9

চিন্তার বিষয়!

ওপেন করা ফোল্ডারের একটা স্ক্রিনশট।

images

তবে একদিক থেকে মুক্তি পেলাম। প্রতিটা ইমেজ একই আকারের অর্থাৎ $$ 32 \times 32 $$ । তাই এদের প্রসেস করতে সুবিধা হবে। নইলে আমার নিজের এই ছবিগুলোকে রিসাইজ করে নিতে হত।

প্রতিটা ফাইলের শেষের ডিজিট বলে দিচ্ছে ইমেজটা কোন ডিজিটের। ফেলুদার আসলেই জবাব নেই।

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

আগেই একগাদা চিন্তা করার চেয়ে কাজে হাত দিয়ে তারপর চিন্তা করা আমার পক্ষে যুক্তিযুক্ত মনে হল, তাই Jupyter Notebook ওপেন করে কোড লেখা শুরু করলাম।

ইমেজ লোড করার কোড লেখা শুরু করি

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

from scipy.ndimage import imread
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
import numpy as np

image_path = "./BengaliBMP/"
image_count = 6000
%matplotlib inline
images = [image_path + 'bn' + str(num).zfill(5) + '.bmp' for num in range(image_count)]

ফেলুদার দেওয়া ইমেজগুলো RGB ছিল অর্থাৎ Red, Green, Blue এই তিন চ্যানেলের সমষ্টি। এই রকম আরও অনেক চ্যানেল আছে, যেমন CMYK, Grayscale, Binary ইত্যাদি। আমরা যেভাবে ছবি দেখি কম্পিউটার সেভাবে দেখে না। ও শুধু চেনে নম্বর। RGB হল মৌলিক তিনটা রং, যা দিয়ে বাকি সব রং তৈরি করা যায়। তাই RGB চ্যানেলের ইমেজ সাধারণত রঙিন হয়।

rgb

এইভাবে কম্পিউটারে ম্যাট্রিক্স আকারে সাজানো থাকে RGB চ্যানেলের ইমেজ। আমরা একে বলতে পারি ৩ লেয়ারের 2D Matrix Array। Grayscale এবং Binary ইমেজের ক্ষেত্রে এই চ্যানেলের সংখ্যা হয় মাত্র একটা।

ফেলুদার দেয়া ছবিগুলোর সাইজ ছিল $$ 32 \times 32 $$ এবং RGB। এর মানে হচ্ছে একেকটা 2D Matrix অ্যারের Row এবং Column 32 টা করে। আমরা যদি এর শেপ লিখতে চাই তাহলে লিখব, $$ 32 \times 32 \times 3 $$ আকারে।

আমি এখন প্রোগ্রাম করে এই তিনটা চ্যানেল থেকে কমিয়ে একটা চ্যানেলে আনব বা গ্রেস্কেলে আনব। আমি যদি এই কনভার্সন না করি তাহলে আমার $$ 32 \times 32 \times 3 = 3072 $$ সংখ্যক পিক্সেল নিয়ে কাজ করতে হত, গ্রেস্কেলে নিয়ে আসলে আমার $$ 32\times 32 \times 1=1024 $$ টা পিক্সেল নিয়ে কাজ করতে হবে যা তুলনামূলক সহজ কাজ।

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

def load_digit(digit, ip=image_path, ic=image_count):
    return [ip + 'bn' + str(num).zfill(5) + '.bmp' for num in range(ic) if str(num)[-1] == str(digit)]

একটু টেস্ট করা যাক ঠিকঠাক কাজ করছে কিনা,

ones = load_digit(1)
for one in ones:
    print(one)

আউটপুট আসল,

./BengaliBMP/bn00001.bmp
./BengaliBMP/bn00011.bmp
./BengaliBMP/bn00021.bmp
./BengaliBMP/bn00031.bmp
./BengaliBMP/bn00041.bmp
./BengaliBMP/bn00051.bmp
./BengaliBMP/bn00061.bmp
./BengaliBMP/bn00071.bmp
........................

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

ইমেজ শো করি

ইমেজ ঠিকঠাক লোড হচ্ছে কিনা সেটা চেক করতে হবে,

one_img = imread(ones[0])
plt.imshow(one_img)

ঠিকঠাক লোড হল,

one

ইমেজ চ্যানেল চেক করি

এটা আসলেই RGB ইমেজ কিনা সেটা চেক করা দরকার,

print(one_img.shape)

আউটপুট

(32, 32, 3)

হ্যাঁ যেটা বলছিলাম, সেটাই।

ইমেজের চ্যানেল কনভার্ট করি ও চ্যানেল চেক করি

one_img_gray = rgb2gray(one_img)
print(one_img_gray.shape)

আউটপুট

(32, 32)

এর মানে হল এর চ্যানেল একটাই।

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

কখন যে ক্ষিদে পেয়ে গিয়েছিল টেরও পাইনি। ফেলুদার ডাকে খেয়াল হল। সব ফাইলগুলো সেভ করে ডাইনিং রুমে গিয়ে খেতে বসার সময় ফেলুদা বলল,

'সিধু জ্যাঠার কাছে একবার যেতে হবে। ওপেনসোর্স অ্যাক্টিভিটি নিয়ে কোন সংবাদ আছে কিনা তার কাছে।'

'কেন ফেলুদা?'

'এত বক বক করিসনে তো। যেটা বলছি মন দিয়ে শোন.... '