Я скачал yolo.weights
и yolo.cfg
с сайта даркнета PJ Reddie:
cd darkflow && mkdir bin && cd bin/ \
wget http://pjreddie.com/media/files/yolo.weights >/dev/null 2>&1 && \
wget http://pjreddie.com/media/files/tiny-yolo-voc.weights >/dev/null 2>&1 && \
затем попытался столкнуться с flow
:
$ ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0
и я получаю
$:/darkflow/darkflow# ./flow --model cfg/yolo.cfg --load bin/yolo.weights --demo videofile.avi --gpu 1.0
Parsing ./cfg/yolo.cfg
Parsing cfg/yolo.cfg
Loading bin/yolo.weights ...
Traceback (most recent call last):
File "./flow", line 45, in <module>
tfnet = TFNet(FLAGS)
File "/darkflow/net/build.py", line 46, in __init__
darknet = Darknet(FLAGS)
File "/darkflow/dark/darknet.py", line 27, in __init__
self.load_weights()
File "/darkflow/dark/darknet.py", line 82, in load_weights
wgts_loader = loader.create_loader(*args)
File "/darkflow/utils/loader.py", line 105, in create_loader
return load_type(path, cfg)
File "/darkflow/utils/loader.py", line 19, in __init__
self.load(*args)
File "/darkflow/utils/loader.py", line 70, in load
val = walker.walk(new.wsize[par])
File "/darkflow/utils/loader.py", line 127, in walk
'Over-read {}'.format(self.path)
AssertionError: Over-read bin/yolo.weights
[ОБНОВИТЬ]
Кажется, что файлы PJ Reddie не полностью совместимы, поэтому мне нужно загрузить готовые веса по предоставленной ссылке в README: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU .
Проблема заключалась в том, что я должен был сделать это на стороне сервера, поэтому, немного покопавшись, самым простым решением было использовать надстройку gcurl для Firefox, которая имитирует команду прямой загрузки:
cd darkflow/bin && \
curl --header 'Host: doc-0k-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0k-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/etft348j4r0b37n9p1jkokvbfagiimk2/1491782400000/16010642207042931662/*/0B1tW_VtY7onieS0zMzdkSG11OW8?e=download' -o 'tiny-yolo-v1.1.weights' -L && \
curl --header 'Host: doc-08-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-08-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/s29gvf1n83pqr37pk2l7t2cvcjnssd8s/1491782400000/16010642207042931662/*/0B1tW_VtY7oniTjM3YUxlRHpDVW8?e=download' -o 'tiny-yolo-voc.weights' -L && \
curl --header 'Host: doc-10-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-10-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/fmtsb8ruqk7a4tg5p98khj6qp4fq3p6i/1491782400000/16010642207042931662/*/0B1tW_VtY7onicFlqclhnRGlodGM?e=download' -o 'yolo-full.weights' -L && \
curl --header 'Host: doc-0k-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0k-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/knshmif3mk3n4ogtq9p77nf2f5v3dr0d/1491782400000/16010642207042931662/*/0B1tW_VtY7onibmdQWE1zVERxcjQ?e=download' -o 'yolo-tiny.weights' -L && \
curl --header 'Host: doc-0c-88-docs.googleusercontent.com' --header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0' --header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' --header 'Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3' --header 'Referer: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU' --header 'Connection: keep-alive' --header 'Upgrade-Insecure-Requests: 1' 'https://doc-0c-88-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/ggut18kr6ubhoc8btg5hf6f32stoh50n/1491782400000/16010642207042931662/*/0B1tW_VtY7oniZGlkLTh5YVl1WWs?e=download' -o 'yolo.weights' -L
Кстати, я не уверен, что эти ссылки будут работать вечно, после загрузки моя папка bin/
выглядит так:
# cd darkflow/bin/
# ls -lh
total 1.6G
-rw-r--r-- 1 root root 104M Apr 10 00:20 tiny-yolo-v1.1.weights
-rw-r--r-- 1 root root 61M Apr 10 00:20 tiny-yolo-voc.weights
-rw-r--r-- 1 root root 1.1G Apr 10 00:20 yolo-full.weights
-rw-r--r-- 1 root root 173M Apr 10 00:21 yolo-tiny.weights
-rw-r--r-- 1 root root 258M Apr 10 00:21 yolo.weights
Файлы на официальном YOLO всегда обновляются по мере того, как он экспериментирует с новыми конфигами, вы должны проверить, есть ли соответствующие выпущенные .cfg
. Загруженный мной файл weights
является более старой версией и совместим с файлом .cfg
в этом репозитории.
@thtrieu спасибо, тем временем я решил, используя ваши файлы!
эта ошибка вызвана несоответствием между cfg и двоичным файлом веса. Вот соответствующий код, который вызывает это.
В начале flow
он сначала попытается инициализировать TFNet
из заданных cfg
и bin
, указанных пользователем в командной строке.
# in darkflow/utils/loader.py
class weights_walker(object):
...
self.size = os.path.getsize(path)
этот ходок создается и вызывается функцией walk
Этот проход будет считывать веса из файла bin
для каждого слоя с точным количеством байтов в соответствии с cfg. Перед фактическим чтением он проверяет, меньше ли байтов для чтения, чем оставшиеся байты в файле. Вот код для этого
def walk(self, size):
if self.eof: return None
end_point = self.offset + 4 * size
assert end_point <= self.size, \
'Over-read {}'.format(self.path)
здесь end_point
— это место, где будет располагаться курсор дескриптора файла, когда он закончит чтение требуемой суммы из двоичного файла для весов текущего слоя. self.size
— это общий размер двоичного файла. Вы можете видеть, как сравнение этих двух переменных укажет на наличие конфликта между файлами cfg и bin.
Основываясь на обсуждениях выше, я скачал последнюю версию cfg и бинарный файл с веб-сайта yolov2. Тем не менее, это все еще не работает, и теперь я уверен, почему. Надеюсь, я смогу написать успешную историю позже.
@chadrick-kwag Привет, ты решил это?
@AlexeyAB, к сожалению, нет. Мне пришлось просто переключиться на tiny-yolo-voc, который работал без сбоев. Мой проект прост, поэтому мне тоже подходит тини-йоло. Извините, что сообщаю вам плохие новости :(
@chadrick-kwag Хорошо, спасибо. Используете ли вы tiny-yolo-voc с https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU или с https://pjreddie.com/darknet/yolo/ ?
@AlexeyAB Я использовал тот, что от pjreddie. К вашему сведению, я использую тот, который скачал около 6 месяцев назад. Я надеюсь, что это все еще работает.
У кого-нибудь есть прямая ссылка для загрузки файла cfg, который соответствует файлу веса (yolo.weights) из приведенной выше ссылки на Google Диск?
@shailensobhee Я перепробовал все возможные комбинации yolov2-voc cfg и файлов веса между репозиторием darkflow и darknet. Кажется, что единого совпадения нет.
@thtrieu @AlexeyAB Есть идеи?
вы можете решить эту проблему, изменив смещение в loader.py в вашем каталоге darkflow.
рекомендуется уменьшить смещение до 16, а затем снова проверить.
ГЛ
Водить машину
Вы получили ссылку? Если нет, вот что я использовал: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU .
Самый полезный комментарий
[ОБНОВИТЬ]
Кажется, что файлы PJ Reddie не полностью совместимы, поэтому мне нужно загрузить готовые веса по предоставленной ссылке в README: https://drive.google.com/drive/folders/0B1tW_VtY7onidEwyQ2FtQVplWEU .
Проблема заключалась в том, что я должен был сделать это на стороне сервера, поэтому, немного покопавшись, самым простым решением было использовать надстройку gcurl для Firefox, которая имитирует команду прямой загрузки:
Кстати, я не уверен, что эти ссылки будут работать вечно, после загрузки моя папка
bin/
выглядит так: