使用条件

会員登録を行い、ETLをDLする

binaryから画像にする
import struct
from PIL import Image, ImageEnhance
import glob, os
RECORD_SIZE = 2052
outdir = "ETL7-img/"
if not os.path.exists(outdir): os.mkdir(outdir)
files = glob.glob("ETL7/*")
fc = 0
for fname in files:
fc = fc + 1
print(fname)
f = open(fname, "rb")
f.seek(0)
i = 0
while True:
i = i + 1
s = f.read(RECORD_SIZE)
if not s: break
r = struct.unpack('>H2sH6BI4H4B4x2016s4x', s)
iF = Image.frombytes('F', (64, 63), r[18], 'bit', 4)
iP = iF.convert('L')
code_jis = r[3]
dir = outdir + "/" + str(code_jis)
if not os.path.exists(dir): os.mkdir(dir)
fn = "{0:02x}-{1:02x}{2:04x}.png".format(code_jis, r[0], r[2])
fullpath = dir + "/" + fn
enhancer = ImageEnhance.Brightness(iP)
iE = enhancer.enhance(16)
iE.save(fullpath, "PNG")
print("ok")
pickleの作成
import numpy as np
import cv2
import matplotlib.pyplot as plt
import glob
import pickle
out_dir = "./ETL7-img"
im_size = 32
save_file = out_dir + "/JapaneseHiragana.pickle"
plt.figure(figsize=(9, 17))
hiraganadir = list(range(177, 223+1))
hiraganadir.append(166)
result = []
for i, code in enumerate(hiraganadir):
img_dir = out_dir + "/" + str(code)
fs = glob.glob(img_dir + "/*")
print("dir=", img_dir)
for j, f in enumerate(fs):
img = cv2.imread(f)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.resize(img_gray, (im_size, im_size))
result.append([i, img])
if j == 3:
plt.subplot(11, 5, i + 1)
plt.axis("off")
plt.title(str(i))
plt.imshow(img, cmap="gray")
pickle.dump(result, open(save_file, "wb"))
plt.show
正解率 0.973809540271759 loss 0.09567940980195999

なんか出来てるっぽい






