Detect and Monitor Pet Cataracts
AI 기반 앱은 반려동물의 백내장을 쉽게 감지하고 모니터링하는 데 도움이 됩니다. 조기 진단을 받고 상태의 진행 상황을 추적하세요.


YH
정 용훈
BE & AI Engineer, Team Leader
백엔드 개발과 AI 모델링의 주요 책임을 맡고 있습니다. 팀의 전반적인 기술 전략을 수립하고, 애플리케이션의 핵심 AI 기능을 설계 및 구현합니다.
HY
남 현원
BE & AI Engineer
데이터 전처리와 서버 아키텍처 최적화 작업을 주로 담당합니다. 안정적이고 확장 가능한 백엔드 시스템을 구축하여, 애플리케이션의 안정성을 보장합니다.
HS
김 혜성
FE & AI Engineer
사용자 인터페이스와 사용자 경험 설계를 주로 담당하는 프론트엔드 엔지니어입니다. UI 디자인과 프론트엔드 개발을 통해, 사용자에게 직관적이고 매끄러운 경험을 제공합니다.
SB
강 수빈
FE & AI Engineer
앱 기능 구현을 주로 담당하는 프론트엔드 엔지니어입니다. 사용자 친화적인 인터페이스를 설계하는 동시에, AI 기술을 접목하여 앱의 다양한 기능들을 효과적으로 구현하는 데 주력하고 있습니다.
Experience the App
AI Vet의 AI를 체험해보세요. (강아지 눈 사진을 넣어보세요!)
Drag & drop an image here, or click to select one
Explore Our Codebase
AI Vet의 핵심 Code를 확인해보세요.
# Model Code
def vit_inference(encoding_img : str) -> dict:
img = Image.open(io.BytesIO(base64.b64decode(encoding_img)))
data = np.array(img)
# Preprocessing code...
vit_model = vit.vit_b32(
image_size = 224,
activation = 'softmax',
pretrained = True,
include_top = False,
pretrained_top = False,
classes = 4)
model = tf.keras.Sequential([
vit_model,
tf.keras.layers.Flatten(),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dense(11, activation = tfa.activations.gelu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dense(4, 'softmax')
],
name = 'vision_transformer')
learning_rate = 1e-4
optimizer = tfa.optimizers.RectifiedAdam(learning_rate=learning_rate)
model.compile(optimizer = optimizer,
loss = tf.keras.losses.CategoricalCrossentropy(label_smoothing = 0.2),
metrics = ['accuracy'])
model_path = './models/weights/ViT.h5'
model.load_weights(model_path)
vit_result = vit_grad_cam(img, 0)
vit_result = Image.fromarray(vit_result)
buffer = io.BytesIO()
vit_result.save(buffer, format="PNG")
vit_encoding_img = base64.b64encode(buffer.getvalue()).decode('utf-8')
blurred = np.expand_dims(blurred, axis=0)
lime_image = blurred
blurred = np.reshape(blurred, (-1, 224, 224, 3))
predictions = model.predict(blurred)
predicted_class_num = int(np.argmax(predictions[0]))
confidence = float(np.max(predictions[0]))
classes = ['overripe', 'no', 'mature', 'incipient']
predicted_class = classes[predicted_class_num]
grayed_lime = lime_image[0]
lime_output = visualize_image(grayed_lime, model)