diff --git a/app.db b/app.db index d07816c..7c78ae2 100644 Binary files a/app.db and b/app.db differ diff --git a/backend/app.go b/backend/app.go index 3e3dc6e..89a6a36 100644 --- a/backend/app.go +++ b/backend/app.go @@ -3,11 +3,11 @@ package backend import ( "bytes" "context" - "encoding/base64" "fmt" "math" "os" "path/filepath" + "strconv" "time" "github.com/disintegration/imaging" @@ -168,7 +168,7 @@ func (a *App) UploadImage(data []byte, filename string) Response { } ext := filepath.Ext(filename) - newFilename := fmt.Sprintf("%d%s", time.Now().UnixMilli(), ext) + newFilename := strconv.FormatInt(time.Now().UnixMilli(), 10) + ext filePath := filepath.Join(uploadsDir, newFilename) err = os.WriteFile(filePath, data, 0644) @@ -181,26 +181,6 @@ func (a *App) UploadImage(data []byte, filename string) Response { return Response{Code: 0, Message: "success", Data: newFilename} } -func (a *App) GetImage(filename string) Response { - filePath := filepath.Join(publicImagePath, filename) - - data, err := os.ReadFile(filePath) - if err != nil { - return Response{Code: 1, Message: "failed", Data: err.Error()} - } - - ext := filepath.Ext(filename) - mimeType := "image/jpeg" - if ext == ".png" { - mimeType = "image/png" - } - - base64Data := base64.StdEncoding.EncodeToString(data) - dataURL := "data:image/" + mimeType + ";base64," + base64Data - - return Response{Code: 0, Message: "success", Data: dataURL} -} - func (a *App) GetHistory(page int, pageSize int) Response { db, err := a.GormDB() if err != nil { @@ -230,10 +210,6 @@ func (a *App) Detect(filename string) Response { return Response{Code: 1, Message: err.Error()} } - /** - 这里调用模型 - **/ - filePath := filepath.Join(publicImagePath, filename) imgData, err := os.ReadFile(filePath) if err != nil { @@ -251,13 +227,6 @@ func (a *App) Detect(filename string) Response { return Response{Code: 1, Message: "model inference failed: " + err.Error()} } - println("confidence", confidence) - println("detectRet", detectRet) - - /** - 结束 - **/ - var breed Breed err = db.Table("breeds_test").Where("code = ?", detectRet).First(&breed).Error if err != nil { @@ -277,7 +246,7 @@ func (a *App) Detect(filename string) Response { Code: breed.Code, Name: breed.Name, Brief: breed.Brief, - ConfidenceLevel: 0.98, + ConfidenceLevel: confidence, } return Response{Code: 0, Message: "success", Data: detectData} diff --git a/backend/types.go b/backend/types.go index fefbcf8..f551309 100644 --- a/backend/types.go +++ b/backend/types.go @@ -50,6 +50,6 @@ type ( Code string `json:"code"` Name string `json:"name"` Brief string `json:"brief"` - ConfidenceLevel float32 `json:"confidence_level"` + ConfidenceLevel float64 `json:"confidence_level"` } ) diff --git a/core/test/test_onnx.py b/core/test/test_onnx.py index a54ed83..7b7193b 100644 --- a/core/test/test_onnx.py +++ b/core/test/test_onnx.py @@ -20,7 +20,7 @@ def test(): dataset_dir = os.path.join(core_dir, "dataset", mode, "test") # 【修改3】加载ONNX模型,替代原来的PyTorch模型加载 - session = ort.InferenceSession(os.path.join(model_dir, "resnet18_epoch_50_bak2.onnx"), providers=providers) + session = ort.InferenceSession(os.path.join(model_dir, "resnet_epoch_100.onnx"), providers=providers) # 获取输入名称(用于后续推理时指定输入) input_name = session.get_inputs()[0].name diff --git a/core/test/test_resnet.py b/core/test/test_resnet.py index 2a2b698..d2c8158 100644 --- a/core/test/test_resnet.py +++ b/core/test/test_resnet.py @@ -21,7 +21,7 @@ def test(): print("model_dir", model_dir) net = resnet() - net.load_state_dict(torch.load(os.path.join(model_dir, "resnet_epoch_50.pth"), weights_only=True)) + net.load_state_dict(torch.load(os.path.join(model_dir, "resnet_epoch_99.pth"), weights_only=True)) print("111") diff --git a/frontend/src/components/History.tsx b/frontend/src/components/History.tsx index 0700395..da5fced 100644 --- a/frontend/src/components/History.tsx +++ b/frontend/src/components/History.tsx @@ -1,7 +1,6 @@ import { useState, useEffect } from 'preact/hooks' import Pagination from './Pagination' import Modal from './Modal' -import ImagePreview from './ImagePreview' import { message } from '../utils/toast' import type { HistoryItem } from '../preact' @@ -22,6 +21,7 @@ const History = () => { const pageSize = 5 const [total, setTotal] = useState(50) const [historyList, setHistoryList] = useState([]) + const [currentItem, setCurrentItem] = useState() const [showDelete, setShowDelete] = useState(false) const [currentId, setCurrentId] = useState(null) const [showClear, setShowClear] = useState(false) @@ -49,6 +49,10 @@ const History = () => { fetchData(page) } + const handleShowItem = (item: HistoryItem) => setCurrentItem(item) + + const handleItemClose = () => setCurrentItem(undefined) + const handleShowDelete = (id: number) => { setCurrentId(id) setShowDelete(true) @@ -60,6 +64,7 @@ const History = () => { message.error('currentId为空') return } + // dfdfdf const result = await (window as any).go.backend.App.DeleteOneHistory(currentId) if (result.code === 0) { message.success('删除成功') @@ -104,7 +109,7 @@ const History = () => { {historyList.map((item: HistoryItem) =>
- + handleShowItem(item)} />
@@ -142,6 +147,9 @@ const History = () => {

确定要删除全部记录?

+ +

{currentItem?.brief || ''}

+
) } diff --git a/frontend/src/components/ImagePreview.tsx b/frontend/src/components/ImagePreview.tsx deleted file mode 100644 index 27ca69d..0000000 --- a/frontend/src/components/ImagePreview.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { useState, useEffect } from 'preact/hooks' - -interface Props { - filename: string - class?: string - id?: string -} - -const ImagePreview = ({ filename, ...props }: Props) => { - const [src, setSrc] = useState('') - - useEffect(() => { - const loadImage = async () => { - const result = await (window as any).go.backend.App.GetImage(filename) - if (result.code === 0) { - setSrc(result.data) - } - } - loadImage() - }, [filename]) - - if (!src) return
- - return -} - -export default ImagePreview diff --git a/frontend/src/components/Main.tsx b/frontend/src/components/Main.tsx index 93aa970..dda72bf 100644 --- a/frontend/src/components/Main.tsx +++ b/frontend/src/components/Main.tsx @@ -1,6 +1,5 @@ import { useState, useRef } from 'preact/hooks' import type { DetectResult } from '../preact' -import ImagePreview from './ImagePreview' import { message } from '../utils/toast' const Main = () => { @@ -65,6 +64,7 @@ const Main = () => { file.name ) if (result.code === 0) { + console.log("rrr", result) setFileSrc(result.data) setStep(1) } else if (result.code === 1) { @@ -97,7 +97,6 @@ const Main = () => { setDetectResult(result.data) setStep(3) } else if (result.code === 1) { - console.log("result.message", result.message) message.error(result.message) } }, 1000) @@ -109,6 +108,8 @@ const Main = () => { resetUpload() } + console.log("fff", fileSrc) + return (
@@ -134,7 +135,7 @@ const Main = () => { > {fileSrc.length > 0 && step == 1 ?
- + @@ -193,7 +194,7 @@ const Main = () => {

完成!

- +

{detectResult?.name}

diff --git a/frontend/src/components/Modal.tsx b/frontend/src/components/Modal.tsx index 2d91016..c0e6f2c 100644 --- a/frontend/src/components/Modal.tsx +++ b/frontend/src/components/Modal.tsx @@ -27,8 +27,8 @@ const Modal = ({ open, title, onClick, onClose, children }: ModalProps) => {
{children}
- - + + {onClick ? : null}
diff --git a/frontend/src/components/Pagination.tsx b/frontend/src/components/Pagination.tsx index 4accddb..302376f 100644 --- a/frontend/src/components/Pagination.tsx +++ b/frontend/src/components/Pagination.tsx @@ -1,7 +1,6 @@ import { useState, useEffect } from 'preact/hooks' import type { PaginationProps } from '../preact' - const Pagination = ({ total, onChange, diff --git a/frontend/src/styles/base.sass b/frontend/src/styles/base.sass index 114f334..773cfa0 100644 --- a/frontend/src/styles/base.sass +++ b/frontend/src/styles/base.sass @@ -199,7 +199,7 @@ a border-radius: 1.5rem border-width: 2px border-style: dashed - border-color: #e2e8f0 + border-color: #bdc3cb text-align: center cursor: pointer @@ -305,7 +305,6 @@ a display: flex align-items: center justify-content: center - // height: 2.25rem gap: 0.75rem margin: 0.5rem 0 1.5rem 0 @@ -474,12 +473,12 @@ a font-size: 0.875rem border-radius: 0.25rem - &:first-child + > button.close color: var(--text) border: 1px solid #c9c9c9 background-color: none - &:last-child + > button.confirm color: white background-color: var(--primary) diff --git a/frontend/wailsjs/go/backend/App.d.ts b/frontend/wailsjs/go/backend/App.d.ts index 2479777..0658577 100644 --- a/frontend/wailsjs/go/backend/App.d.ts +++ b/frontend/wailsjs/go/backend/App.d.ts @@ -11,8 +11,6 @@ export function Detect(arg1:string):Promise; export function GetHistory(arg1:number,arg2:number):Promise; -export function GetImage(arg1:string):Promise; - export function GormDB():Promise; export function UploadImage(arg1:Array,arg2:string):Promise; diff --git a/frontend/wailsjs/go/backend/App.js b/frontend/wailsjs/go/backend/App.js index 1c4e437..620bc9b 100644 --- a/frontend/wailsjs/go/backend/App.js +++ b/frontend/wailsjs/go/backend/App.js @@ -18,10 +18,6 @@ export function GetHistory(arg1, arg2) { return window['go']['backend']['App']['GetHistory'](arg1, arg2); } -export function GetImage(arg1) { - return window['go']['backend']['App']['GetImage'](arg1); -} - export function GormDB() { return window['go']['backend']['App']['GormDB'](); }