یکیاز سریعترین و موثرترین راهها برای ساخت برنامه image classifier این است که از اهرمی بهنام transfer learning استفادهکنیم تا اشیایی که موردنظر ما هستند را تشخیصبدهد. در این مقاله این رویکرد را با بهرهوری از Google’s Inception v3 image classifier دنبال میکنیم. توصیه میکنیم قبلاز مطالعه مقاله برای دید بهتر ابتدا “هوشمصنوعی با OPENCV” را مطالعه کنید. (ترجیحا اگر مطالب OpenCv سایت را بخوانید متوجه موضوع خواهید شد.)
مراحل پروژه:
راهاندازی و استفادهاز Tensor Flow Docker Container دانلود مجموعه اموزشی آموزشدادن تشخیص
گام اول
راهاندازی و استفادهاز Tensor Flow Docker Container:
ابتدا باید از طریق لینکی که در ادامه قرار میدهیم نرمافزار موردنظر را نصبکنید. برای دریافت نسخه ویندوز نرمافزار داکر باید از سایت رسمی آن دانلود کنید.(توجهکنید که تا log in نکنید نمیتونید چیزی دانلود کنید!) برای دانلود، دو نوع نرمافزار برای دانلود است که اگر حوصله سروکلهزدن با ارور و باگها را ندارید نسخه stable را پیشنهاد میکنیم و اگر بیشتر و حرفهایتر میخواهید در این زمنیه کار کنید توصیه میکنیم نسخه edge نرمافزار را نصبکنید.
پساز اینکه نرمافزار را نصبکردید برای اطمینان از نصب میتوانید از پنجره Power Shell یا Command Prompt ورژن نرمافزار را چککنید.
docker version
خب از این مرحله به بعد هر زمانی میخواهید با نرمافزار docker کار کنید اول باید نرمافزار رو باز کنید و مطمئنشوید که نرمافزار درحال اجرا است مانند تصویر زیر.
و با اجرای این دستور:
docker run hello-world
میتوانید مطمئنشوید که داکر میتواند ایمیج ها را دریافت و درنتیجه اجرا کند. این دستور ایمیج تنسورفلو موردنظر را دانلود میکند و یک container را در پسزمینه اجرا میکند. وقتی container درحال اجرا است میتوانیم به نرمافزار متصل شویم(log in کنیم) و توسعه و کارهای موردنظر را در container انجام بدهیم.
docker run -it -d macgyvertechnology/tensorflow
حال میتوانیم ایمیجهایی را که داریم توسط دستور زیر چک کنیم.
Docker images
گام دوم
دانلود مجموعه آموزشی:
میتوانید از extentionهای مرورگرها استفادهکنید بهطورمثال برای گوگل کروم میتوانید از اینجا کلیککنید.
و همچنین برای فایرفاکس میتوانید اینجا کلیک کنید.
از دیتایی که دانلود کردیم حدود ۹۰درصد را برای آموزش و ۱۰درصد را برای تست و تشخیص جدا میکنیم. مجموعه آموزشی را به مسیری بهنام trainingimages انتقال میدهیم.
/training_images /dog image1.jpg image2.jpg ... /cat image1.jpg image2.jpg
یا هر دو نوع کلاس دیگری که مایل هستید، اسم آنرا بگذارید بهطورمثال در این آموزش دو نوع سگ و هم دیتای تست(منظور گربه است که جهت تست استفادهکردهایم) را انتخابکردهایم.
دیتا تست:
برای دریافت ID container از دستور زیر استفاده میکنیم.
docker ps -a
حال فایل /training_images را درون docker container که درحالاجرا است کپی میکنیم. (برای اینکار باید اول به دایرکتوری دیتایی که دانلود کردیم برویم)
docker cp training_images/ _container_id_:/
داده های تست هم همینطور بهصورتزیر است:
docker cp test_images / _container_id_:/
و درنهایت به container وارد میشویم:
docker exec -it _container_id_ bash
(دقتکنید که ازاینجا به بعد وارد محیط لینوکس شدیم میدونم پیچیده شده کاملا هم قبوله ولی شیرینه البته برای اهل دلش) حال دایرکتوری روت را چک میکنیم:
Cd / ls
درنهایت لیست باید شامل نوشته زیر باشد که باشد(اگر موفق به دیدن خط زیر شدین واقعا باید به خودتون تبریک بگین)
Training_images test_images tensorflow
گام سوم
آموزش شبکه عصبی:
دستور زیر retrain.py را اجرا و آموزش را شروع میکند.
python tensorflow/tensorflow/examples/image_retraining/retrain.py \ --bottleneck_dir=/bottlenecks \ --model_dir=/inception \ --output_labels=/retrained_labels.txt \ --output_graph=/retrained_graph.pb \ --image_dir=/training_images/
(دقتکنید که خطوط بالا یک دستور است نه چند دستور) خروجی شما باید و حتما شبیه عکس زیر باشد.
این مرحله نسبت به مراحل قبلی مقداری طول میکشد پس لطفا صبور باشید.
گام چهارم
تشخیص:
حالا میتوانیم ماژول آموزشدادهشده را اجراکنیم و ببینیم عملکرد آن برای دیتایی که برای تست قرار داده بودیم چیست؟
python tensorflow/tensorflow/examples/image_retraining/label_image.py \ --graph=/retrained_graph.pb \ --labels=/retrained_labels.txt \ --image=/test_images/german-shepherd/german-shepherd-toy.jpeg german-shepherd-toy.jpeg عکسی از داده های تست که میخواهیم ماژول را با آن تست کنیم. دقت کنید که نگفتیم هر عکسی لطفا به انتخاب این عکسها با دقت عمل کنید.
خروجی آخر هم باید مانند تصویری که در ادامه قرار میدهیم باشد.
python tensorflow/tensorflow/examples/image_retraining/label_image.py \ --graph=/retrained_graph.pb \ --labels=/retrained_labels.txt \ --image=/test_images/dalmation/dalmation-toy.jpeg
دو خط آخر در هردو مثال درصد تخمین هرکلاس رو بیان میکند.
امیدواریم که این آموزش هم موردتوجه شما مخاطبین عزیز مفید واقعشدهباشد.
منبع:سیسوگ