সরাসরি প্রধান সামগ্রীতে চলে যান

ইমেজ ক্লাসিফিকেশন প্রজেক্টের জন্য ফ্লাস্ক সার্ভার তৈরি

ভূমিকা

আমাদের এই প্রজেক্টের লক্ষ্য হলো একটি ইমেজ ক্লাসিফিকেশন বা ছবি শনাক্তকারী সিস্টেম তৈরি করা। আগের ধাপগুলোতে আমরা মেশিন লার্নিং মডেল তৈরি করে সেটি সেভ (save) করেছিলাম। এই পর্বে আমরা শিখব কীভাবে সেই মডেলটিকে একটি ফ্লাস্ক সার্ভার (Flask Server)-এর মাধ্যমে ওয়েবসাইটের সাথে যুক্ত করতে হয়, যাতে ইউজার সহজেই কোনো ছবি আপলোড করে সেটি কার ছবি তা জানতে পারে।


১. ফ্লাস্ক সার্ভার কী?

ভিডিও রেফারেন্স: [01:27]

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

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


২. Base64 এনকোডিং কী এবং কেন প্রয়োজন?

ভিডিও রেফারেন্স: [06:09]

ইউজার যখন ওয়েবসাইট থেকে কোনো ছবি আপলোড করে, সেই ছবি সরাসরি ব্যাক-এন্ডে পাঠানো একটু ঝামেলার। তাই ছবিকে একটি টেক্সট স্ট্রিংয়ে রূপান্তর করা হয়। একে বলা হয় Base64 Encoding

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


৩. কোডিংয়ের মাধ্যমে ক্লাসিফিকেশন

ভিডিও রেফারেন্স: [09:47]

এখানে আমাদের util.py ফাইলে একটি ফাংশন তৈরি করতে হয় যা ছবির প্রসেসিং সামলায়। এরপর server.py ফাইলে আমরা ফ্লাস্ক সার্ভার তৈরি করি। নিচে কোডের একটি সাধারণ কাঠামো দেওয়া হলো:

Python

from flask import Flask, request, jsonify
import util

app = Flask(__name__)

@app.route('/classify_image', methods=['POST'])
def classify_image():
    # ইউজার থেকে ইমেজ ডেটা নেওয়া হচ্ছে
    image_data = request.form['image_data']
    
    # util ফাংশন দিয়ে ছবি শনাক্ত করা হচ্ছে
    result = util.classify_image(image_data)
    
    # রেজাল্ট JSON ফরম্যাটে পাঠানো হচ্ছে
    response = jsonify(result)
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response

if __name__ == "__main__":
    util.load_saved_artifacts() # মডেল লোড করা হচ্ছে
    app.run(port=5000) 

কোড ব্যাখ্যা:

  • @app.route: এটি নির্ধারণ করে কোন লিঙ্কে (যেমন: localhost:5000/classify_image) গেলে এই কাজ করবে।

  • request.form['image_data']: ইউজার যে ছবিটি পাঠিয়েছে, তা এখান থেকে নেওয়া হয়।

  • jsonify: এটি রেজাল্টকে এমনভাবে সাজায় যা ওয়েব ব্রাউজার বা ওয়েবসাইট খুব সহজে বুঝতে পারে।


৪. মডেল এবং আর্টফ্যাক্টস লোড করা

ভিডিও রেফারেন্স: [16:35]

মডেলটি যখন আগে সেভ করা হয়েছিল, তখন একে একটি .pickle ফাইলে রাখা হয়েছিল। সার্ভার যখন চালু হয়, তখন এই ফাইলটি মেমরিতে লোড করতে হয় যাতে সেটি দ্রুত কাজ করতে পারে। এই ফাইলগুলোকে প্রজেক্টে Artifacts (আর্টফ্যাক্টস) বলা হয়। load_saved_artifacts ফাংশনটি আমাদের তৈরি করা মডেল এবং ক্লাসের ডিকশনারিগুলো (যেমন: ০ মানে কোহলি, ১ মানে ফেদেরার) মেমরিতে নিয়ে আসে।


বিশ্লেষণ এবং আমার চিন্তাভাবনা

এই ভিডিওটি একজন ডেটা সায়েন্টিস্টের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ শুধু মডেল তৈরি করলেই হয় না, সেটিকে বাস্তবে ব্যবহারের উপযোগী করাটাই আসল কাজ।

  • বাস্তবতা: এখানে কোডটি খুব সুন্দরভাবে মডুলার করা হয়েছে (অর্থাৎ আলাদা আলাদা ফাইল util.py, server.py ব্যবহার করা হয়েছে), যা প্রফেশনাল কাজের জন্য জরুরি।

  • সম্ভাবনা: শুধু ছবির ক্ষেত্রে নয়, এই একই পদ্ধতি ব্যবহার করে টেক্সট বা অডিওর জন্যও সার্ভার তৈরি করা সম্ভব।

  • পরামর্শ: যদি আপনার ইমেজ ক্লাসিফিকেশন আরও নির্ভুল করতে চান, তবে অনেক বেশি ডেটাসেট ব্যবহার করা এবং ছবির আলো বা অ্যাঙ্গেল নিয়ে কাজ করা জরুরি। এছাড়া বড় প্রজেক্টের ক্ষেত্রে ফ্লাস্কের বদলে FastAPI ব্যবহার করা বর্তমানে অনেক বেশি ট্রেন্ডি এবং দ্রুততর।

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

[

Data Science & Machine Learning Project - Part 6 Flask Server | Image Classification

codebasics · 56K views

](http://www.youtube.com/watch?v=NtNl97LlpOk)

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...