কিভাবে ইমেজ প্রসেসিং কোড ইউনিট করবেন?


14

আমি ইমেজ প্রসেসিংয়ে (মূলত ওসিআর) কাজ করছি এবং আমি কীভাবে আমার বিকাশে ইউনিট পরীক্ষা সংহত করতে হবে তা অবাক করি wonder

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

সম্পাদনা: একটি চরিত্র বিশ্লেষণ একাধিক ঘূর্ণন, স্কেলিং এবং রূপচিকিত্সার ক্রিয়াকলাপ জড়িত অনেক পদক্ষেপের মধ্য দিয়ে যেতে পারে। অ্যালগরিদম বিকাশ হওয়ার সাথে সাথে এই পদক্ষেপগুলি প্রায়শই পরিবর্তিত হয়। সুতরাং ইনপুট এবং প্রত্যাশিত আউটপুট পরীক্ষার সময় অনেকটা বিকশিত হতে পারে। প্রতিটি অক্ষর 100x100 পিক্সেল হতে পারে তাই কোডগুলিতে সেগুলিকে হার্ডকডিং করা বা উত্পন্ন ডেটা দিয়ে কাজ করা প্রশ্নবিদ্ধ।


আপনি কোনও ফাংশনটির উদাহরণ স্কেচ করতে পারেন যেখানে ইউনিট পরীক্ষা তৈরি করতে আপনার সমস্যা?
ডক ব্রাউন

1
সত্যিকারের উত্তরের জন্য খুব সংক্ষিপ্ত এবং সত্যই ইউনিট-টেস্টিং নয়: আমরা হ্যান্ড-প্রসেসিং ডেটা করছি (যেমন: উচ্চমাত্রার নমুনার মধ্য দিয়ে যেতে পারি - আমি সাধারণত এই জাতীয় শ্রেণিবদ্ধকরণের জন্য 1000 এর বাইরে চলে যাই তবে এটি আপনার সামগ্রিক নমুনার আকারের উপর নির্ভর করে ) এবং স্বয়ংক্রিয়ভাবে হ্যান্ড-প্রসেস করা ডেটার সাথে চূড়ান্ত ফলাফলের তুলনা করা। আমি এই কাজ করতে, এটি একটি কয়েক সপ্তাহের মধ্যে ওপেন সোর্স যাবেন একটি ছোট ফ্রেমওয়ার্ক সেট আপ করেছি, কিন্তু এই বিবরণ - আপনি প্রক্রিয়া ক্লোন পারে: birgitplays.wordpress.com/2012/09/15/...
Birgit পি

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

@মারটিয়ার্ট: আমি ঘূর্ণন, স্কেলিং ইত্যাদির পরীক্ষা নিচ্ছি না কারণ আমি এগুলি 3 য় গ্রন্থাগার থেকে কল করছি যা আমি বিশ্বাস করি যে এটি ভালভাবে পরীক্ষিত is ওসিআর অ্যালগরিদম এর মধ্যে অনেকগুলি অপারেশন সমন্বিত। তবে আপনি যেমন বলেছিলেন যে কোনও আউটপুট যেখানে বিকশিত হয়েছে সেখানে পরীক্ষা করা শক্ত। হতে পারে এটি একটি ভাল সতর্কতা যা আমাদের একীকরণ পরীক্ষার উপর নির্ভর করার বিকল্প নেই; ...
rold2007

@ বারগিট পি .: আকর্ষণীয় সমাধান। যেমন আপনি বলেছেন এটি এখনও ইন্টিগ্রেশন টেস্টিং। আপনার মতো কাঠামো তৈরি করা এই পরীক্ষাগুলি দ্রুত স্থাপনে সহায়তা করবে তবে তারা দ্রুত চালাবে না ...
rold2007

উত্তর:


12

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

আপনার ইউনিট পরীক্ষা প্রকল্পের ইনপুট / আউটপুট চিত্রগুলিকে সংস্থান হিসাবে সংরক্ষণ করুন। তারপরে ইউনিট পরীক্ষাটি যাচাই করুন যে কোনও নির্দিষ্ট ইনপুট দেওয়া হলে সেই নির্দিষ্ট আউটপুট উত্পাদিত হয়।

9-10 বার আপনি যখন কোডটি রিফেক্টর করেন এবং অন্যান্য কার্যকারিতা যুক্ত করেন, আপনি আপনার চিত্রের হ্যান্ডলিংয়ের রুটিনগুলি পরিবর্তিত না হওয়ার প্রত্যাশা করবেন, সুতরাং যদি হঠাৎ ইউনিটের সমস্ত পরীক্ষাগুলি ব্যর্থ হতে শুরু করে তবে সম্ভবত এটি একটি ত্রুটির কারণে।

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

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


সম্মত হন, আপনি যখন ফাইলগুলির সাথে কাজ করার রুটিনগুলি পরীক্ষা করছেন তখন আপনার পরীক্ষাগুলিতে কিছু কংক্রিট ফাইলের উপর নির্ভর করা ঠিক আছে (আপনি এটি আরও বেশি সংহতকরণ পরীক্ষার সাথে দেখতে পাচ্ছেন)।
কেওমদা

1
আপনি যদি পুরো প্রক্রিয়াকরণ শৃঙ্খলার মধ্য দিয়ে কিছু ইনপুট চালান এবং তারপরে আউটপুটটি পরীক্ষা করেন তবে আপনি ইউনিট-টেস্টিং নন তবে ইন্টিগ্রেশন-টেস্টিং।
tmadmers

@ টেডামার্স: আমি কখনও বলিনি যে এটি পুরো শৃঙ্খলা দিয়ে চালানো হোক। পুরো চেইন নয়, একটি "ইউনিট" এর মাধ্যমে কিছু ইনপুট চালান। এবং নিশ্চিত যে যদি এর ফলাফল আউটপুট ব্যতীত অন্য কিছু হয়ে থাকে তবে আপনার কেবলমাত্র ইনপুটটিকে চিত্রের সংস্থান হিসাবে সংরক্ষণ করতে হবে।
ডিএক্সএম

@ ডিএক্সএম: আমি আপনার সমাধানটি বুঝতে পারি তবে আমি মনে করি আমাদের মতো সীমাবদ্ধতা নাও থাকতে পারে। অ্যালগরিদম বিকাশকালে আমার ইনপুট / আউটপুট ডেটা অনেক পরিবর্তন করে। আপনি এই নিয়মিত পরিবর্তনগুলি কীভাবে মোকাবেলা করবেন? ওসিআর-তে আমার 99% এরও বেশি নির্ভুলতা থাকতে পারে তাই কেবলমাত্র বেশ কয়েকটি চিত্রের পরীক্ষা করা আমাকে সাফল্যের একটি ভ্রান্ত অনুভূতি দিতে পারে যখন ইন্টিগ্রেশন পরীক্ষাগুলি পরে আমাকে বলতে পারে যে আমি আসলে অ্যালগরিদমকে আরও খারাপ করেছি ...
rold2007
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.