কম্পিউটার ভিশন জন্য ভাল ভাষা?


28

আমি একটি বিষয়বস্তু ভিত্তিক চিত্র পুনরুদ্ধার সিস্টেমটি বাস্তবায়নের চেষ্টা করছি তবে তা করার আগে আমি এই কাজের জন্য উপযুক্ত কিছু প্রোগ্রামিং ভাষার একটি সংক্ষিপ্তসার পেতে চাই (ভাল পাছা এবং এ জাতীয়)।

কেউ কি এই জাতীয় কাজের জন্য কিছু ভাল ভাষা এবং লিবস জানেন? পাইথন বা জাভা সম্পর্কে কি?

সেরা


সুযোগটি একাডেমিক প্রকল্প ;-) তা না বলে দুঃখিত!

1
আমি একটি সফ্টওয়্যার স্টার্ট-আপের জন্য কম্পিউটার ভিশন গ্রুপে years 3 বছর ধরে কাজ করেছি। আমরা দ্রুত প্রোটোটাইপিং স্টাফগুলির জন্য পাইথন + স্কিপি / নম্পী এবং উত্পাদন কোডের জন্য সি ++ ব্যবহার করি। বুস্ট :: ভারী সি ++ এর জন্য পাইথন র‍্যাপারগুলি পোর্টিংয়ে সহায়তা করেছিল। ভারী সংখ্যাসূচক জিনিসগুলির জন্য BLAS এবং LAPACK ব্যবহৃত হয়।
wim

2
@ উইম - আপনি কেন এই ভাষাগুলিকে বিকাশের বিভিন্ন পর্যায়ে ব্যবহার করেছেন সে সম্পর্কে আপনার আরও কিছু মন্তব্য সহ আপনার মন্তব্যটি দুর্দান্ত উত্তর দিত।
মার্ক বুথ

1
আপনি মতলব বা ব্যবহার করতে পারেন অক্টেভ দ্রুত প্রোটোটাইপিং জন্য, এবং তারপর যেমন টুলকিট সাহায্যে সি রূপান্তর ++, আরমাডিলো এবং (রৈখিক বীজগণিত জন্য) MLPACK (মেশিন লার্নিং & প্যাটার্ন স্বীকৃতি জন্য)। আর্মাদিলো BLAS এবং LAPACK অভ্যন্তরীণভাবে ব্যবহার করেন (মতলব হিসাবে একই)। আপনি আরমাদিলোর ম্যাক্স ইন্টারফেসের মাধ্যমে সি ++ কোডের সাথে ম্যাটল্যাব / অক্টাভা কোডটি মিশ্রণ করতে পারেন।
mtall

উত্তর:


35

হতে পারে আপনি আপনার কাজের সুযোগ এবং স্কেল সম্পর্কে আরও নির্দিষ্ট হতে পারেন (একাডেমিক প্রকল্প? ডেস্কটপ বা মোবাইল বাণিজ্যিক পণ্য? ওয়েব ভিত্তিক বাণিজ্যিক প্রকল্প?)।

কিছু সুপারিশ এবং মন্তব্য:

  • মতলব একাডেমিক বিশ্বে প্রচলিত, এবং স্কেচিং / ধারণা যাচাইয়ের জন্য বেশ ভাল। অন্যান্য গবেষক (সিভি এবং মেশিন লার্নিং) থেকে আপনার কোডের একটি বিশাল সংখ্যক অ্যাক্সেস পাবেন; প্রোটোটাইপিং এবং ডিবাগিং খুব দ্রুত এবং সহজ হবে তবে আপনি এই পরিবেশে যা কিছু বিকাশ করেছেন তা উত্পাদন করা শক্ত হবে। আপনার কোডটি কী করছে তার উপর নির্ভর করে আপনার মেমোরি / পারফরম্যান্সের সমস্যা হতে পারে (এমন পরিস্থিতি রয়েছে যেখানে আপনি মাতলাবের আদিমদের দিক থেকে কী করতে চান তা বর্ণনা করতে পারবেন না এবং পিক্সেলগুলি লুপিং শুরু করতে হবে এবং মতলব এর ব্যাখ্যা করা ভাষা নয়) এই প্রসঙ্গে সহায়তা)। ডাটাবেস, ওয়েব সার্ভার ইত্যাদির সাথে ইন্টারঅ্যাকশনটি সহজ নয়, কখনও কখনও অসম্ভব (আপনি কোনও ওয়েব ফ্রন্ট-এন্ড দ্বারা ডাকা একটি থ্রিফ্ট সার্ভার হয়ে উঠতে মতলব প্রোগ্রাম পাবেন না)। ব্যয় $$$।

  • সি ++ হ'ল যা অনেকগুলি প্রোডাকশন-গ্রেড সিভি সিস্টেমের জন্য ব্যবহৃত হয় (গুগলের চিত্র অনুসন্ধান বা স্ট্রিটভিউ, বা অনেকগুলি বাণিজ্যিক রোবোটিক অ্যাপ্লিকেশনগুলির স্কেলে কিছু চিন্তা করুন)। ওপেনসিভি, দুর্দান্ত পারফরম্যান্সের মতো ভাল লাইব্রেরি, উত্পাদন পরিবেশে রাখা সহজ। আপনার যদি মেশিন লার্নিং করার দরকার হয় তবে সেখানে অনেকগুলি লাইব্রেরি রয়েছে (LibSVM / SVMlight, Torch)। যদি আপনাকে "সমস্ত পিক্সেলের লুপ" কোডটি অবলম্বন করতে হয় তবে এটি ভাল সম্পাদন করবে। বৃহত আকারের পুনরুদ্ধার সিস্টেমে প্রয়োজনীয় সিস্টেম / স্টোরেজ স্তরগুলির কোডিংয়ের জন্য ব্যবহার করা সহজ (উদাহরণস্বরূপ: চিত্রগুলিতে ইনভার্টড ইনডেক্স ম্যাপিং বৈশিষ্ট্য হ্যাশ সংরক্ষণ করার জন্য খুব বড় একটি ডিস্ক হ্যাশ মানচিত্র)। থ্রিফ্ট / মেসেজ প্যাকের মতো জিনিসগুলি আপনার পুনরুদ্ধার প্রোগ্রামটিকে একটি আরপিসি সার্ভারে পরিণত করতে পারে যা ওয়েব ফ্রন্ট-এন্ড দ্বারা ডাকা যেতে পারে। তবে: প্রোটোটাইপিংয়ের জন্য খুব চটজলদি নয়, নতুন ধারণাগুলি চেষ্টা করার জন্য বেশ ভয়ানক, ধীর বিকাশের সময়; এবং অনভিজ্ঞ কোডারদের হাতে রেখে পারফরম্যান্স এবং / অথবা অস্থিরতা সমস্যাগুলি ট্র্যাক করা কঠিন হতে পারে।

  • পাইথন হ'ল একরকম উভয়ের মাঝের মাঝামাঝি জায়গা। আপনি এটিকে মতলব স্টাইলের সংখ্যাসূচক কম্পিউটিংয়ের জন্য (নম্পি এবং স্কিপি সহ) ব্যবহার করতে পারেন + ওপেনসিভি এর মতো লাইব্রেরিতে বাইন্ডিং রয়েছে। আপনি এটির সাথে সিস্টেম / ডেটা স্ট্রাকচার স্টাফ করতে পারেন এবং গ্রহণযোগ্য পারফরম্যান্স পেতে পারেন। মতলব বা সি ++ এর চেয়ে কম হলেও সেখানে বেশ কয়েকটি মেশিন লার্নিং প্যাকেজ রয়েছে। যদি আপনি "সমস্ত পিক্সেলের লুপ" কোডটি অবলম্বন না করেন তবে আপনি সি ++ এর সাথে পারফরম্যান্সের 1: 1.5 থেকে 1: 3 অনুপাত এবং 2: 1 থেকে 10: 1 অনুপাতের সাহায্যে যা কিছু করতে পেরেছিলেন তা কোডিং করতে সক্ষম হবেন উত্স কোড আকারের (বিতর্কযোগ্য) তবে আপনার প্রকল্পের সাফল্যের উপর নির্ভর করে এমন একটি পয়েন্ট থাকবে যেখানে পারফরম্যান্স একটি সমস্যা হয়ে দাঁড়াবে এবং সি ++ এ পুনরায় লেখার সময় কোনও বিকল্প হবে না।


4
এছাড়াও ম্যাথল্যাব পাইথনের বিপরীতে ডকুমেন্টেশনে খুব শক্ত।
আন্দ্রে রুবস্টেইন

1
সি সম্পর্কে কি? সন্দেহ হলে আমার কাছে যাওয়া ভাষা language
জেটা সুরো

10

বিশেষত যেহেতু আপনার প্রকল্পটি একাডেমিক, তাই ম্যাথমেটিকা একটি খুব ভাল এবং উপযুক্ত সফ্টওয়্যার সিস্টেম। গণিত 8 ইমেজ প্রসেসিং, লিনিয়ার বীজগণিত, সংখ্যাসূচক, জিপিইউ ইত্যাদির জন্য একটি বিস্তৃত বৈশিষ্ট্য সহ আসে It গণিতিকা পাইথন, সি, সি ++, জাভা,। নেট, ..., কোডের সাথেও যোগাযোগ করতে পারে।


5

এটি যদি কোনও একাডেমিক প্রকল্প হয়, তবে আপনার অবশ্যই মাতলাব এবং আরও সুনির্দিষ্টভাবে ইমেজ প্রসেসিং সরঞ্জামবক্স এবং কম্পিউটার ভিশন সিস্টেম টুলবক্স ব্যবহার করা উচিত। এটি আপনার C ++ এর চেয়ে মতলব-এ আলগোরিদিমগুলির প্রোটোটাইপ এবং মূল্যায়ন করতে কম মাত্রার অর্ডার নেবে।

পাইথন ইন্টারফেসের সাথেও ওপেনসিভি মাতলাবের তুলনায় ব্যবহার করা অনেক বেশি শক্ত এবং যদি আপনার সত্যিই থাকে তবে আপনি ম্যাক্লাজের মাধ্যমে মাতলাব থেকে সি বা সি ++ কোড কল করতে পারেন।


4

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


3

কম্পিউটার দর্শনের জন্য সেরা ভাষা হ'ল সি ++। যদিও এর প্রধান অসুবিধাটি হ'ল আপনি যা চান তা অর্জন করা আরও কঠিন। ওপেনসিভি হ'ল কম্পিউটার দর্শনের জন্য সেরা গ্রন্থাগার তবে আপনি মাতলাব বা পাইথন ব্যবহার করে একই জিনিস করতে পারেন।

এখানে একবার দেখুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.