Перейти к содержимому
Compvision.ru

mrgloom

Пользователи
  • Количество публикаций

    2 302
  • Зарегистрирован

  • Посещение

  • Days Won

    142

Сообщения, опубликованные пользователем mrgloom


  1. 1. Правильно ли я понимаю, подразумевается что примеры stereo_calib и stereo_match должны использоваться для 2-х камер которые закреплены между собой 'палкой' и не обязательно чтобы линия на которой они находятся была параллельна 'полу'?

    2. Возможно ли из простых камер подключенных по USB сделать стереокамеру? т.е. насколько я понимаю нужно чтобы кадры с камер брались синхронизировано.


  2. Тренируйтесь пока на LFW.

    В OpenFace нет построения индекса? в том же OpenBR есть, но не знаю какой точно алгоритм, скорее даже правильно будет сказать пайплайн.

    Еще у них есть не только L2 http://openbiometrics.org/docs/plugin_docs/distance/


  3. Кстати по поводу t-sne:

    Я пробовал t-sne на дефолтах и получилось не лучше pca, а если надо подбирать параметры то реально ли картинка будет показывать насколько фичи различимы, ведь существует множество наборов параметров, а значит множество возможных проекций, некоторые из которых хуже, некоторые лучше.

    Для pca маппинг идеально разделимых класов это 'ромашка'?

    https://github.com/mrgloom/Kaggle-Two-Sigma-Connect-Rental-Listing-Inquiries-Feature-Visualization

     

    Могу попробовать тоже самое на VGGFace, но непонятно какие кропы ему необходимо подавать - т.е. хотелось бы увидеть пример обучающей выборки.

    http://www.robots.ox.ac.uk/~vgg/software/vgg_face/


  4. Цитата

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

    Может решить бинарную задачу символ-не символ? если я правильно понял у вас что то типа скользящего окна по изображению на котором есть символы и фон и вы хотите по порогу определить где фон.

     

    Можно CNN

    На С++: Caffe+DIGITS можно легко обучить, деплой чуть сложнее.

    На python полегче:

    Если хотите sliding window можете присмотреться к этому примеру, который будет быстрее чем naive sliding window.

    https://github.com/mrgloom/Fully-Convolutional-Example/blob/master/fully_convolutional_example.ipynb

     


  5. Регрессия вроде именно регрессия, но применять её к задаче классификации не адекватно, т.к. у вас 'расстояние' между 1 и 2 будет меньше чем между 1 и 10, а в задаче классификации 'расстояние' должно быть одинаковым.

    По вероятности есть такой вот раздел в LibSVM:

    http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf

    8 Probability Estimates (page 30)

    SVM predicts only class label (target value for regression) without probability information.

     

    Можно вот такой хак (прочитайте коменты):

    https://stackoverflow.com/a/27739386/1179925

    P.s. простым языком объяснить можно почему confidence score!=probability?

     

    От себя добавлю:

    Я пробовал решать https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition#evaluation

    там предполагается что вы предсказываете вероятность собаки для картинки в интервале [0,1]

    Я использовал Linear SVM поверх CNN фич и результат был не очень(т.е. хуже чем просто ответы CNN затрейненой с Softmax ), видимо потому, что пробабилити из SVM было не 'затюнено'?

    http://scikit-learn.org/stable/auto_examples/calibration/plot_calibration_curve.html#sphx-glr-auto-examples-calibration-plot-calibration-curve-py

     

    Вот еще некоторые ссылки по теме:

    https://stackoverflow.com/questions/26478000/converting-linearsvcs-decision-function-to-probabilities-scikit-learn-python

    https://stackoverflow.com/questions/15111408/how-does-sklearn-svm-svcs-function-predict-proba-work-internally

     

     

     

    UPDATE:

    If true and the problem is 2-class classification then the method returns the decision function value that is signed distance to the margin, else the function returns a class label (classification) or estimated function value (regression).

    Прочитал еще раз и понял что distance to hyperplane возвращается только в случае бинарной классификации, т.е. когда например 10 цифр то возращается по тихому лейбл.

    Вот и код

    https://github.com/opencv/opencv/blob/f70cc29edb8a606fb859eaa67a4c9609f7f904fa/modules/ml/src/svm.cpp#L1913


  6. http://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours#findcontours

    Source image is modified by this function. Also, the function does not take into account 1-pixel border of the image (it’s filled with 0’s and used for neighbor analysis in the algorithm), therefore the contours touching the image border will be clipped

     

    так что

     

    findContours(gray.clone(), contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, cv::Point(0, 0));

    • Like 1

  7. Я делаю в keras через callback'и

     

    Цитата

        early_stopping_callback = EarlyStopping(monitor='val_loss', patience=epochs_to_wait_for_improve)
        checkpoint_callback = ModelCheckpoint(model_name+'.h5', monitor='val_loss', verbose=1, save_best_only=True, mode='min')
        history = model.fit_generator(datagen.flow(X_train, y_train, batch_size=batch_size),
                    steps_per_epoch=len(X_train) / batch_size, validation_data=(X_test, y_test),
                    epochs=n_epochs, callbacks=[early_stopping_callback, checkpoint_callback])
        
        #Plot will be only for n_epochs, where loss will be averaged for steps_per_epoch batches
        fig = plt.figure()
        plt.plot(history.history['loss'])
        plt.plot(history.history['val_loss'])
        plt.title('model loss')
        plt.ylabel('loss')
        plt.xlabel('epoch')
        plt.legend(['loss', 'val_loss'], loc='upper left')
        fig.savefig(model_name+'_graph.png', dpi=fig.dpi)

    Точки на графике это уже усредненное по батчам, т.е. среднее на эпоху.

     

    Попробовал просто увеличить кол-во эпох которые ждать и скорее всего это уже overfit, опять же из-за 'критов'.

     

    c1a618d6ff9b4c0d86de22930f02c979.png

     


  8. Т.е. скорее даже вопрос как сделать val_loss более гладким - просто больше batch_size и меньше learning rate?

     

    Например вот график, где я использую early stopping и хотя тенденция к уменьшению val_loss есть, но из-за 'крита' (примерно на эпохе 50) обучение останавливается.

    870e89a58706418e8414684244754848.png


  9. Насколько я помню когда я ковырял dlib там не было примера как обучить несколько HOG детекторов под разными углами(т.е. только 1), но сам обученный классификатор для лиц имел как раз несколько темплейтов с разным поворотом.

    И у меня это плохо работало на объектах которые повернуты когда был натренирован 1 HOG детектор.

    Насчет CNN для классификации обычно делают horizontal flip, т.е. это норм,  но это не тоже самое, когда объект крутится на 360 градусов, хотя на kaggle решали задачи с планктоном и галактиками где вроде те же проблемы.


  10. 1) Не смог этого быстро понять по коду, попробуйте вынести stitching_detailed.cpp в отдельный файл и добавляйте код постепенно(или только то что нужно) и смотрите на входные данные, это позволит понять на что влияет каждый шаг пайплайна.

    2) Скорее всего это просто не в координатах изображения, а все изображения варпятся на некоторую координатную сетку.

    3) Находит минимальный разрез на графе, пиксели это вершины графа, edges можно задавать просто как разницу между изображениями, но может это делается как то более умно

    например

    http://www.maths.lth.se/matematiklth/personal/petter/rapporter/panorama2.pdf


  11. 1. Bundle Andjustment это глобальная оптимизация параметров камер, там видимо 2 разных метода.

    2. Считается медиана focal length от всех камер?

    3. Морфологическая операция на бинарной маске http://docs.opencv.org/2.4/doc/tutorials/imgproc/erosion_dilatation/erosion_dilatation.html

    4. 

    https://github.com/opencv/opencv/blob/3240f2a6b790bb9df086d390233c74a04ad63124/modules/stitching/src/blenders.cpp#L126

    https://github.com/opencv/opencv/blob/3240f2a6b790bb9df086d390233c74a04ad63124/modules/stitching/src/blenders.cpp#L541

    [По Multiband blending paper: BA83] Burt, P., and Adelson, E. H., A Multiresolution Spline with Application to Image Mosaics. ACM Transactions on Graphics, 2(4):217-236, 1983.

    https://github.com/opencv/opencv/blob/3240f2a6b790bb9df086d390233c74a04ad63124/modules/stitching/include/opencv2/stitching/detail/blenders.hpp

    https://github.com/opencv/opencv/blob/3240f2a6b790bb9df086d390233c74a04ad63124/modules/stitching/src/blenders.cpp

     

    • Like 1

  12. 1. По поводу похожести можно bag-of-words на базе sift

    https://github.com/shackenberg/Minimal-Bag-of-Visual-Words-Image-Classifier

    2. Всякие перцептвные хеши

    http://www.phash.org/

    3. Ну и фичи из CNN сетей для CBIR (хотя сейчас даже дескрипторы типа sift делаются через нейросети)

     

    На счёт этого ' после чего восстановить второе на сколько это возможно близко к первому ' скорее всего только 1 подход поможет, т.к. там можно заматчить точки и получить матрицу гомографии.

×