Обновить
5
Сергей Паньков@trapwalker

Backend, python

17
Подписчики
Отправить сообщение
О, а у вас нет случайно бота, помогающего посчитать кто по сколько скидывается в баре? А-то кто-то пиво глушит, кто-то абсент, а кто-то за рулём и соком балуется, но зато креветок навораичвает, а счет один=)
Для обеспечения его работы нужно лишь чтобы были объявлены операторы сравнения lt и eq. Это — тот минимум, который нужен декоратору для конструирования остальных операторов сравнения.

На самом деле достаточно, чтобы была объявлена любая пара методов, на основе которой можно восстановить остальные. К примеру это может быть __ne__ и __ge__.

itertools.islice(range(50), 10, 20)

Забавно, но это плохой пример. Во втором питоне результатом range(50) будет список, и срез его можно, очевидно получить сразу. А в Python3 (хотя не уверен во всех ли версиях) результат range(50) — это хоть и генератор, но особый, с поддержкой протокола срезов.
В таком вот примере следовало бы вместо range(50) использовать (i**2 for i in range(50)). Квадрат для пущего подавления бессмысленности примера.

Кстати, статический IP тоже так себе подходит в индустриальных решениях. Только в случаях, когда для набора датчиков отдельная сеть. Да и то, если учесть насколько замусорен диапазон WiFi в многоквартирных домах, то нафига выбирать такой протокол для IoT и УмногоДома? Это ж только дискредитирует идею за счет глючности и ненадёжности.
Так себе подход к безопасности (security by obscurity).
Правильно говорили выше. Стоит такой вот конструкции самогонного аппарата получить более-менее приличное распространение (а с распространением полезняшек в комьюнити энтузиастов нынче проблем нет), найдётся обязательно какой-нибудь тщеславный хакер, который не поленится сделать WiFi пушку и походить с нею по густонаселенным кварталам вечерочком. Если эта штука позволит, скажем, через эксплойт выставить температуру за 102 градуса, то считай бомба получится.
Но суть в том, что до массового применения уязвимости мироное население не знает и не догадывается о возможных последствиях.
С учетом потенциальной масштабируемости таких решений, можно просто попасть под довольно глобальную шутку, проделанную ради фана или просто нечаянно в составе какой-то другой атаки.

Я бы термостат этой методике не доверял. А температуру показывать… ну норм, окей. Но аппетит же приходит во время еды и найдётся умелец, который додумается о расширении протокола, но пренебрежет безопасностью. Принцип «неуловимого Джо» сбережёт большинство, но не всех.
Можно случайно присвоить значение своей константе во время выполнения, а отладка и откат сломанных объектов — отдельное приключение.

Я всё понимаю, но это уж из разряда злобных буратино. В Питоне много таких мест, где можно «нечаянно» отпилить себе что-нибудь расчёской, не самая большая это, ИМХО, проблема.
Эдак во втором питоне тоже «нечаянно» можно было присвоить:
True = False

Хоть на уровне модуля максимум, но тоже «страашененько».
В третьем «слава богу» запретили, вздохнул спокойно=).
Но в целом `Enum` быстрый — это хорошо. Не понятно почему его в штатную библиотеку таким эффективным не включили. С другими типами не выпендривались же.
И в сухом остатке ваш двусвязный список — это уже не классический двусвязный список ввиду наложения ряда ограничений на его использование и снятия ряда преимуществ.
Если не затруднит, скиньте ссылку на ликбез или туториал по потокам на Python,

Слово потоки тут не очень подходит из-за путаницы с тредами и стримами. Вам следует осваивать базовые концепции стандартных потоков ввода-вывода в *nix операционных системах (в винде, кстати, это тоже должно работать, разве что с кодировками имён файлов могут быть проблемы, но решаемые).

В питоне в этом плане нет никаких существенных отличий в работе от других языков.
Те же три стандартных потока: ввода вывода и вывода ошибок. Примерно также их можно писать и читать как обычные файлы, в том числе построчно.
Помимо стандартных можно делать дополнительные пайпы, в том числе именованные, делать перенаправления между ними, разделять (tee) и сливать в никуда (/dev/null).
Форкнул ваш репозиторий и положил туда полностью готовый скрипт для разбиения картинки на тайлы и пример скрипта для принятия потока тайлов.
Там же лежит скрипт примера с конвейерным запуском этих скриптов.

Адаптируйте уж сами там. Постарался сделать максимально понятно.
При таком подходе в качестве обучающей выборки можно взять хоть терабайт картинок, целиком весь датасет в памяти держать не придётся. Диск тоже дёргается по минимуму: только для чтения исходных изображений по одному разу каждое.

Если нейронная сеть у вас будет персистентной, то стоит сделать:
  • отдельную CLI команду для инициализации новой сети;
  • параметр скриптов для указания с какой нейронной сетью работаем;
  • проверку на совместимость размера тайла с нейронкой;
  • хеширование исходных изображений, и хранение хешей в каком-нибудь key-value хранилище с индексом, чтобы не обучать по много раз на одних и тех же изображениях нейронку. Не знаю, честно сказать, как это на неё подействует.
  • периодическое сохранение промежуточного состояния сети во время обучения на больших датасетах.


UPD. Сделаю пуллриквест, принимайте.
Не, ну эту услугу можно предлагать как опцию. А с чего вы взяли, что китайцы и так не распаковывают ваш телефон перед продажей? Я вам больше скажу: они же (ну китайцы) его и упаковывают.
Экономика. Будет спрос — будет предложение.

Смысл этих законов не в том, чтобы всех подряд нарушителей прижучить. Всех подряд — сложно. Органы устать могут. Смысл в том, чтобы прижучить можно было любого. Кого потребуется. Ну чтобы не мог пикнуть никто. Чуть что, сразу: "таак, гражданин, на демонстрацию пришли? А что это тут у вас в прошлом месяце из китая пришло?"


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

А поскольку они там не работают нихрена, а, похоже, дурью маются, то это эти 30 дней равносильны вечности.

Вот ведь смекалка, а! Респект! Я правильно понял, что китайцы, похоже, начнут "как бы употреблять" смартфон или планшет перед продажей, ну чтобы россияне могли его якобы за 30 баксов купить. Оригинальна упаковка может следовать за аппаратом отдельным отправлением с объявленной стоимостью в доллар. А как оценишь Б/У технику? Может её специальный китаец целых пять минут использовал!

Залить код на гитхаб — это хороший способ получить больше конструктивной критики. Желающие показать конкретные проблемы смогут сделать вам pull request'ы со своим вариантом кода. Гитхаб — это более правильный способ обменяться любым кодом, даже заготовками. Весь код с гитхаба можно получить одной командой. Тут же можно делать правки и склонировать себе, чтобы показать вам своё видение.

Так что «Это заготовка» — плохая отмазка, чтобы не работать с кодом правильно.
Жаль что не с кем это всё обсуждать.

Ну а как это обсуждать здесь в комментах? На гитхабе я бы отправил вам пуллреквест с пайплайном, заготовку для потоковой тулзы нарезки квадратов… А здесь чтобы забрать даже код и понять что изменилось в нём — это нужно сделать миллион манипуляций мышкой.

Я понимаю, что всё это не для студентов МФТИ, но в данном случае сделать правильно — это значит сделать проще и доступнее, а не сложнее и непонятнее. Гитхаб — это правильный и простой путь, как бы оно ни казалось на первый взгляд.

Прелесть Unix-way стиля в том, что правильная работа с потоками позволяет не дёргать диски, не делать кучи временных файлов, не требовать огромных объёмов оперативы.
Получается универсальное совместимое решение, которое легко кастомизировать на любом этапе процесса.
> find ~/pictures -name '*.jpg' 2>/dev/null | xargs -L 1 python3 split.py | python3 teech.py

Вот здесь поток имён файлов берётся из поиска по файловой системе, но с тем же успехом исходники файлов обучающей выборки можно было бы брать прямо из архива распаковывая его на лету и никуда не сохраняя распакованные данные. Данные файлов сразу потоком передаются в нарезку, а поток обучающих пар летит в обучалку. Всё происходит с максимальной скоростью.

Если не понятно что-то — обращайтесь. Что именно не ясно?
А почему, кстати, на гитхаб не выложили? Только хотел побаловаться, а тут целая эпопея код собрать.
Я тоже предлагал, но вот сейчас подумал, что там, похоже, нужна ещё будет какая-то хитрая гайка на карданном подвесе. Хотя при наличии 3d-принтера это может быть и не проблема. Может быть имеет смысл весь моторный блок тоже на шарнир подвесить с одной степенью свободы. Тогда не придётся мудрить шарнир с двумя степенями для гайки.

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

Тогда описанную мной процедуру нужно проделать над каждым кадром по отдельности, а потом выровнять по максимальной корреляции и перемножить.

А что именно вы подразумеваете под «глубиной» в плоском изображении? Отсутствие резкости вижу. Наблюдается так называемый motion blur. Думаю фото можно сильно улучшить простой сверткой, а если действовать через прямое и обратное преобразование Фурье с промежуточной коррекцией Фурье-образа, то, наверно, и большего достигнуть можно. Может быть после этого появится ожидаемая вами «глубина»?
Попробуйте найти резкую такую фотку с «глубиной» и обработать ее радиальным motion blur в Фотошопе. Если при этом «глубина» пропадет также, то, скорее всего, фотку можно улучшить цифровыми методами.

О, а ещё неплохо было бы при подготовке обучающей выборки ресайзить картинки так, как это обычно делают всякие оптимизаторы с обязательным пережатием в jpeg.
Причем делать это со всей картинкой перед нарезкой, чтобы краевые эффекты сжатия правильно учитывались.


Ещё интересно понаблюдать разницу. Может быть имеет смысл обучить отдельные нейронки на увеличение не только в 2 раза, но и в 3, полтора и т.д.

Информация

В рейтинге
Не участвует
Откуда
Белгород, Белгородская обл., Россия
Дата рождения
Зарегистрирован
Активность