полное смещение классификации модели CNN к определенному классу

#tensorflow #keras #deep-learning

Вопрос:

У меня есть полная модель CNN. его выходная форма равна (16,16,5), а активация-softmax. Мне нужно классифицировать каждую ячейку отдельно, один класс предназначен для фона, а другой-для класса каждого объекта ( 4 1 ).

например, для вывода 3*3 вывод моего желания выглядит так

введите описание изображения здесь

из-за того, что класс фона более повторяющийся, моя модель смещается к классу 0 (фон ). что я должен сделать для этой классификации дисбаланса. Для этого я использую TensorFlow и Keras. И моя базовая модель-Resnet50

большое вам спасибо

Комментарии:

1. Не могли бы вы показать пример того, как вы создали обучающий набор данных?

2. Я добавляю картинку. Я думаю, это может вам помочь. мой проект-это что-то вроде капчи «Я не робот». Я назначаю класс каждой ячейке, содержащей объект этого класса.

3. Я понимаю, чего вы хотите достичь, но я хотел бы посмотреть, как выглядит ваш обучающий набор данных, чтобы увидеть возможную «ошибку».

4. мой набор данных для обучения взят из kaggle.com/c/severstal-steel-defect-detection . но я изменил метки с маски на классификацию сетки

Ответ №1:

Простой и обычно успешный подход заключается в использовании весовых коэффициентов для каждого класса, в сумме которых складывается убыток. Коэффициент может быть обратным размерам классов или где-то между этим и 1 .

Например, для соотношения классов 100:1 обычно хорошо работает перевес 1:100 или 1:10.

Комментарии:

1. не могли бы вы дать мне пример кода для функции потерь? учитывая, что мой вывод представляет собой 4d-тензор с формой (пакет, количество ячеек, количество ячеек, класс )

2. @amirhossein_mlkz Если вы используете перекрестную энтропию, вместо loss=sum(cross_entropy(output,output_target)) , используйте loss=sum(cross_entropy(output,output_target)*reweighting) , где output output_target и reweighting все имеют размер массива , который вы упомянули, cross_entropy и * sum работают по элементам и работают во всех измерениях его входного массива.

Ответ №2:

Хотя я все еще жду, чтобы увидеть набор данных для обучения, я бы сказал, что в принципе я бы работал только с четырьмя классами: автомобилем, мотоциклом, грузовиком и велосипедом (я их изобрел). То есть у меня не было бы пятого класса, который был бы фоном, но я бы получил этот последний, отбросив его.

Если процент вероятности меньше X, мы отбрасываем четыре возможных класса и говорим, что это фон.

Тем не менее, важно, чтобы, если вы будете следовать этому методу, в вашем наборе данных для обучения не было только изображений автомобилей, мотоциклов и т. Д. во всей его полноте. Вы, должно быть, приучили себя распознавать транспортные средства по частям.

Другим интересным вариантом было бы предварительно обработать изображение, соединить X частей, составляющих изображение, применить NN непосредственно к изображению, а затем перенести результаты в разные кадры (возможно, здесь вам нужно применить другие типы NN, такие как сегментация).

Я надеюсь, что был вам полезен, если вы расширите информацию, которую мы можем попытаться помочь вам вместе.

Комментарии:

1. Если я удалю класс фона, может ли это привести к снижению точности моей модели и увеличению ложноположительного результата? еще один вопрос: можете ли вы объяснить свою цель предварительной обработки изображений? в моем проекте я обрабатываю все ячейки в одной последовательности в модели, и классификация ячеек возвращается в виде тензора 16x16x5 для всего изображения.