xxxxxxxxxx
import warnings; warnings.filterwarnings('ignore')
import imageio,numpy as np,pandas as pd
import os,h5py,seaborn as sn,pylab as pl
from skimage.transform import resize
from IPython.display import HTML
def randintcoord(img_size_out,img_size=1024):
a=(.5+.1**6*np.random.randint(1,999999))*\
np.random.choice([-1,1],1)[0]
b=np.random.randint(3,10)
c=.1**3*np.random.randint(1,99)*\
np.random.choice([-1,1],1)[0]
t=np.arange(0,12*np.pi,1/(2880*b))
fx=np.sin(t/6)+a*np.sin(b*t)*np.cos(t)-\
c*np.sin(16*b*t)
fy=np.cos(t/6)+a*np.sin(b*t)*np.sin(t)-\
c*np.cos(16*b*t)
fx=.951*(fx-1.051*fx.min())/(fx.max()-fx.min())
fy=.951*(fy-1.051*fy.min())/(fy.max()-fy.min())
fx=np.array(np.clip(fx*img_size,0,img_size-1),dtype='int32')
fy=np.array(np.clip(fy*img_size,0,img_size-1),dtype='int32')
f=np.array([[fx[i],fy[i]] for i in range(len(t))])
img=np.ones((img_size,img_size,3))
randcol=.9-.8*np.random.random(3)
for [x,y] in f: img[y,x,:]=randcol
img=resize(img,(img_size_out,img_size_out))
return img,np.around(a,6),b,np.around(c,3),randcol
xxxxxxxxxx
img_size=256; num_images=10
images=np.zeros((num_images,img_size,img_size,3),dtype=np.float32)
labels=np.zeros((num_images,),dtype=np.int32)
targets=np.zeros((num_images,2),dtype=np.float32)
colors=np.zeros((num_images,3),dtype=np.float32)
for i in range(num_images):
print('=>',end='',flush=True)
img,a,b,c,col=randintcoord(img_size)
images[i,:,:,:]=img
labels[i],targets[i,0],targets[i,1]=b-3,a,c
colors[i,:]=col
h5f='ArtificialImages'+str(img_size)+'.h5'
with h5py.File(h5f,'w') as f:
f.create_dataset('images',data=images,compression='gzip')
f.create_dataset('labels',data=labels,compression='gzip')
f.create_dataset('targets',data=targets,compression='gzip')
f.create_dataset('colors',data=colors,compression='gzip')
f.close()
print('\nfile size: %s'%list(os.stat(h5f))[6])
xxxxxxxxxx
with h5py.File(h5f,'r') as f:
keys=list(f.keys()); print(keys)
images=np.array(f[keys[1]]); labels=np.array(f[keys[2]])
targets=np.array(f[keys[3]]); colors=np.array(f[keys[0]])
f.close()
fig=pl.figure(figsize=(6,2))
for i in range(2):
randi=np.random.randint(1,num_images,2)
ax=fig.add_subplot(1,2,i+1)
pl.imshow(images[randi[i]]); pl.axis('off')
ti=str([labels[randi[i]],list(targets[randi[i]])])
pl.title(ti,color=colors[randi[i]])
pl.tight_layout(); pl.show()
xxxxxxxxxx
def interpolate_hypersphere(v1,v2,steps):
v1norm=np.linalg.norm(v1); v2norm=np.linalg.norm(v2)
v2normalized=v2*(v1norm/v2norm)
vectors=[]
for step in range(1,steps+1):
interpolated=v1+(v2normalized-v1)*step/steps
interpolated_norm=np.linalg.norm(interpolated)
interpolated_normalized=interpolated*(v1norm/interpolated_norm)
vectors.append(interpolated_normalized)
return np.array(vectors)
steps=60; file_name='pic.gif'
imgs=np.vstack(
[interpolate_hypersphere(images[1],images[0],steps),
interpolate_hypersphere(images[0],images[1],steps)])
imageio.mimsave('pic.gif',imgs)
file_path='https://sagecell.sagemath.org/kernel/'
file_path+=os.getcwd()[14:]+'/files/'
s1='<div id="imgs"><img src="'
s2='" height="400" width="400"></img></div>'
HTML(s1+file_path+file_name+s2)
No comments:
Post a Comment