Прочитал штук десять книжек по машинному обучению и немного осознал вершину айсберга высокоуровневого языка программирования Python. Лет 25 назад эталоном языка программирования среди ученых был фортран и ходила шутка, что любая решенная задача уже есть в его библиотеках.
Сейчас это питон и его парадигма ООП, которая ранее была мне совершенно не понятна и сейчас нифига не понятна, но идеально соответствует подходам к разработке моделей машинного обучения. При этом в нем как раз отданная команда роботу чистить картошку вполне будет работоспособна – кто-то уже написал class Potatos: и функцию:
«картошка.чистить(картофелина, размер = ‘круглая’, нож = ‘токарный станок’, оператор = ’не трезв’, batch_size=10)».
Только для этого придется скачать десяток гигов библиотек правильных версий которые должны совпасть между собой, виндой, дровами и т.д (актуально для обучения на видеокартах нвидиа и керас). А еще оно сильно жрет оперативку и иногда не отдает обратно занятую область памяти полностью. Какой-то мужик затронул эту тему на конференции и ему на серьезных щщах посоветовали докупить пару плашек оперативки)))).
Первый этап в разработке моего
сраного адаптивного круиза – это распознавание дороги, разметки и машин на видео с камеры. Результаты текущего состояния можете увидеть на видео внизу. Весь объем кода, чтобы это осуществить занял где-то 200-300 строк кода. Если не вдаваться в детали, то вся суть машинного обучения это создать офигенно нелинейную математическую функцию с нужным количеством входных аргументов и осей x,x2….,y,y2,y3, которая выдает на выходе нужный нам ответ z1,z2,z3. Обучающие данные xxxyyy с известным ответом zzz позволяют определить нужные коэффициенты, чтобы это работало. Собственно такие обучающие данные были выложены в открытом доступе проектом commai.
Под это дело была обучена ранее известная по структуре сеть unet для сегментации изображений. Пока важен был скорее сам факт, что сеть обучается и что-то сегментирует. Дальше можно будет за счет выбора гиперпараметров (скорости обучения и формы сети), а также аугментации исходных данных (наклон, смещение, отражение, обрезка, деформация изображений) дополнительно повысить точность прогноза. Отваливается все это обучение регулярно. То памяти лишней отожрет, то комп заснет и конфликт какой-нить.
Отдельно отмечу что этим моделям пофигу на чем обучатся. Я в одном месте перепутал оси. Керас это сожрал спокойно. В результате картинка уплыла по смещению.
000000
111111
222222
333333
0000
0011
1111
2222
2233
3333
Модели было абсолютно пофигу и она это обобщила. Хотя внешне для человека на выходе была чушь полнейшая.
А собственно вот как это чудо пытается работать сейчас на примере видео с авто регистратора. Справа сегментированное изображение. Далее по разметке вполне реально определить траекторию движения и когда нужно отпустить газ круиза. Есть еще над чем работать, но все решаемо...
Unet for selfdrive car low resolution video segmentation - YouTube