A deep learning model that can detect two common maize diseases from leaf images:
1import requests
2
3API_URL = "https://api-inference.huggingface.co/models/YOUR_USERNAME/maize-disease-detection"
4headers = {"Authorization": "Bearer YOUR_API_TOKEN"}
5
6def query(filename):
7 with open(filename, "rb") as f:
8 data = f.read()
9 response = requests.post(API_URL, headers=headers, data=data)
10 return response.json()
1// pages/api/predict.ts
2import type { NextApiRequest, NextApiResponse } from 'next'
3
4export default async function handler(
5 req: NextApiRequest,
6 res: NextApiResponse
7) {
8 if (req.method !== 'POST') {
9 return res.status(405).json({ message: 'Method not allowed' })
10 }
11
12 try {
13 const response = await fetch(
14 'https://api-inference.huggingface.co/models/YOUR_USERNAME/maize-disease-detection',
15 {
16 method: 'POST',
17 headers: {
18 'Authorization': `Bearer ${process.env.HUGGINGFACE_API_KEY}`,
19 'Content-Type': 'application/json',
20 },
21 body: JSON.stringify(req.body),
22 }
23 )
24
25 const data = await response.json()
26 res.status(200).json(data)
27 } catch (error) {
28 res.status(500).json({ message: 'Error processing request' })
29 }
30}
1// components/DiseaseDetector.tsx
2import { useState } from 'react'
3
4export default function DiseaseDetector() {
5 const [file, setFile] = useState<File | null>(null)
6 const [prediction, setPrediction] = useState<any>(null)
7
8 const handleSubmit = async (e: React.FormEvent) => {
9 e.preventDefault()
10 if (!file) return
11
12 const formData = new FormData()
13 formData.append('file', file)
14
15 try {
16 const response = await fetch('/api/predict', {
17 method: 'POST',
18 body: formData,
19 })
20 const data = await response.json()
21 setPrediction(data)
22 } catch (error) {
23 console.error('Error:', error)
24 }
25 }
26
27 return (
28 <div>
29 <form onSubmit={handleSubmit}>
30 <input
31 type="file"
32 accept="image/*"
33 onChange={(e) => setFile(e.target.files?.[0] || null)}
34 />
35 <button type="submit">Analyze</button>
36 </form>
37
38 {prediction && (
39 <div>
40 <h3>Results:</h3>
41 <pre>{JSON.stringify(prediction, null, 2)}</pre>
42 </div>
43 )}
44 </div>
45 )
46}