10-ки тысяч изображений...
От: Fastwit  
Дата: 14.07.10 16:15
Оценка:
Здравствуйте.

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

Задача такова:

есть 100 тысяч изображений (jpeg) размером от 200Кб до 1Мб — все это "выхлоп" некоего устройства (назовем его скоростной фотоаппарат).
есть алгоритм который умеет распознавать все что надо на одном изображении с минимумом затрачиваемых ресурсов.

ВНИМАНИЕ ВОПРОС! Как оптимальнее всего "скормить" алгоритму эти 100000 файлов?
Интересует для OS Windows, но если у *nix есть объективная возможность сделать это оптимальнее, также готов выслушать идеи.

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

Под оптимальностью понимается наименьшее время (загрузки, записи) без учета алгоритма обработки, то есть считаем что алгоритм выполняется за 0 миллисекунд.

Заранее благодарен.
Re: 10-ки тысяч изображений...
От: conraddk Россия  
Дата: 14.07.10 17:24
Оценка: 2 (1) +1
Здравствуйте, Fastwit, Вы писали:

F>ВНИМАНИЕ ВОПРОС! Как оптимальнее всего "скормить" алгоритму эти 100000 файлов?

Первая мысль: не перегружать файловую систему. Нарезать, скажем, на 200 каталогов по 500 файлов, работать по каталогам.
Вторая мысль: если есть возможность, писать результаты на другой физический диск.
Третья мысль: работать в 2 (чтение и запись) или 3 (+обработка) потока. Если обработка действительно моментальная, то можно обрабатывать в потоке чтения или записи.
D.K. << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Все на свете должно происходить медленно и неправильно...
Re: 10-ки тысяч изображений...
От: Sni4ok  
Дата: 14.07.10 17:46
Оценка:
Здравствуйте, Fastwit, Вы писали:

ну и в чём проблема? всего 100 гигов данных, берёте цикл и реализовываете- прочитать тревиально быстро(прострое чтение файла), записать тоже(простая запись файла)- время обработки нулевое, халява, за полночи точно выполнится.
Re[2]: 10-ки тысяч изображений...
От: Fastwit  
Дата: 14.07.10 17:52
Оценка:
Здравствуйте, Sni4ok, Вы писали:
S>... за полночи точно выполнится.
а до минут за 10-30 можно эти "полночи" сократить?
Re[3]: 10-ки тысяч изображений...
От: ankf  
Дата: 14.07.10 18:16
Оценка:
Здравствуйте, Fastwit, Вы писали:

F>Здравствуйте, Sni4ok, Вы писали:

S>>... за полночи точно выполнится.
F>а до минут за 10-30 можно эти "полночи" сократить?

Считай сама , скорось чтения 30 мб/сек. Итого 100 Гб прочитать = 100 000 /30 = 10 000/3 = 3300 сек ~ 1 часа
Записать — как правило дольше. Итого 2-3 часа минимум как ни крути, решается только аппаратно.
Я программист, я Иван Помидоров, хватить трепатся — наш козырь error.
Re[3]: 10-ки тысяч изображений...
От: Sni4ok  
Дата: 14.07.10 18:18
Оценка:
Здравствуйте, Fastwit, Вы писали:

F>а до минут за 10-30 можно эти "полночи" сократить?


какой смысл, если это одноразовое действие.
Re[4]: 10-ки тысяч изображений...
От: conraddk Россия  
Дата: 14.07.10 18:26
Оценка:
Здравствуйте, Sni4ok, Вы писали:

S>какой смысл, если это одноразовое действие.

Подозреваю, что сильно неодноразовое. Видимо, речь идет про подстройку параметров алгоритма
D.K. << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Все на свете должно происходить медленно и неправильно...
Re[5]: 10-ки тысяч изображений...
От: Sni4ok  
Дата: 14.07.10 18:30
Оценка:
Здравствуйте, conraddk, Вы писали:

S>>какой смысл, если это одноразовое действие.

C>Подозреваю, что сильно неодноразовое. Видимо, речь идет про подстройку параметров алгоритма

когда действие неодноразовое- исходные данные не портят,в случае же если данные образуются постоянно, то нет смысла их писать на диск, чтобы потом прочитать и подпортить- лучше сразу подпортить и писать.
Re[6]: 10-ки тысяч изображений...
От: conraddk Россия  
Дата: 14.07.10 19:07
Оценка:
Здравствуйте, Sni4ok, Вы писали:

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

Ну, пусть автор темы даст пояснение.
Я понял задачу так. Есть данные (например экспериментальная выборка, то есть мощного потока данных пока не ожидаем). Надо данные прочитать, сделать действие, записать обратно ("обратно" = "на диск" != "в те же файлы").
Потом смотрят на результат и делают какие-то выводы.

А если одноразовая конверсия, то конечно — пусть хоть сутки или несколько работает. "Машина должна работать, а человек — думать".
D.K. << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Все на свете должно происходить медленно и неправильно...
Re[3]: 10-ки тысяч изображений...
От: Аноним  
Дата: 14.07.10 20:41
Оценка:
Здравствуйте, Fastwit, Вы писали:

F>Здравствуйте, Sni4ok, Вы писали:

S>>... за полночи точно выполнится.
F>а до минут за 10-30 можно эти "полночи" сократить?
он сделает это быстрее!
Re[4]: 10-ки тысяч изображений...
От: VladFein США  
Дата: 14.07.10 21:18
Оценка:
Здравствуйте, ankf, Вы писали:

F>>а до минут за 10-30 можно эти "полночи" сократить?


A>Считай сама , скорось чтения 30 мб/сек. Итого 100 Гб прочитать = 100 000 /30 = 10 000/3 = 3300 сек ~ 1 часа

A>Записать — как правило дольше. Итого 2-3 часа минимум как ни крути, решается только аппаратно.

30 мб/сек — это на чем?
На приличной дисковой системе скорость ~ 100MB/s.
Т.е. прочитать можно минут за 20. Обработка, как было сказано, "0 миллисекунд" (интересно, а в микросекундах это сколько? ); писать можно, как было предложено выше, на другой диск, одновременно. Итого ~ 20 минут на все.
Re: 10-ки тысяч изображений...
От: jazzer Россия Skype: enerjazzer
Дата: 15.07.10 01:39
Оценка:
Здравствуйте, Fastwit, Вы писали:

F>есть 100 тысяч изображений (jpeg) размером от 200Кб до 1Мб — все это "выхлоп" некоего устройства (назовем его скоростной фотоаппарат).

Если бы это был не jpeg, а нечто вроде битмапа, то можно было бы использовать отображение файла в память (т.к. тебе нужно записать свои маркеры только в определенные места картинки). Хотя файлы маленькие, так что, наверное, выигрыша особого все равно не будет. С большими файлами имело бы смысл.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: 10-ки тысяч изображений...
От: ylem  
Дата: 15.07.10 02:27
Оценка:
F>В идеале, на каждую картинку потом желательно нанести графические маркеры (примитивы с небольшим текстом) и картинку записать обратно,
F>вот если еще подскажите как сделать запись на диск оптимальной буду очень признателен.

Писать не "поверх" старых файлов.
Писать на отдельный диск (физический). Диск дефрагментировать перед сеансом.
Re[5]: 10-ки тысяч изображений...
От: Serg27  
Дата: 15.07.10 03:34
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>Здравствуйте, ankf, Вы писали:


A>>Считай сама , скорось чтения 30 мб/сек. Итого 100 Гб прочитать = 100 000 /30 = 10 000/3 = 3300 сек ~ 1 часа

A>>Записать — как правило дольше. Итого 2-3 часа минимум как ни крути, решается только аппаратно.

VF>30 мб/сек — это на чем?

VF>На приличной дисковой системе скорость ~ 100MB/s.
VF>Т.е. прочитать можно минут за 20. Обработка, как было сказано, "0 миллисекунд" (интересно, а в микросекундах это сколько? ); писать можно, как было предложено выше, на другой диск, одновременно. Итого ~ 20 минут на все.

Я боюсь, что и 30 МБ/сек не получится. 100 МБ/сек — это скорость чтения больших файлов большими блоками. Тут же файлы сравнительно маленькие (0.1 -1 МБ), каждый нужно найти, открыть, закрыть. Файловый кэш работать не будет — так как каждый файл будет открывается один раз.
Т.е. я бы не был так оптимистичен... Но стараться надо.
Re: 10-ки тысяч изображений...
От: ArtDenis Россия  
Дата: 15.07.10 03:36
Оценка:
Здравствуйте, Fastwit, Вы писали:

F>ВНИМАНИЕ ВОПРОС! Как оптимальнее всего "скормить" алгоритму эти 100000 файлов?


Ну если процессор многоядерный, то можно распараллелить примерно так:

* Чтение jpeg с диска + передача в очередь на "раскодированние Jpg -> пиксели"
* Раскодированние Jpg -> пиксели + передача в очередь на "распознавание"
* Распознавание + передача в очередь на "Вставку графического маркера"
* Вставка графического маркера + передача в очередь на "сохранение"
* Сохранение

В любом случае, основные тормоза будут из-за самого слабого (точнее медленного) звена цепи
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: 10-ки тысяч изображений...
От: VladFein США  
Дата: 15.07.10 20:16
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Ну если процессор многоядерный, то можно распараллелить примерно так:

А зачем это? Ведь сказано же — время обработки 0мс.
Re: 10-ки тысяч изображений...
От: Lepsik Гондурас https://www.kirdyk.club/
Дата: 19.07.10 19:29
Оценка:
если в картинках прописан exif/iptc то можно писать туда — для этого достаточно переписать пару переменных не ичтая файл целиком
Re: 10-ки тысяч изображений...
От: пыщьх http://rsdn_user.livejournal.com
Дата: 20.07.10 15:30
Оценка: 3 (1)
Здравствуйте, Fastwit, Вы писали:

F>Здравствуйте.


F>В моей научной работе настало время перейти от теории к практике и трудности не заставили себя ждать.


F>Задача такова:


F>есть 100 тысяч изображений (jpeg) размером от 200Кб до 1Мб — все это "выхлоп" некоего устройства (назовем его скоростной фотоаппарат).

F>есть алгоритм который умеет распознавать все что надо на одном изображении с минимумом затрачиваемых ресурсов.

F>ВНИМАНИЕ ВОПРОС! Как оптимальнее всего "скормить" алгоритму эти 100000 файлов?

F>Интересует для OS Windows, но если у *nix есть объективная возможность сделать это оптимальнее, также готов выслушать идеи.

F>В идеале, на каждую картинку потом желательно нанести графические маркеры (примитивы с небольшим текстом) и картинку записать обратно,

F>вот если еще подскажите как сделать запись на диск оптимальной буду очень признателен.

F>Под оптимальностью понимается наименьшее время (загрузки, записи) без учета алгоритма обработки, то есть считаем что алгоритм выполняется за 0 миллисекунд.


F>Заранее благодарен.

Отказаться от использования стандартных ФС и вместо 100 тысяч jpeg-файлов, создать один раздел (или файл), где эти JPEG-файлы будут идти последовательно. За счет строго последовательного чтения данных с диска, скорость возрастет в сотни раз. Если нужно, чтобы на выходе алгоритма были именно jpeg-файлы, то быстрее всего будет почитать про структуры FAT32 и генерить на выходе раздел целиком. Опять же, для строго последовательной записи (к кэшированием FAT-таблиц).
Запретное обсуждение модерирования RSDN:
http://rsdn-user.livejournal.com/652.html
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.