طبقه بندی ماهی چند کلاسه در تصاویر با استفاده از آموزش انتقال و کراس

طبقه بندی ماهی چند کلاسه در تصاویر با استفاده از آموزش انتقال و کراس

چگونه از یادگیری ماشینی با ماهی استفاده می کنید؟

نکته:

مرحله 1: ماهی ها را در یک قایق ماهیگیری صید کنید. مرحله 2 : هنگام حضور در آن فیلم تهیه کنید مرحله 3: آن فیلم ها را به تصاویر فوری تبدیل کنید. مرحله 4: در آخر ، از کاگلرها بخواهید کلاس ماهی را با یادگیری عمیق پیش بینی کنند.

و این خلاصه ای از پروژه سنگفرش نانو درجه ماشین یادگیری ماشین Udacity است.

کد: پیوند به Github Repo.

نمای کلی

< p> تقریباً 50٪ از جهان برای منبع اصلی پروتئین خود به غذاهای دریایی وابسته هستند. و بیشترین عرضه ماهی با درجه بالا در جهان از منطقه غربی و اقیانوس آرام حاصل می شود که حدود 7 میلیارد دلار بازار را در اختیار دارد. با این حال ، ماهیگیری غیرقانونی همچنان تهدیدی برای اکوسیستم دریایی در این مناطق است زیرا ماهیگیران اغلب به صید بی رویه و صید گونه های حفاظت شده برای گردشگری در اعماق دریا مانند کوسه و لاک پشت می پردازند.

بر اساس گزارش Fortune در مورد استفاده فعلی از هوش مصنوعی در صنعت ماهیگیری ، شرکت های بزرگ ماهیگیری مانند ماهیگیری Luen Thai گزارش می دهند که متصدیان ماهیگیری در منطقه اقیانوس آرام به طور معمول یک مشاهده گر فیزیکی را برای همراهی ماهیگیران 10 بار از 200 بار در سال می فرستند ، با این حال ، به دلیل وجود آن ، این کافی نیست هیچ کس برای کنترل آنچه در 190 سفر دیگر به ازای هر قایق در حال انجام است ، نظارت نمی کند.

برای مقابله با مشکل نظارت صحیح ، یک سازمان غیرانتفاعی جهانی که با مشکلات زیست محیطی مبارزه می کند تصمیم گرفته است با نصب راه حل فناوری ایجاد کند دستگاه های نظارت الکترونیکی مانند دوربین ، حسگرها و دستگاه های GPS برای ضبط کردن تمام فعالیت های موجود در هواپیما برای بررسی اینکه آیا آنها کار غیرقانونی انجام می دهند.

با این حال ، حتی اگر دسترسی به ساعتهای فیلم خام نیز مفید باشد ، طبق نظر TNC ، برای یک سفر طولانی 10 ساعته ، بررسی این فیلم به صورت دستی 6 ساعت برای بازبین ها طول می کشد. علاوه بر شرایط پر سر و صدا در یک قایق ماهیگیری ، شرایط آب و هوایی نامناسب مانند نور ناکافی ، برخورد قطرات باران به لنزهای دوربین و افرادی که مانع دیدن ماهی ها می شوند ، اغلب به انتخاب خود ، این کار را برای بازرسان انسان دشوارتر می کند.

< p> برای اتوماسیون این فرایند ، TNC با کاگل همکاری کرد تا از پزشکان یادگیری ماشین بخواهد سیستمی بسازند که به طور خودکار ماهی ها را از داده های فیلم فیلم با یک جایزه 150،000 دلاری شناسایی و طبقه بندی کند تا هزینه های آموزش شبکه عصبی عمیق پیوندی را جبران کند. مسابقه نظارت بر شیلات حفاظت از طبیعت توجه شرکت کنندگان را جلب کرده و در نشریاتی مانند Engadget ، Guardian و Fortune به نمایش در آمده است.

هدف از این پروژه سنگفرش ساخت یک شبکه عصبی کانولوشن است که طبقه بندی های مختلف گونه های ماهی در حالی که تحت محدودیت های محاسبه به خوبی کار می کنند.

1.2. بیانیه مشکل

مجموعه داده های ماهی با شناسایی اشیا in موجود در تصویر مانند ماهی تن ، اوپا ، کوسه ، لاک پشت ، قایق های بدون ماهی روی عرشه و قایق هایی با ماهی های دیگر و طعمه های کوچک توسط TNC برچسب گذاری شد.

هدف پیش بینی احتمال وجود ماهی از یک کلاس خاص از کلاسهای ارائه شده است ، بنابراین از نظر یادگیری ماشین ، آن را به یک مشکل طبقه بندی چند طبقه تبدیل می کند.

هشت کلاس هدف ارائه شده است در این مجموعه داده: ماهی تن آلباکور ، تن بیگیه ، تن زرد ، ماهی ماهی ، اوپا ، کوسه ، سایر (به این معنی که ماهی در آن وجود دارد اما در گروه های فوق نیست) و ماهی بدون ماهی (به این معنی که ماهی در تصویر نیست).

هدف آموزش CNN است که بتواند ماهی ها را در این هشت کلاس طبقه بندی کند.

تکنیک های مبتنی بر یادگیری عمیق (CNN) در چند سال اخیر بسیار محبوب بوده است ، جایی که آنها به طور مداوم عملکرد بیشتری داشتند. رویکردهای سنتی برای استخراج ویژگی ها تا جایی که برنده چالش های imagenet هستند. در این پروژه ، از آموزش انتقال همراه با افزایش داده برای آموزش یک شبکه عصبی کانولوشن برای طبقه بندی تصاویر ماهیها به کلاسهای مربوطه استفاده خواهد شد.

آموزش انتقال به روند استفاده از وزنه های آموزش دیده اشاره دارد شبکه ها روی مجموعه داده های بزرگ از آنجا که شبکه های آموزش دیده قبلاً یاد گرفته اند که چگونه ویژگی های سطح پایین مانند لبه ها ، خطوط ، منحنی ها و غیره را با لایه های کانولوشن که اغلب از نظر محاسباتی بیشترین زمان برای فرآیند است شناسایی کنند ، استفاده از این وزن ها به شبکه کمک می کند تا به یک نمره خوب سریعتر از آموزش از ابتدا است. شرکت کنندگان در چالش های مشابه طبقه بندی تصویر در کاگل مانند رتینوپاتی دیابتی ، تشخیص نهنگ راست (که همچنین یک مجموعه داده دریایی است) نیز با موفقیت از یادگیری انتقال استفاده کرده اند.

برای آموزش موفقیت آمیز یک مدل CNN ، مجموعه داده نیاز دارد بزرگ بودن (که در اینجا مسلماً چنین نیست ، مجموعه داده ارائه شده از Kaggle بسیار کوچک است ، فقط 3777 تصویر برای آموزش) و ماشین آلات با قدرت محاسباتی بالاتر ، ترجیحا با GPU مورد نیاز است ، که در این قسمت به آنها دسترسی ندارم نقطه. خوشبختانه بسیاری از شبکه های این چنینی مانند RESNET ، Inception-V3 ، VGG-16 در چالش imagenet آموزش دیده برای استفاده عمومی در دسترس است و من از یکی از آنها VGG-16 استفاده می کنم که توسط گروه هندسه دیداری Oxford برای این مسابقه ایجاد شده است. نسخه دیگری از VGG وجود دارد ، یعنی VGG-19 با دقت بسیار مشابه ، با این حال استفاده از آن از نظر محاسباتی گران تر است بنابراین من از آن استفاده نمی کنم.

1.3. معیارها

معیار مورد استفاده برای این مسابقه کاگل ، از دست دادن لگاریتمی چند طبقه است (همچنین به عنوان آنتروپی مقطعی طبقه بندی شناخته می شود)

در اینجا هر تصویر با یک کلاس واقعی برچسب گذاری شده است و برای هر تصویر باید مجموعه ای از احتمالات پیش بینی شده ارسال شود.

N تعداد تصاویر موجود در مجموعه آزمون ، M تعداد برچسب های کلاس تصویر ، log لگاریتم طبیعی است ، Yij در صورت مشاهده به کلاس 1 و در غیر این صورت 0 و P (Yij) احتمال پیش بینی شده مربوط به مشاهده است به کلاس . احتمالات ارسالی برای یک تصویر داده شده لازم نیست که یک به یک جمع شوند زیرا قبل از امتیازدهی مجدداً مقیاس بندی می شوند (هر سطر به مجموع سطر تقسیم می شود). یک طبقه بندی کننده کامل از دست دادن ورود به سیستم 0. خواهد داشت.

ورود به سیستم چند کلاسه طبقه بندی کننده هایی را که از پیش بینی نادرست اطمینان دارند مجازات می کند. در معادله فوق ، اگر برچسب کلاس 1 باشد (نمونه مربوط به آن کلاس است) و احتمال پیش بینی شده نزدیک به 1 باشد (پیش بینی های طبقه بندی صحیح است) ، پس از آن از دست دادن واقعاً کم است زیرا log (x) → 0 x x 1 ، بنابراین این نمونه مقدار کمی ضرر دارداز دست دادن کل و اگر این امر برای هر نمونه اتفاق بیفتد (طبقه بندی کننده دقیق است) ، کل ضرر نیز به 0 نزدیک خواهد شد.

از طرف دیگر ، اگر برچسب کلاس 1 باشد (نمونه از آن است کلاس) و احتمال پیش بینی شده نزدیک به 0 است (طبقه بندی کننده از اشتباه خود اطمینان دارد) ، چون log (0) تعریف نشده است به آن نزدیک می شود ... بنابراین از نظر تئوری ضرر می تواند به بی نهایت نزدیک شود. به منظور جلوگیری از شدت عملکرد log ، احتمالات پیش بینی شده با حداکثر (دقیقه (p ، 1−10 ^ 15) ، 10 ^ 15) جایگزین می شوند.

به صورت گرافیکی [¹] ، با فرض مثال دوم متعلق به کلاس j و Yij = 1 است ، نشان داده شده است که وقتی احتمال پیش بینی شده به 0 نزدیک می شود ، ضرر می تواند بسیار زیاد باشد.

II. تجزیه و تحلیل

برای ایجاد مجموعه داده ، TNC چندین ساعت فیلم قایقرانی را جمع آوری کرد و سپس فیلم را به 5000 تصویر تقسیم کرد که شامل عکس های ماهی گرفته شده از زوایای مختلف است. با شناسایی اشیا in موجود در تصویر مانند ماهی تن برچسب گذاری شد ، کوسه ، لاک پشت ، قایق های بدون ماهی روی عرشه و قایق هایی با ماهی های طعمه ای کوچک دیگر.

این مجموعه داده شامل 8 کلاس مختلف ماهی است که از فیلم خام از دوازده قایق ماهیگیری مختلف در شرایط مختلف نور و فعالیت های مختلف ، با این وجود داده های مربوط به زندگی واقعی است ، بنابراین هر سیستم برای طبقه بندی ماهی باید قادر به مدیریت این نوع فیلم ها باشد. مجموعه آموزش شامل حدود 3777 تصویر دارای برچسب است و مجموعه آزمایش دارای 1000 تصویر است. تصاویر با ابعاد ثابت تضمین نمی شوند و عکس های ماهی از زوایای مختلف گرفته می شوند. تصاویر حاوی هیچ حاشیه ای نیستند.

هر تصویر فقط یک دسته ماهی دارد ، با این تفاوت که بعضی اوقات در تصاویر ماهی های بسیار کوچکی وجود دارد که از آنها به عنوان طعمه استفاده می شود. حفاظت از طبیعت همچنین با مهربانی تجسم برچسب ها را ارائه داده است ، زیرا تصاویر خام می تواند باعث تحریک بسیاری از افراد شود.

از آنجا که ورودی فقط تصاویر خام است (آرایه های 3 بعدی با ارتفاع x عرض x کانال برای رایانه ها) ، مهم است که برای طبقه بندی آنها در برچسب های ارائه شده ، پیش پردازش شود. با این وجود جزئیات دقیق پیش پردازش به انتخاب معماری ما برای استفاده از یادگیری انتقال بستگی دارد. هیستوگرام های رنگی به عنوان ویژگی از این تصاویر خام استخراج شده اند. کانال های رنگی در طبقه بندی تصویر می توان از هیستوگرام ها به عنوان بردار ویژگی استفاده کرد با این فرض که تصاویر مشابه توزیع رنگی مشابهی دارند.

در اینجا ما هیستوگرام های هر تصویر را در مجموعه آموزش محاسبه می کنیم و نتیجه را برای مشابه ترین ها می یابیم. تصویر از هیستوگرام ها با معیار فاصله اقلیدسی.

نتایج یک تصویر نمونه تصادفی انتخاب شده در زیر آورده شده است:

واضح است که تصاویر در برچسب ها مشابه هستند ، اما به نظر می رسد مشابه نیستند. اما هیستوگرام آنها کاملاً مشابه است.

توجه داشته باشید که مدل معیار با نزدیکترین همسایگان k همچنین با نمودارهای رنگی به عنوان ویژگی آموزش داده می شود. با این وجود هیستوگرام ها ، شکل ، بافت و اطلاعات مکانی موجود در تصاویر را کاملاً نادیده می گیرند و نسبت به نویز بسیار حساس هستند ، بنابراین نمی توان از آنها برای آموزش یک مدل پیشرفته استفاده کرد.

2.3. الگوریتم ها و تکنیک ها

آموزش انتقال:

یادگیری انتقال اشاره داردبه فرآیند استفاده از وزنه ها ، یک شبکه آموزش دیده آموزش دیده روی یک مجموعه داده بزرگ که روی مجموعه داده دیگری اعمال می شود (یا به عنوان استخراج کننده ویژگی یا با راه اندازی مجدد شبکه). Finetuning به روند آموزش چند لایه یا چند لایه آخر شبکه آموزش دیده روی مجموعه داده جدید برای تنظیم وزن گفته می شود. یادگیری انتقال در عمل بسیار رایج است زیرا جمع آوری داده ها اغلب هزینه بر است و آموزش یک شبکه بزرگ از نظر محاسباتی گران است. در اینجا وزن های یک شبکه عصبی کانولوشن پیش آموزش داده شده روی مجموعه داده های imagenet برای طبقه بندی ماهی ها قابل اجرا است.

روش معیار:

نزدیکترین طبقه بندی K: طبقه بندی کننده نزدیکترین K برای "همسایگان" مشابه جستجو می کند از یک نمونه (مشابه براساس معیار فاصله مشخص) و برچسب را بر اساس آرای اکثریت پیش بینی می کند. K-نزدیکترین به سادگی برای ایجاد یک معیار بر اساس هیستوگرام رنگی تصاویر به عنوان ویژگی استفاده می شود.

معماری VGG (16):

برنده مسابقه ImageNet ILSVRC-2014 ، VGGNet توسط گروه هندسه تجسمی آکسفورد اختراع شده است ، معماری VGG کاملاً از لایه های کانولوشن 3 و 3 و حداکثر مخلوط سازی تشکیل شده است که در انتها یک بلوک کاملاً متصل است. مدل آموزش دیده در Caffe ، Torch ، Keras ، Tensorflow و بسیاری دیگر از کتابخانه های محبوب DL برای استفاده عمومی در دسترس است.

لایه ها:

Convolution: لایه های کانولوشن برای شناسایی لبه ها دور تصویر جمع می شوند ، خطوط ، لکه های رنگ و سایر عناصر بصری. ابر پارامترهای لایه های کانولوشن تعداد فیلترها ، اندازه فیلتر ، گام ، پد و توابع فعال سازی برای معرفی غیرخطی بودن است. MaxPooling: لایه های جمع کننده با حذف برخی از پیکسل ها از تصویر ، ابعاد تصاویر را کاهش می دهد . Maxpooling یک ناحیه n x از یک تصویر را با حداکثر مقدار پیکسل از آن ناحیه برای نمونه برداری از تصویر جایگزین می کند. Dropout: Dropout یک روش ساده و م effectiveثر برای جلوگیری از مجهز شدن شبکه عصبی در حین آموزش است. ترک تحصیل فقط با فعال نگه داشتن یک نورون با احتمال p و تنظیم آن در غیر اینصورت 0 اجرا می شود. این شبکه را وادار می کند تا اطلاعات زائد را بیاموزد. Flatten: خروجی لایه های کانولوشن را برای تغذیه در لایه های متراکم مسطح می کند. متراکم: لایه های متراکم شبکه های سنتی کاملاً متصل هستند. که با برخی از عملکردهای فعال سازی ، نمرات لایه های کانولوشن را به برچسب های صحیح ترسیم می کند (از softmax در اینجا استفاده می شود)

توابع فعال سازی:

لایه های فعال سازی یک عملیات غیر خطی را برای خروجی اعمال می کنند سایر لایه ها مانند لایه های کانولوشن یا لایه های متراکم.

فعال سازی ReLu: واحد خطی ReLu یا اصلاح شده عملکرد $ f (x) = max (0، x) را محاسبه می کند تا آستانه فعال سازی در 0 باشد. Softmax فعال سازی: تابع Softmax برای تبدیل امتیازات به احتمالات جمع شده به 1 به لایه خروجی اعمال می شود.

بهینه سازها:

آدم: آدم (برآورد لحظه تطبیقی) ) یک به روزرسانی برای بهینه ساز RMSProp است که در آن از میانگین دو شیب و اندازه آنها استفاده می شود. در عمل ، آدام در حال حاضر دوباره شروع می شود به عنوان الگوریتم پیش فرض برای استفاده به پایان رسید و اغلب کمی بهتر از RMSProp کار می کند. در آزمایش های من ، آدام همچنین دارای دقت بالایی عمومی است در حالی که آدلتا خیلی سریع یاد می گیرد. من از آدام در همه آزمایشات استفاده کرده ام زیرا احساس کردم داشتن بهینه ساز مشابه می تواند مبنای بهتری برای مقایسه آزمایشات باشد.

افزایش داده: افزایش داده ها یک روش قاعده گذاری است که در آن ما تصاویر بیشتری را از داده های آموزشی تهیه می کنیم که با jitter تصادفی ، برش ، چرخش ، بازتاب ، مقیاس گذاری و غیره برای تغییر پیکسل در حالی که برچسب ها دست نخورده است ، ارائه می شود. CNN به طور کلی با داشتن داده های بیشتر عملکرد بهتری دارد زیرا مانع از نصب بیش از حد می شود.

نرمال سازی دسته ای: نرمال سازی دسته ای یک تکنیک است که اخیراً توسط Ioffe و Szegedy ساخته شده است و سعی می کند شبکه های عصبی را با مجبور کردن صریح فعالانه ها در سراسر شبکه به درستی تنظیم کند. در ابتدای آموزش توزیع واحد گوسی را بدست آورید. در عمل ما لایه های Batchnorm را درست بعد از لایه های متراکم یا کانولوشن قرار می دهیم. شبکه هایی که از نرمال سازی دسته ای استفاده می کنند نسبت به مقداردهی اولیه بد به طور قابل توجهی قوی تر هستند. از آنجا که نرمال سازی توانایی تعداد کمی از ورودی های خارج از کشور را برای تأثیر بیش از حد بر آموزش بسیار کاهش می دهد ، همچنین تمایل به کاهش تجهیزات اضافی دارد. بعلاوه ، نرمال سازی دسته ای را می توان به عنوان انجام پیش پردازش در هر لایه از شبکه تفسیر کرد ، اما در خود شبکه یکپارچه است.

2.4. معیار

انتخاب تصادفی: ما احتمال یکسانی را برای ماهی متعلق به هر کلاس از هشت کلاس برای معیار ساده لوح پیش بینی می کنیم. این ارسال 2.41669 از دست دادن ورود به سیستم در صفحه جدول Kaggle است.

طبقه بندی نزدیکترین همسایه K: یک مدل K-Nearest همسایه بر روی هیستوگرام رنگی تصاویر با فاصله اقلیدسی به عنوان متریک فاصله آموزش داده شد. این باعث کاهش 1.65074 ورود به سیستم در تابلوی امتیازات می شود.

یک شبکه عصبی کانولوشن کاملاً طراحی شده باید بتواند مدل پایه انتخاب تصادفی را به راحتی در نظر بگیرد ، حتی اگر مدل KNN به وضوح از معیار اولیه پیشی بگیرد. با این حال ، به دلیل هزینه های محاسباتی ، ممکن است امکان اجرای مدل یادگیری انتقال با معماری VGG-16 برای تعداد کافی دوره وجود نداشته باشد تا بتواند همگرایی داشته باشد.

بنابراین نمره مناسب برای ضرب و شتم معیار KNN چیزی کمتر از 1.65074 است حتی اگر اختلاف زیاد نباشد با توجه به اینکه شبکه عصبی طولانی تر کار می کند باعث کاهش ضرر خواهد شد.

III. روش

3.1 پیش پردازش

همانطور که در استفاده از VGG16NET مانند معماری برای یادگیری انتقال ، تصاویر پیش پردازش می شوند همانطور که در مقاله اصلی VGGNet انجام می شود. سازندگان VGGNet اصلی ابتدا میانگین هر کانال (R ، G ، B) را کم می کنند بنابراین داده های مربوط به هر کانال میانگین 0. بود.

علاوه بر این ، نرم افزار پردازش آنها انتظار داشت ورودی در (B ، G ، R) ترتیب دهید در حالیکه پایتون به طور پیش فرض انتظار دارد (R ، G ، B) ، بنابراین تصاویر باید از RGB -> BGR تبدیل شوند. در این مجموعه داده تصاویر ورودی نیز در اندازه ها و رزولوشن های مختلف ارائه می شوند ، بنابراین اندازه آنها به 150 150 150 3 3 تغییر یافت تا اندازه آنها کاهش یابد. داده داده شده توسط کاگل هیچ مجموعه اعتبارسنجی ندارد ، بنابراین به یک مجموعه آموزش و یک مجموعه اعتبار سنجی تقسیم می شود برای ارزیابی.

از 3777 تصویر ، 3019 تصویر در مجموعه آموزش و بقیه (0.8٪ از همه کلاس ها) در مجموعه اعتبار سنجی است. توجه داشته باشید که به جای استفاده از روش train_test_split در scikit-learn ، من به طور تصادفی 0.8٪ از هر کلاس را از مجموعه آموزش به مجموعه اعتبار سنجی با حفظ ساختار فهرست بردم. توزیع کلاسها را بصورت تصویری در زیر حفظ می کند.

Keras ImageDataGenerators از شاخه ها /آرایه های numpy به صورت دسته ای داده های آموزشی تولید می کند و آنها را با برچسب های خود پردازش می کند.داده های آموزش نیز در حین آموزش مدل تغییر داده شد ، در حالی که از داده های اعتبار سنجی برای بدست آوردن صحت اعتبار سنجی و افت اعتبار در حین آموزش استفاده شد.

3.2. اجرا

در ابتدا خط مقدماتی با انتخاب تصادفی و نزدیکترین همسایگان K برای مقایسه اجرا شد. پس از آن تصاویر به یک مجموعه آموزش و یک مجموعه اعتبار سنجی تقسیم شدند. عملیات پیش پردازش مانند کم کردن میانگین هر یک از کانال ها همانطور که قبلاً ذکر شد انجام شد و از معماری VGG-16 بدون آخرین لایه های کاملاً متصل برای استخراج ویژگی های کانولوشن از تصاویر پیش پردازش شده استفاده شد. نمودار معماری VGG16 بدون لایه کاملاً متصل در زیر آورده شده است.

در مورد ویژگی های استخراج شده (کدهای CNN) ابتدا یک مدل کاملاً متصل به کار گرفته شد اما متأسفانه نتیجه خوبی نداشت. پس از آن ، من سطح تخلیه و عادی سازی دسته ای را به لایه کاملاً متصل اعمال کردم که نزدیکترین معیار K را تا 17.50 شکست. در اینجا نمودار لایه متراکم همراه با ترک تحصیل و نرمال سازی دسته ای فعال شده است.

من در این پیشنهاد اشاره کردم که می خواهم یک مدل ماشین بردار پشتیبان را در ویژگی های استخراج شده CNN امتحان کنم ، اما بعداً به نظر می رسید که مدل های ضعیف تر و از آنجا که هدف پروژه ایجاد مدل یادگیری انتقال است ، بهتر است بیشتر روی آن تمرکز کنید. به همین دلیل است که قبل از استخراج ویژگی های کانولوشن برای یادگیری انتقال ، من یک مدل اساسی CNN ایجاد کردم تا پارامترها را آزمایش کنم.

3.3 اصلاح

برای جلوگیری از خودسرانه ، عادی سازی دسته ای را در مدل اعمال کردم با عادی سازی دسته ای لایه های میانی ، وزن زیادی در لایه های میانی ایجاد می کند ، بنابراین به همگرایی خوب کمک می کند. حتی در مدل با عادی سازی دسته ای که در برخی دوره ها فعال شده است ، دقت آموزش بسیار بالاتر از صحت اعتبار بود ، که تقریباً 100٪ دقیق است. از آنجا که مجموعه داده ها کوچک است (فقط 3777 تصویر آموزشی) ، مطمئناً منطقی است که مدل ما الگوها را حفظ می کند. برای غلبه بر این مشکل ، از داده ها استفاده شد. افزودن داده با استفاده از چرخش های تصادفی ، برش ، ورق زدن ، جابجایی ، برش و غیره دسته های آموزشی ما را تغییر می دهد.

در مجموعه داده خاص ، برداشت تصادفی معنی ندارد زیرا ماهی در مقایسه با کل عکس کوچک است و برش دادن عکس ها ممکن است شرایطی را ایجاد کند که مدل شروع به استنباط بیشتر عکس به عنوان کلاس "بدون ماهی" کند زیرا ماهی در هنگام افزایش داده ها از بین رفته است. ورق زدن عمودی نیز منطقی نیست زیرا دوربین در یک موقعیت ثابت قرار دارد و شرکت ها نمی توانند عکس های قایق ها را از بالا به پایین ثبت کنند. من چرخش تصادفی را اضافه کرده ام زیرا ممکن است دوربین از یک گوشه به گوشه دیگر حرکت کند تا یک منطقه وسیع را پوشش دهد. من هم چنین ورق زدن افقی و جابجایی تصادفی را به بالا و پایین و در کنار هم اضافه کرده ام زیرا احتمالاً همه این سناریوها وجود دارد.

متأسفانه به اندازه کافی مدل با افزایش داده از نظر محاسباتی گران است و در هر دوره حدود 1 ساعت طول می کشد دستگاه من ، بنابراین من این مدل را فقط برای 5 دوره آموزش داده ام (همانطور که یادگیری ترانسی است ما قبلاً دارای وزنه های از قبل آموزش دیده ایم) و صحت اعتبار نهایی 85٪ است. افت تابلوی امتیازات برای این مدل 1.19736 است که 12.02 درصد کاهش افت ورود به سیستم را نشان می دهد. اگر منمی تواند مدل افزوده داده را برای چند دوره دیگر آموزش دهد و احتمالاً نتایج بهتری هم خواهد داد.

IV. نتایج

برای هر آزمایش فقط بهترین مدل همراه با وزن آنها ذخیره شد (یک مدل فقط در هر دوره ذخیره می شود اگر دقت اعتبار بیشتری نسبت به دوره قبل نشان دهد)

برای یادآوری ، بهترین مدل تاکنون از تکنیک یادگیری انتقال همراه با افزایش داده ها و عادی سازی دسته ای برای جلوگیری از نصب بیش از حد استفاده می کند. برای استفاده از یادگیری انتقال ، من وزنه های پیش ساخته ای را برای معماری VGG-16 جمع آوری کرده ام که توسط گروه هندسی بصری آکسفورد ایجاد شده است (از این رو نام VGG) و از معماری مشابه فقط با جایگزینی لایه های کاملاً متصل شده با افت متفاوت و عادی سازی دسته ای استفاده کردم. به دلیل کمبود منابع محاسباتی مجبور شدم از ترک تحصیلات تهاجمی در مدلهایم استفاده کنم ، در غیر این صورت مدلها تمایل داشتند دستگاه من را هنگام کار خراب کنند.

من همه تصاویر را طبق دستورالعمل های معماری VGG16 از پیش پردازش کرده ام. برای مدل نهایی من از مدل پایه VGG16 به استثنای لایه های کاملاً متصل به همراه وزنه های پیش ساخته استفاده کردم ، یک لایه Dense جدید با ترک تحصیل و عادی سازی دسته ای در بالای آن برای پیش بینی تصاویر نهایی اضافه کردم. این مدل نزدیکترین معیار را با 46/27 درصد کاهش و مدل انتخابی تصادفی را با 50/45 درصد کاهش افت ورود به سیستم چند طبقه را شکست می دهد. جدولی با تمام آزمایشات انجام شده به همراه نتایج آنها در زیر آورده شده است.

< /img>

مدل کاملاً متصل من بر روی ویژگیهای CNN فقط 3.10 امتیاز کسب کرد ، حتی اگر ساختاری مشابه مدل کاملاً متصل VGG-16 اصلی داشته باشد مگر با افت بیشتر. (فکر می کنم به این دلیل است که این مدل از افت تحصیلی بیش از حد استفاده کرده است) در نتیجه باعث از دست دادن اطلاعات می شود.)

مدل پایه کانولوشن نیز عملکرد مشابهی دارد و این دو بهبودی نسبت به خط پایه ندارند. خوشبختانه مدل نهایی در جدول امتیازات عملکرد مطلوبی داشت و من را به بالای 45٪ از شرکت کنندگان فرستاد ، که بهترین مدل من تاکنون است. از آنجا که این یک مسابقه طبقه بندی تصویر است که در آن دسته بندی ها به شدت از دسته های imagenet گرفته نمی شوند (به عنوان مثال گربه ها و سگ ها) ، و دامنه بسیار بدیع و کاربردی است ، من معتقدم که این یک امتیاز مناسب است.

برای تأیید اعتبار مدل من پیش بینی هایی را برای داده های اعتبار سنجی ایجاد کردم که دارای امتیاز دقت 84.82٪ و ضرر ورود به سیستم 1.0071 بود. ورود به سیستم رهبران 1.19 است ، بنابراین ضرر ورود به سیستم کاملاً نزدیک است. در داده های اعتبار سنجی از 758 تصویر ، 664 تصویر به طور دقیق طبقه بندی شده و 94 تصویر نادرست است. نمودار ماتریس سردرگمی (غیر عادی) پیش بینی های داده های اعتبار سنجی در زیر آورده شده است.

همانطور که از ماتریس سردرگمی دیده می شود ، این مدل به ترتیب به خوبی در پیش بینی کلاسهای ALB و YFT (Albacore Tuna و YellowFin Tuna) تبحر دارد ، احتمالاً به این دلیل که داده های آموزشی ارائه شده توسط خود Kaggle دارای عکسهای ALB و YFT بیشتر از کلاسهای دیگر. با این حال ، ممکن است که کاگل یک مجموعه داده نامتعادل ارائه دهد زیرا این انعکاس دقیق حجم ماهیان در آن منطقه دریایی است که ALB /YFT دارد ، هر دو ماهی ماهی بیشتری گرفتار می شوند ، در حالی که کوسه ها در معرض خطر هستند بنابراین کمتر گرفتار می شوند . با این وجود ، با وجود شناسایی ، 35 مدل کوسه از 36 کوسه موجود در مجموعه اعتبار ، به طور دقیق شناسایی می شوندآنها نادر هستند.

نمودار ماتریس سردرگمی عادی پیش بینی های مجموعه اعتبار در اینجا آورده شده است.

من همچنین برخی از برچسب های صحیح را به صورت تصادفی و برخی از برچسب های نادرست را به طور تصادفی پیش بینی کرده ام تا ببینم آیا الگویی در برچسب های نادرست /صحیح وجود دارد یا خیر. .

به طور تصادفی از برچسب های صحیح نمونه برداری شده است:

به طور تصادفی از برچسب های نادرست نمونه برداری شد:

به نظر می رسد مدل پیش بینی شده ALB و YFT در بیشتر تصاویر نادرست که از طبقات غالب در مجموعه آموزش ارائه شده است. این نوع مشکلات احتمالاً می تواند با افزودن اطلاعات بیشتر برای سایر طبقات ، یا از طریق افزایش داده یا با جمع آوری مجدد فیلم های واقعی ، برطرف شود. کاگل به زودی قسمت 2 مسابقه شیلات را راه اندازی می کند ، جایی که احتمالاً داده های بیشتری در دسترس خواهد بود.

به نظر می رسد مدل در طبقه بندی بیشتر کلاس ها به غیر از BET و LAG که کلاسهایی هستند که کمترین میزان داده تصویر در آنها ارائه شده است. این مدل کاملاً مقاوم است زیرا عملکرد مشابهی در مجموعه داده های اعتبار سنجی و مجموعه داده های تابلوی امتیازات دارد. لازم به ذکر است که این مسابقه برخلاف اکثر مسابقات که امتیازات تابلوی امتیازات عمومی فقط برای زیرمجموعه ای از مجموعه داده های آزمون نشان داده می شود ، از تمام مجموعه داده های آزمون برای رهبران عمومی استفاده می کند.

به عنوان تقویت داده برای آموزش استفاده شد این مدل همچنین می تواند تغییرات اندکی را در تصاویر مانند تلنگر افقی ، نورهای مختلف ، چرخش ها و جابجایی به بالا و پایین که سناریوها هستند فیلم های واقعی فیلم در یک قایق در حال تکان دادن در یک اقیانوس کنترل کند.

در نمودار دقت و افت این مدل در هر دوره ، همچنین دیده می شود که دقت /افت آموزش با یک اعتبار سنجی در هر دوره (تولید مثل و مقایسه بیشتر آن در بخش تجسم فرم آزاد) همگراست. من حدود 6/5 ساعت این مدل را برای آموزش اجرا کردم که هر دوره حدود 1 ساعت طول می کشید.

با یک GPU خوب احتمالاً می توانم حداقل 90٪ دقت داشته باشم به سادگی مدل را برای چند دوره دیگر اجرا کنید.

نشت داده ها مسئله ای در این مسئله است زیرا بیشتر تصاویر بسیار شبیه به هم هستند زیرا فقط فریم های فیلم ها هستند. علاوه بر این ، تصاویر در اندازه های مختلف بودند و تصاویر در اندازه مشابه دارای برچسب های مشابه بودند (برای عکسبرداری از یک دوربین در همان زمان) ، برای غلبه بر این مسئله ، تغییر اندازه هر تصویر مهم بود. در هر صورت مجبور شدم برای تغذیه آنها در CNN اندازه آنها را تغییر دهم ، اما تغییر اندازه نیز برای جلوگیری از نشت اطلاعات مهم بود.

V نتیجه گیری

همانطور که دقت و افت مدل ها را در هر دوره ثبت کرده ام ، می توان مدل نهایی را با دومین گزینه بهترین مقایسه کرد. در اینجا نمودار دقت /افت مدل با نرمال سازی دسته ای ، اما بدون افزایش داده وجود دارد.

همانطور که می بینیم دقت آموزش در نمودار نزدیک به 100٪ است و از دست دادن آن نزدیک به 0 است. به همین ترتیب صحت اعتبارسنجی نیز نزدیک به 95٪ است در حالی که افت اعتبار حدود 0.2٪ نزدیک است پایان 10 دوره. ما همچنین روند کجا را می بینیماز دست دادن اعتبار در ابتدا کاهش می یابد اما بعد از حدود 2 دوره از دست دادن آموزش مدام کاهش می یابد /دقت بیشتر می شود ، در حالی که افت اعتبار به جای کاهش بیشتر می شود. واضح است که این مدل بیش از حد بر روی داده های آموزش است.

عملکرد این مدل ها در مجموعه آزمون در تابلوی امتیازات فقط 1.36175 است که از عملکرد مدل های آخر فقط در 5 دوره بدتر است. برای تجسم ، در اینجا نمودار دقت /زیان مدل نهایی در 5 دوره آمده است. ما می بینیم که دقت اعتبار سنجی بالاتر از دقت مدل باقی می ماند به دلیل ترک تحصیل تهاجمی و افزایش داده ها. منحنی اعتبار سنجی به احتمال زیاد به منحنی آموزش در تعداد کافی دوره تبدیل خواهد شد. این مدل نهایی حدود 1.19736 را در جدول رده بندی از دست داده است ، و مدل قبلی را 12.02٪ شکست داده و برای اولین بار مرا در 45٪ برتر جدول رده بندی قرار داده است.

5.2. انعکاس

برای دستیابی به این هدف برای حل نهایی ، سعی کرده ام به تدریج از مدل های پیچیده تری برای طبقه بندی تصاویر استفاده کنم. نزدیکترین همسایه K در روش هیستوگرامهای رنگی به عنوان پایه در Yelp Photo Classification Challenge مورد استفاده قرار گرفت ، اما آنها شباهت را با تصویر متوسط ​​هر کلاس اندازه گیری کردند ، در حالی که من از نزدیکترین همسایه با اکثریت آرا استفاده کردم.

I " من حتی یک مدل پایه کانولوشن را به عنوان یک روش خوب امتحان کرده ام ، زیرا می خواستم ببینم که عملکرد مدل با مدل پیچیده فقط با چند لایه وجود دارد (متأسفانه عملکرد آن بسیار کم است).

در مرحله استفاده از داده افزایشی ، من مجبور شدم ابتدا ویژگی های CNN را استخراج کرده و با اجرای نسخه های مختلف لایه های بالایی روی ویژگی های CNN آزمایش کنم. فقط پس از استفاده از نرمال سازی دسته ای به جای مدل کاملاً متصل به سبک VGG ، پیشرفت چشمگیری دیدم و بنابراین از آن با معماری VGG استفاده کردم و با آن داده های داده ای را تقویت کردم.

حتی اگر کیفیت این مجموعه داده باشد بسیار بالا ، با توجه به اینکه داده های خام فیلم واقعی ماهیگیران در قایق ها را نشان می دهد ، من مطمئن نیستم که این مجموعه داده "نمایشی جامع" از داده های ماهیگیری است که سیستم در زندگی واقعی با آن روبرو می شود به دلیل تغییرات کوچک مانند آب و هوا تفاوت ها ، رنگ قایق ، ماهیگیران از ملیت متفاوت با پوشیدن لباس های مختلف قومی یا با رنگ پوست متفاوت می توانند به راحتی مدل را جبران کنند زیرا پس زمینه تغییر می کند.

من معتقدم رویکرد جعبه مرزی که قادر به تشخیص آن است ماهی های موجود در تصویر از طریق تشخیص جسم ، تصویر را برش دهید تا در ماهی بزرگ شود و سپس طبقه بندی کنید شانس بیشتری دارد. شاید ، قایق های ماهیگیری باید برخی از مناطق را در قایق های خود به عنوان یک نقطه مرجع برای طبقه بندی سریع تر ایجاد کنند.

سخت ترین قسمت برای من این بود که آزمایشات را روی دستگاه محلی خود اجرا کنم. زمان محاسبات بالاتر منجر به تعداد کمتری از آزمایش ها در مورد شبکه های عصبی ، به ویژه هنگامی که تازه می فهمم چه کاری باید انجام دهم زیرا اولین تجربه من با یادگیری عمیق است.

5.3. بهبود

با توجه به زمان و هزینه محاسباتی ، امکان اجرای آزمایشات بیشتر با استفاده از معماری های شناخته شده دیگر غیر از VGG-16 مانند RESNET و Inception V-3 برای این مجموعه داده وجود نداشت. قطعاً ممکن استکه معماری متفاوت موثرتر خواهد بود. یک رویکرد جعبه محدود که در آن ابتدا محل قرارگیری ماهی در قایق را پیدا می کنیم و سپس سعی می کنیم با بزرگنمایی ماهی ، آن را طبقه بندی کنیم ، می تواند دقت طبقه بندی را نیز بهبود بخشد. با توجه به وقت کافی و قدرت محاسباتی ، من قطعاً دوست دارم رویکردهای مختلف را بررسی کنم.

از آنجا که کلاس ها به شدت تعادل نداشتند ، یکی از فرضیه های من این است که اگر عکس های بیشتری را با افزایش داده برای کلاس هایی که تولید می کنم تولید کنم داده های کمتری نسبت به بقیه ، آنها را ذخیره کنید و برای هر کلاس به حدود 1000 تصویر برسید ، این مدل حتی قوی تر خواهد بود. من این بار این کار را انجام ندادم زیرا با کلاس 8 مجموعه آموزش حدود 8000 تصویر خواهد بود. با افزایش داده ها ، هر دوره با تنها 3777 تصویر آموزشی من را در لپ تاپ حدود 1 ساعت طول می کشد ، آموزش 8000 تصویر احتمالاً 2.5 برابر زمانی را که هر یک از دسته ها حتی با استفاده از Keras هنگام افزایش داده ها تغییر می کنند ، طول می کشد. ، که مدت زمان بیشتری طول می کشد.

مراجع:

http://www.exegetic.biz/blog/wp-content/uploads/2015/12/log-loss-curve .png نمودار ورود به سیستم از دست دادن. http://cs231n.github.io/transfer-learning/.CS231 ، بررسی اجمالی آندره کارپاتی در مورد آموزش انتقال http://www.fast. ai /. Fast Ai MOOC. https://blog.keras.io/building-powerful-image-classification-models- using- very-little-data.html «مدل های طبقه بندی ساختمان با استفاده از داده های بسیار اندک توسط Francois Chollet. "
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد