Witam mam wiele zdjęć (niższe miliony), które muszę zrobić klasyfikacji na. Używam Sparka i udało mi się przeczytać wszystkie obrazy w formacie (filename1, content1), (filename2, content2) ...
w dużym RDD.Spark przy użyciu PySpark odczytać obrazy
images = sc.wholeTextFiles("hdfs:///user/myuser/images/image/00*")
Jednak bardzo się pomyliłem, co zrobić z reprezentacją obrazu w Unicode.
Oto przykład jednego obrazu/pliku:
(u'hdfs://NameService/user/myuser/images/image/00product.jpg', u'\ufffd\ufffd\ufffd\ufffd\x00\x10JFIF\x00\x01\x01\x01\x00`\x00`\x00\x00\ufffd\ufffd\x01\x1eExif\x00\x00II*\x00\x08\x00\x00\x00\x08\x00\x12\x01\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00\x1a\x01\x05\x00\x01\x00\x00\x00n\x00\x00\x00\x1b\x01\x05\x00\x01\x00\x00\x00v\x00\x00\x00(\x01\x03\x00\x01\x00\x00\x00\x02\x00\x00\x001\x01\x02\x00\x0b\x00\x00\x00~\x00\x00\x002\x01\x02\x00\x14\x00\x00\x00\ufffd\x00\x00\x00\x13\x02\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00i\ufffd\x04\x00\x01\x00\x00\x00\ufffd\x00\x00\x00\x00\x00\x00\x00`\x00\x00\x00\x01\x00\x00\x00`\x00\x00\x00\x01\x00\x00\x00GIMP 2.8.2\x00\x002013:07:29 10:41:35\x00\x07\x00\x00\ufffd\x07\x00\x04\x00\x00\x000220\ufffd\ufffd\x02\x00\x04\x00\x00\x00407\x00\x00\ufffd\x07\x00\x04\x00\x00\x000100\x01\ufffd\x03\x00\x01\x00\x00\x00\ufffd\ufffd\x00\x00\x02\ufffd\x04\x00\x01\x00\x00\x00\x04\x04\x00\x00\x03\ufffd\x04\x00\x01\x00\x00\x00X\x01\x00\x00\x05\ufffd\x04\x00\x01\x00\x00\x00\ufffd\x00\x00\x00\x00\x00\x00\x00\x02\x00\x01\x00\x02\x00\x04\x00\x00\x00R98\x00\x02\x00\x07\x00\x04\x00\x00\x000100\x00\x00\x00\x00\ufffd\ufffd\x04_http://ns.adobe.com/xap/1.0/\x00<?xpacket begin=\'\ufeff\' id=\'W5M0MpCehiHzreSzNTczkc9d\'?>\n<x:xmpmeta xmlns:x=\'adobe:ns:meta/\'>\n<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>\n\n <rdf:Description xmlns:exif=\'http://ns.adobe.com/exif/1.0/\'>\n <exif:Orientation>Top-left</exif:Orientation>\n <exif:XResolution>96</exif:XResolution>\n <exif:YResolution>96</exif:YResolution>\n <exif:ResolutionUnit>Inch</exif:ResolutionUnit>\n <exif:Software>ACD Systems Digital Imaging</exif:Software>\n <exif:DateTime>2013:07:29 10:37:00</exif:DateTime>\n <exif:YCbCrPositioning>Centered</exif:YCbCrPositioning>\n <exif:ExifVersion>Exif Version 2.2</exif:ExifVersion>\n <exif:SubsecTime>407</exif:SubsecTime>\n <exif:FlashPixVersion>FlashPix Version 1.0</exif:FlashPixVersion>\n <exif:ColorSpace>Uncalibrated</exif:ColorSpace>\n
Patrząc bliżej, nie są w rzeczywistości niektóre postacie wyglądają jak metadanych jak
...
<x:xmpmeta xmlns:x=\'adobe:ns:meta/\'>\n<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>\n\n
<rdf:Description xmlns:exif=\'http://ns.adobe.com/exif/1.0/\'>\n
<exif:Orientation>Top-left</exif:Orientation>\n
<exif:XResolution>96</exif:XResolution>\n
<exif:YResolution>96</exif:YResolution>\n
...
moich poprzednich doświadczeń używał scipy pakietów i powiązane funkcje, takie jak "imread" ... a dane wejściowe to zazwyczaj nazwa pliku. Teraz naprawdę zgubiłem się, co oznacza ten Unicode i co mogę zrobić, aby przekształcić go w format, który znam.
Czy ktoś może podzielić się ze mną tym, jak mogę odczytać ten kod Unicode na obrazie scipy (ndarray)?
Ciekawe pytanie +1 –
Spróbuj mapować RDD za pomocą imread. Myślę, że to powinno zadziałać. Aby opracować: Nie jestem zaznajomiony z formatem JPEG, ale każdy obraz staje się plikiem i ma określony format, w którym używa się funkcji takich jak imread, aby uprościć manipulację skomplikowanymi schematami obrazu. – Dair
@Dair czytanie kodu źródłowego [imread] (https://github.com/scipy/scipy/blob/v0.16.0/scipy/misc/pilutil.py#L102), to naprawdę próbuje odczytać obraz za pomocą PIL.Image ze względu na nazwę pliku, wymuszenie odczytu unicode nie działa. –