Как стать автором
Обновить

Определяем породу собаки: полный цикл разработки, от нейросети на Питоне до приложения на Google Play

Время на прочтение27 мин
Количество просмотров23K
Всего голосов 20: ↑18 и ↓2+16
Комментарии34

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

Есть какие-то требования к телефону для работы с приложением? Мне google play говорит: «Приложение не совместимо ни с одним из ваших устройств». Основной телефон Xiaomi Redmi Note 3.
should be anything after Lollypop

Попробовал. Уровень угадывания совершенно неприличный — для одной и той же собаки породы гуляют так, что я могу это написать в две строки с random.choice(). Можно даже без фотографии.

Можно попросить фотки?
Уехали в приват.
Я правильно понимаю, что собака не породистая? Я не кинолог, но судя по фотке :) Если так, то вероятности будут гулять — это нормально.
Собака из приюта. Вроде бы, немецкий шпиц, но никто не знает.
CNN выдает веса. Классификатор их классифицирует. И если сочетание весов сети незнакомо, будет не пойми что. Так что, все, что меньше 0.9X вероятности смело относим к «я не знаю».
НЛО прилетело и опубликовало эту надпись здесь
Можно попросить фотки? В приват, например. Потому, что если вероятность определения меньше 0.9Х, значит нейросеть вообще не знает этого зверя. Вероятно, микс.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Прекрасный пример того, как встречаются хороший тестер и ленивый программист.
Сеть, получив два изображения, выдает веса (вероятности), которые ничему реальному не соответствуют. По этой же причине не выйдет определить веса родителей в миксе. То есть, наверное, можно, но обучение должно быть другим.
А ленивый программист, потому, что я должен был сделать выделение отдельных собак и анализ выделенного участка изображения :)
Теперь насчет анализа головы собаки. Если вы посмотрите на обучающий набор, там только собаки целиком. Так что сеть с головой работать вроде и не умеет. Опять же, хороший программист сделал бы прогу, отрезающую собаке голову, и обучил бы сеть, в том числе, на головах…
НЛО прилетело и опубликовало эту надпись здесь
Ну почему ноль смысла. Я теперь знаю породы всех моих коллег по работе.
НЛО прилетело и опубликовало эту надпись здесь
Вот список пород, которые должна узнавать сеть.
Похоже, ничего русского там нет :(

affenpinscher
afghan_hound
african_hunting_dog
airedale
american_staffordshire_terrier
appenzeller
australian_terrier
basenji
basset
beagle
bedlington_terrier
bernese_mountain_dog
black-and-tan_coonhound
blenheim_spaniel
bloodhound
bluetick
border_collie
border_terrier
borzoi
boston_bull
bouvier_des_flandres
boxer
brabancon_griffon
briard
brittany_spaniel
bull_mastiff
cairn
cardigan
chesapeake_bay_retriever
chihuahua
chow
clumber
cocker_spaniel
collie
curly-coated_retriever
dandie_dinmont
dhole
dingo
doberman
english_foxhound
english_setter
english_springer
entlebucher
eskimo_dog
flat-coated_retriever
french_bulldog
german_shepherd
german_short-haired_pointer
giant_schnauzer
golden_retriever
gordon_setter
great_dane
great_pyrenees
greater_swiss_mountain_dog
groenendael
ibizan_hound
irish_setter
irish_terrier
irish_water_spaniel
irish_wolfhound
italian_greyhound
japanese_spaniel
keeshond
kelpie
kerry_blue_terrier
komondor
kuvasz
labrador_retriever
lakeland_terrier
leonberg
lhasa
malamute
malinois
maltese_dog
mexican_hairless
miniature_pinscher
miniature_poodle
miniature_schnauzer
newfoundland
norfolk_terrier
norwegian_elkhound
norwich_terrier
old_english_sheepdog
otterhound
papillon
pekinese
pembroke
pomeranian
pug
redbone
rhodesian_ridgeback
rottweiler
saint_bernard
saluki
samoyed
schipperke
scotch_terrier
scottish_deerhound
sealyham_terrier
shetland_sheepdog
shih-tzu
siberian_husky
silky_terrier
soft-coated_wheaten_terrier
staffordshire_bullterrier
standard_poodle
standard_schnauzer
sussex_spaniel
tibetan_mastiff
tibetan_terrier
toy_poodle
toy_terrier
vizsla
walker_hound
weimaraner
welsh_springer_spaniel
west_highland_white_terrier
whippet
wire-haired_fox_terrier
yorkshire_terrier
НЛО прилетело и опубликовало эту надпись здесь
Я имел в виду, чтобы название содержало «russian» :)
НЛО прилетело и опубликовало эту надпись здесь
Гугл на этом уже обломался :) Опознал горилл… получил судебный иск. Хотя, если бы вы видели то фото…
Только вчера осваивал colab сам :). Замечу один нюанс, данные с google drive лучше скопировать на саму виртуальную машину. Так как при работе с данными находящимися на google drive обучение будет происходить очень медленно из низкой скорости получения данных с google drive (прошу прощения за тавтологию).
Спасибо.
Можете привести пример?
!cp -r '/content/drive/My Drive/cats_vs_dogs/' './' 


В моем случае (датасет кошечки против собак) было так. До копирования данных у меня на одну эпоху тратилось несколько минут (на моем ноуте эпоха занимала около 26 секунд), после копирования на эпоху стало тратиться около 10 секунд
Спасибо. Кстати, я заметил, что на Colab эпоха может занимать от секунды до минуты — перестартуешь блок Jupiter — и все меняется.
Я когда увидел жуткие тормоза очень удивился. Первым делом рестартовал блок, не помогло. Потом рестартовал само ядро. Не помогло. В итоге полез гуглить и на первой же ссылке понял, что я не один кто наступил на сей грабли.

Не очень понимаю зачем было постить закомментированный код. Лишняя информация сказывается на восприятии

Этот код нужно раскомментировать при определенных условиях. Например:
useNNofType_1()
#useNNofType_2()
В зависимости от того, какую сеть вы хотите получить (а я их там штук 5 привел), вы меняете комментарий.
Все сложно, пока нашел что код ниже должен быть в одной строчке.
Может это и так должно быть понятно

   from keras.applications.inception_v3 import preprocess_input as inception_v3_preprocessor
Да, точно.
Mожно попросить labels.csv
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории