সুচিপত্র:
- ধাপ 1: আপনার পরিবেশ স্থাপন করা
- ধাপ 2: নাসা অনুসন্ধান API- এর জিজ্ঞাসা করা
- ধাপ 3: কনভোলিউশনাল নিউরাল নেটওয়ার্ক
- ধাপ 4: ছবিটি প্রসেস করা হচ্ছে
- ধাপ 5: একটি সমতুল্য প্রক্ষেপণে একসঙ্গে ছবি সেলাই করা
- ধাপ 6: সম্পূর্ণ পাইথন স্ক্রিপ্ট
- ধাপ 7: ইলেকট্রন অ্যাপ
- ধাপ 8: কার্যকর করা
ভিডিও: পাইথন, ইলেক্ট্রন এবং কেরাস ব্যবহার করে নিউরাল নেটওয়ার্ক চালিত প্ল্যানেটারিয়াম: 8 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:58
এই নির্দেশনায়, আমি আপনাকে দেখাব কিভাবে আমি পাইথন এবং ইলেকট্রন ব্যবহার করে একটি স্বয়ংক্রিয় 3D প্ল্যানেটারিয়াম জেনারেটর লিখেছি।
উপরের ভিডিওটি র্যান্ডম প্ল্যানেটারিয়ামগুলির মধ্যে একটি তৈরি করে যা প্রোগ্রামটি তৈরি করে।
** দ্রষ্টব্য: এই প্রোগ্রামটি কোনভাবেই নিখুঁত নয়, এবং কিছু জায়গায় খুব পাইথনিক নয়। নিউরাল নেট বৈষম্যমূলক শুধুমাত্র ~ 89% সঠিক, তাই কিছু অদ্ভুত ছবি এটিকে প্ল্যানেটারিয়ামে পরিণত করবে **
সুনির্দিষ্ট
প্ল্যানেটারিয়াম মহাকাশ সম্পর্কিত ছবিগুলির জন্য একটি নাসা এপিআই জিজ্ঞাসা করে এবং ছবিটি প্রক্রিয়াকরণের জন্য উপযুক্ত কিনা তা নির্ধারণের জন্য একটি কনভোলিউশনাল নিউরাল নেটওয়ার্ক ব্যবহার করে। প্রোগ্রাম তারপর ইমেজ থেকে পটভূমি অপসারণ করতে OpenCV ব্যবহার করে, এবং অবশেষে ছবিগুলি একসঙ্গে একটি বড় সমকোণীয় ছবিতে সেলাই করা হয়। এই ছবিটি তখন সংরক্ষিত হয়, এবং একটি ইলেক্ট্রন নোড.জেএস অ্যাপ্লিকেশন ছবিটি খুলে দেয়, এবং ছবিটিকে প্ল্যানেটারিয়াম স্টাইলের 3D বিন্যাসে দেখার জন্য PhotoSphere.js প্যাকেজ ব্যবহার করে।
নির্ভরতা
পাইথন:
- কেরাস
- বালিশ
- cv2
- অসম্পূর্ণ
- অনুরোধ
- urllib
- এলোমেলো
- সময়
- io
ইলেকট্রন:
ফটোস্ফিয়ার
ধাপ 1: আপনার পরিবেশ স্থাপন করা
ইলেকট্রন এবং পাইথন ইনস্টল করা
প্রথমে, নিশ্চিত করুন যে আপনার node.js এবং npm ইনস্টল আছে (যদি না হয়, আপনি এখানে ডাউনলোড করতে পারেন)
এরপরে, আপনাকে ইলেক্ট্রন ইনস্টল করতে হবে। একটি কমান্ড প্রম্পট খুলুন এবং নিম্নলিখিত কমান্ডটি প্রবেশ করুন:
npm ইলেকট্রন -জি ইনস্টল করুন
এরপরে, আপনার অজগর দরকার, যা এখানে ডাউনলোড করা যায়
একটি ভার্চুয়াল পরিবেশ স্থাপন
একটি কমান্ড প্রম্পট খুলুন, তারপরে আপনার ভার্চুয়াল পরিবেশ সেট আপ করতে নিম্নলিখিত কমান্ডগুলি প্রবেশ করুন:
পাইপ ভার্চুয়ালেনভ ইনস্টল করুন
virtualenv স্থান
সিডি স্পেস
স্ক্রিপ্ট / সক্রিয়
পাইথন নির্ভরতা ইনস্টল করা
আপনার পাইথন নির্ভরতা ইনস্টল করার জন্য কমান্ড প্রম্পটে এই কমান্ডগুলি চালান:
পিপ ইনস্টল keras
পিপ ইনস্টল বালিশ
pip ইনস্টল numpy
pip ইনস্টল করার অনুরোধ
pip opencv-python ইনস্টল করুনআপনি যদি নিজেই নেটওয়ার্ককে প্রশিক্ষণ দিতে চান, তবে কেরাসের জন্য জিপিইউ ত্বরণ সেট করতে ভুলবেন না
ধাপ 2: নাসা অনুসন্ধান API- এর জিজ্ঞাসা করা
ওভারভিউ
নাসার অনেকগুলি কার্যকর API রয়েছে যা আপনি আপনার প্রকল্পগুলির সাথে ব্যবহার করতে পারেন। এই প্রকল্পের জন্য, আমরা অনুসন্ধান API ব্যবহার করব, যা আমাদের স্থান-সম্পর্কিত চিত্রগুলির জন্য নাসার ইমেজ ডাটাবেস অনুসন্ধান করতে দেয়।
কোড
প্রথমে, একটি যুক্তি গ্রহণ করার জন্য আমাদের একটি পাইথন ফাংশন সংজ্ঞায়িত করতে হবে যা অনুসন্ধান শব্দ হিসাবে কাজ করবে:
def get_image_search (ফ্রেজ):
পাস
এরপরে, আমরা অনুসন্ধানের শব্দটিকে ইউআরএল ফর্ম্যাটে রূপান্তর করব, তারপরে এপিআই জিজ্ঞাসা করতে অনুরোধ লাইব্রেরি ব্যবহার করুন:
def get_image_search (ফ্রেজ):
params = {"q": urllib.parse.quote (arg), "media_type": "image"} results = request.get ("https://images-api.nasa.gov/search", params = params)
অবশেষে, আমরা সংগ্রহটি+JSON স্ট্রিং ডিকোড করব যা API আমাদের কাছে ফিরিয়ে দিয়েছে এবং অনুসন্ধান শব্দ সম্পর্কিত চিত্রগুলির লিঙ্কগুলির একটি তালিকা বের করবে:
def get_image_search (ফ্রেজ):
params = {"q": urllib.parse.quote (arg), "media_type": "image"} results = request.get ("https://images-api.nasa.gov/search", params = params) data = [result ['href'] results.json () ["সংগ্রহ"] ["আইটেম"] এর ফলাফলের জন্য
আমরা শুরু করছি! আমাদের কাছে এখন একটি কোড স্নিপেট আছে যা NASA ইমেজ সার্চ API কে জিজ্ঞাসা করতে পারে, এবং আমাদের অনুসন্ধান শব্দ সম্পর্কিত চিত্রগুলির লিঙ্কগুলির একটি তালিকা ফেরত দিতে পারে।
ধাপ 3: কনভোলিউশনাল নিউরাল নেটওয়ার্ক
ওভারভিউ
নিউরাল নেটওয়ার্কের কাজ হল শ্রেণীবিন্যাস করা যে কোন ছবি মহাকাশে কোন কিছুর, নাকি তা নয়। এটি করার জন্য, আমরা একটি কনভোলিউশনাল নিউরাল নেটওয়ার্ক, অথবা সিএনএন ব্যবহার করব, ছবিতে একটি সিরিজের ম্যাট্রিক্স অপারেশন করতে এবং এটি কতটা স্পেস-ওয়াই তা নির্ধারণ করতে। আমি এই সব ব্যাখ্যা করব না, কারণ এর পিছনে অনেক তত্ত্ব আছে, কিন্তু যদি আপনি নিউরাল নেটওয়ার্ক সম্পর্কে জানতে চান, আমি "মেশিন লার্নিং মাস্টারি" এর পরামর্শ দিই
কোড
প্রথমত, আমাদের আমাদের নির্ভরতা আমদানি করতে হবে:
আমদানি ওএস
#ট্রেন চলাকালীন ইস্যুর জন্য সমাধান করুন GPU os.environ ['CUDA_VISIBLE_DEVICES'] = "tsorflow আমদানি করুন tf হিসাবে যদি tf.test.gpu_device_name (): মুদ্রণ ('GPU পাওয়া যায়') অন্য: মুদ্রণ (" কোন GPU পাওয়া যায়নি ") keras.preprocessing.image আমদানি থেকে ImageDataGenerator keras.predes থেকে আমদানি চিত্র keras.models আমদানি keras.layers থেকে ক্রমানুসারে আমদানি Conv2D, MaxPooling2D থেকে keras.layers আমদানি অ্যাক্টিভেশন, ড্রপআউট, ফ্ল্যাটেন, ঘন থেকে কেরাস আমদানি ব্যাকএন্ড থেকে পিআইএল আমদানি চিত্র np হিসাবে numpy আমদানি করুন
পরবর্তী আমরা আমাদের মডেল সংজ্ঞায়িত করতে হবে:
img_width, img_height = 1000, 500
train_data_dir = 'v_data/train' validation_data_dir = 'v_data/test' nb_train_samples = 203 nb_validation_samples = 203 epochs = 10 batch_size = 8 K.image_data_format যদি = (img_width, img_height, 3) মডেল = ক্রমিক () model.add (Conv2D (32, (2, 2), input_shape = input_shape)) model। = (2, 2))) model.add (Conv2D (32, (2, 2))) model.add (সক্রিয়করণ ('relu')) model.add (MaxPooling2D (পুল_সাইজ = (2, 2))) মডেল.add (Conv2D (64, (2, 2))) model.add (Activation ('relu')) model.add (MaxPooling2D (pool_size = (2, 2))) model.add (Flatten ()) মডেল add (Dense (64)) model.add (Activation ('relu')) model.add (Dropout (0.5)) model.add (Dense (1)) model.add (Activation ('sigmoid')) model.compile (ক্ষতি = 'বাইনারি_ক্রোসেন্ট্রপি', অপটিমাইজার = 'আরএমএসপ্রপ', মেট্রিক্স = ['নির্ভুলতা'])
আমি আপনার জন্য মডেলটি প্রশিক্ষণ দিয়েছি, কিন্তু আপনি যদি মডেলটিকে নিজে, নিজের ডেটাসেটে প্রশিক্ষণ দিতে চান, তাহলে আমি প্রশিক্ষণ কোড সংযুক্ত করেছি। অন্যথায়, আপনি প্রশিক্ষিত মডেলের HDF5 ফাইলটি ডাউনলোড করতে পারেন। ইন্সট্রাকটেবল ফাইল সীমাবদ্ধতার কারণে, আমাকে ".txt" এক্সটেনশান দিয়ে এটির নাম পরিবর্তন করতে হয়েছে। এটি ব্যবহার করতে, ফাইলের নাম ".h5" এক্সটেনশনে দিন এবং এই কোডটি দিয়ে লোড করুন:
model.load_weights ("model_saved.h5")
একটি ইমেজ স্পেস-ওয়াই কেমন তা অনুমান করতে নেটওয়ার্ক ব্যবহার করতে, আমরা এই ফাংশনটি সংজ্ঞায়িত করব:
def পূর্বাভাস (image_path):
img = image.load_img (image_path, target_size = (1000, 500)) img = np.expand_dims (img, axis = 0) result = model.predict_classes (img) return result [0] [0]
ধাপ 4: ছবিটি প্রসেস করা হচ্ছে
ওভারভিউ
ইমেজ প্রসেসিংয়ের জন্য, আমি OpenCV (cv2) লাইব্রেরি ব্যবহার করছি। প্রথমে, আমরা ছবির প্রান্তগুলিকে অস্পষ্ট করব, এবং তারপর আমরা একটি মুখোশ তৈরি করে এবং গাer় রঙের আলফা মান পরিবর্তন করে পটভূমি সরিয়ে ফেলব
কোড
এটি ফাংশনের অংশ যা প্রান্তগুলিকে ঝাপসা করে:
def processImage (img):
RADIUS = 20 # একটি ছবি খুলুন im = Image.open ("pilbuffer.png") # সাদা পটভূমিতে ছবি আটকান diam = 2 * RADIUS back = Image.new ('RGB', (im.size [0] + diam, im.size [1] + diam), (0, 0, 0)) back.paste (im, (RADIUS, RADIUS)) # ব্লার মাস্ক মাস্ক তৈরি করুন = Image.new ('L', (im.size [0] + diam, im.size [1] + diam), 255) blck = Image.new ('L', (im.size [0] - diam, im.size [1] - diam), 0) মুখোশ। আটকান transition-p.webp
এর পরে, আমরা গাer় রংগুলিকে স্বচ্ছ করে সেট করব, এবং ছবিটি সাময়িকভাবে সংরক্ষণ করব:
#মাস্ক তৈরি করুন এবং ফিল্টার কালোকে আলফা দিয়ে প্রতিস্থাপন করুন
image = cv2.imread ("transition.png") hMin = 0 sMin = 0 vMin = 20 hMax = 180 sMax = 255 vMax = 255 low = np.array ([hMin, sMin, vMin]) উপরের = np.array ([hMax, sMax, vMax]) hsv = cv2.cvtColor (image, cv2. COLOR_BGR2HSV) mask = cv2.inRange (hsv, lower, upper) output = cv2.bitwise_and (image, image, mask = mask) *_, alpha = cv2.split (output) dst = cv2.merge ((output, alpha)) output = dst with open ("buffer.png", "w+") as file: pass cv2.imwrite ("buffer.png", output)
ধাপ 5: একটি সমতুল্য প্রক্ষেপণে একসঙ্গে ছবি সেলাই করা
ওভারভিউ
এই ফাংশনটি একাধিক ছবি নেয় এবং সেগুলিকে একটি বিন্যাসে সেলাই করে যা PIL (বালিশ) লাইব্রেরি ব্যবহার করে PhotoSphere.js প্যাকেজ দ্বারা ব্যাখ্যা করা যায়
কোড
প্রথমত, আমাদের এমন একটি চিত্র তৈরি করতে হবে যা অন্যান্য ছবির জন্য হোস্ট হিসাবে কাজ করতে পারে:
new = Image.new ("RGBA", (8000, 4000), রঙ = (0, 0, 0))
এরপরে, আমাদের চিত্রগুলির অ্যারের মাধ্যমে পুনরাবৃত্তি করতে হবে (যা সবগুলি 1000x500 এ পুনরায় আকার দেওয়া হয়েছে) এবং সেগুলিকে ছবিতে রাখুন:
h = 0
w = 0 i = 0 img for img_arr: new.paste (img, (w, h), img) w += 1000 যদি w == 8000: h += 500 w = 0 i += 1
এখন আমরা এটিকে এমন একটি ফাংশনে মোড়ানো করি যা চিত্রের একটি অ্যারেকে তার যুক্তি হিসাবে নেয় এবং নতুন চিত্রটি ফেরত দেয়:
def stitch_beta (img_arr):
img_arr: new.paste (img, (w, h), img) w += 1000 যদি w == 8000: h += 500 w = 0 i += 1 নতুন ফেরত আসে
ধাপ 6: সম্পূর্ণ পাইথন স্ক্রিপ্ট
এটি সম্পূর্ণ পাইথন নিউরাল নেটওয়ার্ক স্ক্রিপ্ট, যা net.py হিসাবে সংরক্ষণ করা হয় এবং মূল স্ক্রিপ্টে আমদানি করা হয়:
# লাইব্রেরি আমদানি করা
আমদানি করুন #ট্রেন চলাকালীন ইস্যুর জন্য ফিক্স করুন oN GPU os.environ ['CUDA_VISIBLE_DEVICES'] = "tensorflow হিসাবে tf আমদানি করুন যদি tf.test.gpu_device_name (): মুদ্রণ ('GPU পাওয়া যায়') অন্য: মুদ্রণ (" কোন GPU পাওয়া যায় নি ") keras.preprocessing.image আমদানি করুন keras থেকে। np img_width, img_height = 1000, 500 train_data_dir = 'v_data/train' validation_data_dir = 'v_data/test' nb_train_samples = 203 nb_validation_samples = 203 যুগ: input_shape = (3, img_width, img_height) else: input_shape = (img_width, img_height, 3) model = Sequential () model.add (Conv2D (32, (2, 2), input_shape = input_shape)) model.add (সক্রিয়করণ ('relu')) model.add (MaxPooling2D (pool_size = (2, 2))) model.add (Conv2D (32, (2, 2))) মডেল add (Activation ('relu')) model.add (MaxPooling2D (pool_size = (2, 2))) model.add (Conv2D (64, (2, 2))) model.add (অ্যাক্টিভেশন ('relu')) model.add (MaxPooling2D (pool_size = (2, 2))) model.add (Flatten ()) model.add (Dense (64)) model.add (Activation ('relu')) model.add (ড্রপআউট (0.5))) model.add (ঘন (1)) মডেল "model_saved.h5") def predict (image_path): img = image.load_img (image_path, target_size = (1000, 500)) img = np.expand_dims (img, axis = 0) result = model.predict_classes (img) return result [0] [0]
এটি প্রধান পাইথন ফাইল, api.py:
আমদানি অনুরোধ, sys, এলোমেলো, urllib.parse, cv2
পিআইএল আমদানি ইমেজ থেকে, ImageFilter থেকে io আমদানি বাইটস আইও আমদানি numpy হিসাবে np আমদানি নেট def get_image_search (num, phrase): count = 0 img_arr = বাক্যে আর্গের জন্য: print (arg) print (f "current image count: {count } ") i = 0 params = {" q ": urllib.parse.quote (arg)," media_type ":" image "} results = request.get (" https://images-api.nasa.gov/search ", params = params) data = [result ['href'] for results.json () [" collection "] [" items "] print (len (data)) if num> len (data): num = len (তথ্য) গণনা করার সময়
ধাপ 7: ইলেকট্রন অ্যাপ
ওভারভিউ
আমরা একটি সাধারণ ইলেকট্রন অ্যাপ তৈরি করব যা শুধুমাত্র ফটোস্পিয়ার এলিমেন্টের অবস্থান এবং লোড করে। Main.js এবং package.json ফাইলগুলি সরাসরি ইলেক্ট্রন ওয়েবসাইট থেকে, এবং এইচটিএমএল হল ফটোস্পিয়ার ওয়েবসাইটে প্রদত্ত এইচটিএমএল -এর সামান্য পরিবর্তিত সংস্করণ। আমি ফাইলগুলি অন্তর্ভুক্ত করেছি, কিন্তু সবগুলিকে.txt এ নামকরণ করেছি, কারণ Instructables এই ফাইলের ধরনগুলিকে অনুমতি দেয় না। ফাইলগুলি ব্যবহার করতে, যথাযথ এক্সটেনশন দিয়ে তাদের নাম পরিবর্তন করুন।
কোড
main.js
const {app, BrowserWindow} = প্রয়োজন ('ইলেক্ট্রন')
ফাংশন createWindow () {const win = new BrowserWindow ({width: 800, height: 600, webPreferences: {nodeIntegration: true}}) win.loadFile ('index.html')} app.whenReady () তারপর (createWindow) app.on ('window-all-close', () => {if (process.platform! == 'darwin') {app.quit ()}}) app.on ('activate', () => {যদি (BrowserWindow.getAllWindows ()। length === 0) {createWindow ()}})
package.json
{
"name": "space", "version": "0.1.0", "main": "main.js", "scripts": {"start": "electron।" }}
index.html
ধাপ 8: কার্যকর করা
সমকোণী চিত্র তৈরি করা
চিত্রটি তৈরি করতে, কমান্ড প্রম্পটে api.py স্ক্রিপ্টটি চালান, তার ভার্চুয়াল পরিবেশ সক্রিয় করে:
api.py
স্ক্রিপ্টগুলি কার্যকর করা শেষ হওয়ার পরে, ইলেকট্রন অ্যাপ্লিকেশনটি ব্যবহার করুন:
npm শুরুভয়েলা! আপনার প্ল্যানেটারিয়াম সক্রিয়! পড়ার জন্য ধন্যবাদ:)
প্রস্তাবিত:
একটি কণা ইলেক্ট্রন ব্যবহার করে একটি শক্তি মনিটর ডিভাইস তৈরি করুন: 5 টি ধাপ (ছবি সহ)
একটি কণা ইলেকট্রন ব্যবহার করে একটি এনার্জি মনিটর ডিভাইস তৈরি করুন: বেশিরভাগ ব্যবসায়, আমরা এনার্জিকে একটি ব্যবসায়িক ব্যয় বলে মনে করি। বিলটি আমাদের মেইল বা ইমেইলে দেখা যায় এবং আমরা বাতিল তারিখের আগে তা পরিশোধ করি। আইওটি এবং স্মার্ট ডিভাইসের উত্থানের সাথে, শক্তি একটি ব্যবসার ক্ষেত্রে একটি নতুন স্থান নিতে শুরু করেছে
মুখ সনাক্তকরণ এবং সনাক্তকরণ - OpenCV পাইথন এবং Arduino ব্যবহার করে Arduino ফেস আইডি: 6 ধাপ
মুখ সনাক্তকরণ এবং সনাক্তকরণ | ওপেনসিভি পাইথন এবং আরডুইনো ব্যবহার করে আরডুইনো ফেস আইডি: মুখের স্বীকৃতি AKA ফেস আইডি আজকাল মোবাইল ফোনের অন্যতম গুরুত্বপূর্ণ বৈশিষ্ট্য। সুতরাং, আমার একটি প্রশ্ন ছিল " আমি কি আমার আরডুইনো প্রকল্পের জন্য একটি ফেস আইডি রাখতে পারি " এবং উত্তর হল হ্যাঁ … আমার যাত্রা নিম্নরূপ শুরু হয়েছিল: ধাপ 1: আমাদের প্রবেশাধিকার
রাস্পবেরি পাই এবং AIS328DQTR ব্যবহার করে পাইথন ব্যবহার করে ত্বরণ পর্যবেক্ষণ: 6 টি ধাপ
রাস্পবেরি পাই এবং AIS328DQTR ব্যবহার করে পাইথন ব্যবহার করে ত্বরণ পর্যবেক্ষণ করা: অ্যাক্সিলারেশন সীমিত, আমি মনে করি পদার্থবিজ্ঞানের কিছু আইন অনুসারে।- টেরি রিলি একটি চিতা তাড়া করার সময় আশ্চর্যজনক ত্বরণ এবং গতিতে দ্রুত পরিবর্তন ব্যবহার করে। দ্রুততম প্রাণীটি একবারে উপকূলে শিকারের জন্য তার সর্বোচ্চ গতি ব্যবহার করে। দ্য
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট 1/2: 16 টি ধাপ (ছবি সহ)
এটা কি হাত? (রাস্পবেরি পাই ক্যামেরা + নিউরাল নেটওয়ার্ক) পার্ট ১/২: কিছুদিন আগে আমি জিমে আমার ডান হাতের কব্জিতে আঘাত পেয়েছিলাম। পরে যতবার আমি আমার কম্পিউটার মাউস ব্যবহার করেছি, এটি খাড়া কব্জি কোণের কারণে অনেক ব্যথা করেছে। তখনই এটি আমাকে আঘাত করে " এটা ভালো হবে না যদি আমরা কোনো পৃষ্ঠকে একটি ট্র্যাকপে রূপান্তর করতে পারি
Arduino নিউরাল নেটওয়ার্ক রোবট: 21 ধাপ (ছবি সহ)
আরডুইনো নিউরাল নেটওয়ার্ক রোবট: এই নির্দেশনাটি একটি 3 অংশের সিরিজের উপর ভিত্তি করে তৈরি করা হয়েছে যা আমি মেক ইউটিউব চ্যানেলের জন্য তৈরি করেছি যা আপনাকে দেখায় ঠিক কিভাবে আপনার নিজের আরডুইনো নিউরাল নেটওয়ার্ক রোবট প্রোটোটাইপ, ডিজাইন, একত্রিতকরণ এবং প্রোগ্রাম করতে হয়। সম্পূর্ণ সিরিজ দেখার পরে, আপনার একটি বাজি থাকা উচিত