ভূমিকা
আমাদের এই প্রজেক্টের লক্ষ্য হলো একটি ইমেজ ক্লাসিফিকেশন বা ছবি শনাক্তকারী সিস্টেম তৈরি করা। আগের ধাপগুলোতে আমরা মেশিন লার্নিং মডেল তৈরি করে সেটি সেভ (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)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d